OpenGL旋转glRectf()函数?

问题描述 投票:0回答:1

我正在做一个我要写作业的项目。我需要旋转汽车(不完全是汽车,但我认为这并不重要)。我的车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。当我说“我无法将其转换为2d”时,我的意思是我没有在此代码上获得算法和逻辑。这是3d Quads代码,我可以使用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;
    }

我需要一辆汽车(例如2d中的30x30 px quad),我需要将其在y轴上旋转180度。我想像编写第一个代码一样创建它。

c++ opengl rotation glut
1个回答
0
投票

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

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();
    }
© www.soinside.com 2019 - 2024. All rights reserved.