【问题标题】:OpenGL rotating glRectf() function?OpenGL旋转glRectf()函数?
【发布时间】:2020-08-18 07:16:14
【问题描述】:

我正在做一个我的家庭作业项目。我需要旋转汽车(不完全是,但就像汽车一样,我认为这并不重要)。我的车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。当我说“我不能把它变成二维的”时,我的意思是我没有得到这段代码的算法和逻辑。这是 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;
    }

我需要一辆车(比如 30x30 像素的二维四边形),我需要将它在 y 轴上转动 180 度。我想像编写我的第一个代码一样创建它。

【问题讨论】:

  • 我没有看到你在使用glRotate。在glEnd之前使用它
  • 再看一遍,已经有glRotatef(rotate_y, 0.0, 1.0, 0.0);码了。

标签: c++ opengl rotation glut


【解决方案1】:

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

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();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多