OpenGL 旋转 glRectf() 函数?

OpenGL rotating glRectf() function?

我正在做一个项目,这是我的作业。我需要旋转汽车(不完全是,但就像汽车一样,我认为这并不重要)。我的车 2d。我用 glReactf() 创建它;功能。因为我可以用这个函数逐个像素地创建一个矩形。喜欢;


// Create a rectangle (0,0) to (30,30) :) Like a square, yeap :) I use it.
// Because I am working on a lot of rectangles and you know, squares are rectangles in math :)

    glRectf(0, 0, 30, 30);

但是我有密码。它有效,但它是 3d。我不能把它变成 2d。你能帮助我吗?这并不重要,我正在研究 2d。虽然我说 "I can't turn it 2d" 我的意思是我没有得到这段代码的算法和逻辑。这是 3d 四边形代码,我可以用 rotatef() 函数旋转它;


#include <stdio.h>
#include <GL/glut.h>

double rotate_y = 0;


void display() {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glLoadIdentity();
glRotatef(rotate_y, 0.0, 1.0, 0.0);

    glBegin(GL_POLYGON);
    glColor3f(1.0, 1.0, 1.0);
    glVertex3f(0.5, -0.5, 0.5);

    glColor3f(1.0, 1.0, 0.0);
    glVertex3f(0.5, 0.5, 0.5);

    glColor3f(1.0, 0.0, 1.0);
    glVertex3f(-0.5, 0.5, 0.5);

    glColor3f(1.0, 1.0, 1.0);
    glVertex3f(-0.5, -0.5, 0.5);

    glEnd();
glFlush();
glutSwapBuffers();
}



void keyboard(int key, int x, int y) {
    if (key == GLUT_KEY_RIGHT) {rotate_y += 45;}
    else if (key == GLUT_KEY_LEFT) {rotate_y -= 45;}
glutPostRedisplay();
}



int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
        glutInitWindowPosition(0, 0);
        glutInitWindowSize(800, 800);
glutCreateWindow("Rotating Test");
glutDisplayFunc(display);
glutSpecialFunc(keyboard);
glutMainLoop();
return 0;
    }

我需要一辆车(比如 30x30 px quad in 2d)并且我需要将它在 y 轴上旋转 180 度。我想创建它就像写我的第一个代码一样。

我解决了,我是怎么做到的我不知道,我是认真的但是完成了。这是我的显示功能;

void display() {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        glRotatef(rotate_y, 0.0, 1.0, 0.0);
        glColor3f(1.0, 1.0, 1.0);
        glRectf(1, 1, 11, 11);
        glFlush();
        glutSwapBuffers();
    }