【发布时间】:2016-01-06 20:42:03
【问题描述】:
我正在尝试绘制一个 3D 立方体并旋转它。 它绘制并且旋转正常,但是当立方体的一条线(它不是填充的立方体)旋转靠近相机时,它会慢慢消失,当它远离相机旋转时,它会再次缓慢绘制。
我试过这样将相机设置得更远:
glTranslatef(0.0f, 0.0f, -5.0f);
但它不起作用,窗口上没有显示任何内容。
这是我的渲染函数:
void drawCube() {
glPushMatrix();
glRotatef(angle, 1, 1, 1);
glColor3f(0.0f, 0.0f, 0.0f);
glBegin(GL_LINE_LOOP);
glVertex3f(-0.5f,-0.5f,0.0f);
glVertex3f(0.5f, -0.5f, 0.0f); //Platform front
glVertex3f(0.5f, 0.5f, 0.0f);
glVertex3f(-0.5f, 0.5f, 0.0f);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f(-0.5f, -0.5f, 1.0f);
glVertex3f(0.5f, -0.5f, 1.0f); //Platform in the back
glVertex3f(0.5f, 0.5f, 1.0f);
glVertex3f(-0.5f, 0.5f, 1.0f);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f(-0.5f, -0.5f, 0.0f);
glVertex3f(-0.5f, -0.5f, 1.0f);
glVertex3f(-0.5f, 0.5f, 1.0f);
glVertex3f(-0.5f, 0.5f, 0.0f);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex3f(0.5f, -0.5f, 0.0f);
glVertex3f(0.5f, -0.5f, 1.0f);
glVertex3f(0.5f, 0.5f, 1.0f);
glVertex3f(0.5f, 0.5f, 0.0f);
glEnd();
angle += 0.005f;
glPopMatrix();
}
void draw() {
//CLEARING THE SCREEN AND LOAD IDENTITY MATRIX FOR NEW DRAWINGS
glViewport(0, 0, 800, 600);
glClearColor(1.0f, 0.0f, 0.0f, 1.0f); //BACKGROUND COLOR
glClear(GL_COLOR_BUFFER_BIT); //CLEAR THE SCREEN
glLoadIdentity(); //RESET DRAWING LOCATIONS
glTranslatef(0.0f, 0.0f, -5.0f);
drawCube();
SDL_GL_SwapWindow(window.getWin()); //RENDER EVERYTHING TO THE SCREEN
}
有谁知道导致消失的原因是什么? 提前致谢。
【问题讨论】:
-
你按什么顺序推送矩阵?您是否尝试在旋转之前推动平移?
-
你在哪里设置你的投影矩阵?
-
@genpfault 我猜无处可去。我是openGL的新手。我必须在哪里设置哪个矩阵?