0
我必須使用opengl(舊版本)製作一些3D圖形。我創建了3 GL_POLYGON
矩形,它們相互連接並且具有不同的顏色。在opengl底部重疊直線和裁剪
我的問題是,當圖旋轉時,最後添加的顏色(最後添加的矩形)始終高於其他顏色。例如,青色的是粉紅色和黃色的,粉紅色的是黃色的。我還注意到在圖的底部有一些裁剪,我認爲這是由gluPerspective()
造成的。我試圖實現的目光是從z +到中心以及圍繞y +軸旋轉的圖形(我認爲我設法做到這一點),並且還刪除了重疊和剪輯。
任何想法爲什麼發生這種情況,以及如何解決它?
的代碼波紋管:
#include <GL/glfw.h>
int main()
{
int width, height;
int frame = 0;
bool running = true;
glfwInit();
if(!glfwOpenWindow(700, 800, 0, 0, 0, 0, 0, 0, GLFW_WINDOW))
{
glfwTerminate();
return 0;
}
glfwSetWindowTitle("GLFW Application");
while(running)
{
frame++;
glfwGetWindowSize(&width, &height);
height = height > 0 ? height : 1;
glViewport(0, 0, width, height);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0f, 0.0f, 40.0f,
0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f);
glRotatef(frame, 0.0f, 1.0f, 0.0f);
glColor3ub(255,255,0);
glBegin(GL_POLYGON);
glVertex3f(5.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 10.0f, 0.0f);
glVertex3f(5.0f, 10.0f, 0.0f);
glEnd();
glColor3ub(255,0,255);
glBegin(GL_POLYGON);
glVertex3f(5.0f, 0.0f, -2.0f);
glVertex3f(0.0f, 0.0f, -2.0f);
glVertex3f(0.0f, 10.0f, -2.0f);
glVertex3f(5.0f, 10.0f, -2.0f);
glEnd();
glColor3ub(0,255,255);
glBegin(GL_POLYGON);
glVertex3f(5.0f, 0.0f, 0.0f);
glVertex3f(5.0f, 0.0f, -2.0f);
glVertex3f(5.0f, 10.0f, -2.0f);
glVertex3f(5.0f, 10.0f, 0.0f);
glEnd();
glfwSwapBuffers();
running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);}
glfwTerminate();
return 0;
}
0/10和潛入一點文件... – 2014-11-04 19:47:35
@jp我試過文件,我只是無法將我的頭圍繞所有的東西。如果沒有先看看這些東西,我就不會尋求幫助。 – ama 2014-11-04 19:50:03
我沒有在你的代碼中看到深度特徵,嘗試尋找'深度緩衝區'和'GL_DEPTH_TEST',如果沒有實施,繪製順序規則... – 2014-11-04 20:42:33