【问题标题】:OpenGL C++ line disappearing when it rotates close to the cameraOpenGL C++线在靠近相机旋转时消失
【发布时间】: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的新手。我必须在哪里设置哪个矩阵?

标签: opengl camera rotation


【解决方案1】:

我最好的问题是你的对象被裁剪在相机的裁剪平面附近。这是正常的效果,它工作正常。您应该尝试更改相机属性并观察变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多