私は(翻訳、回転、翻訳)しましたが、原点を中心に回転します。私がしたのは、rキーを押すとトリックが始まります(翻訳、回転、翻訳)。その結果、それはまだあなたが行われ、最後の変換が頂点に適用される最初のものですので、あなたのglTranslate
呼び出しの順序を切り替える必要があり OpenGL、点を中心とした回転は原点の周りではまだ機能しません
#include <gl/glut.h>
void OnKeyPress(unsigned char key, int x, int y)
{
if (key == 27)
exit(0);
switch(key)
{
case 'r':
case 'R':
// trick start here *********************
glTranslatef(-60,-20,0);
glRotatef(10, 0, 0, 1);
glTranslatef(60, 20, 0);
glutPostRedisplay();
break;
};
}
void OnDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f,0.5f,1.0f);
glBegin(GL_TRIANGLES);
glVertex2f(20, 20);
glVertex2f(60, 20);
glVertex2f(20, 100);
glEnd();
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800, 600);
glutCreateWindow("OpenGL Lab1");
glutDisplayFunc(OnDisplay);
glutKeyboardFunc(OnKeyPress);
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-100, 100, -100, 100);
glutMainLoop();
return 0;
}
結果は何を使って初期化機能を仕上げてみ?また、副作用として 'gluLookAt'を見てください。 – jli
結果はまだ原点を中心に回転しています – YoungSalafi
@YoungSalafi質問を破棄しないでください。私はそれをロールバックした。あなたは答えを正しいものとしてマークしました。それは十分に示すべきである。 – Bart