float carX = 0.0;
float carY = 0.0;
float carSpeed = 1.0;
float direction = 0.0;
bool exhaust;
void reshape(void)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 10.0, 0, 10.0, 0.0, 10.0);
glMatrixMode(GL_MODELVIEW);
}
void keys(int key, int x, int y){
if(key == GLUT_KEY_UP){
carY = carY + carSpeed;
direction = 0.0;
glutPostRedisplay();
}
if(key == GLUT_KEY_DOWN){
carY = carY - carSpeed;
direction = 90.0;
glutPostRedisplay();
}
if(key == GLUT_KEY_LEFT){
carX = carX - carSpeed;
direction = -90.0;
glutPostRedisplay();
}
if(key == GLUT_KEY_RIGHT){
carX = carX + carSpeed;
direction = 180.0;
glutPostRedisplay();
}}
void renderScene(void){
glClear (GL_COLOR_BUFFER_BIT);
glLoadIdentity();
drawPlayground();
glPushMatrix();
glRotatef(direction, 0.0, 0.0, 1.0);
glTranslatef(carX, carY,0.0);
drawcar();
glPopMatrix();
glFlush();}
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (400, 400);
glutInitWindowPosition (100, 100);
glutCreateWindow("courseWork_2DGame");
reshape();
glutDisplayFunc(renderScene);
glutSpecialFunc(keys);
glutMainLoop();
return 0;}
這是我的openGL代碼,我已經畫出了汽車移動的地方。汽車將被移動,但箭頭,並且當它移動的方向是汽車按照箭頭鍵的旋轉。然而,當按鍵時,汽車翻譯得很好,但旋轉不正確,我認爲,因爲它不是在中心而是在不同的點上旋轉。如何在其中心旋轉2d對象