2013-05-10 17 views
3

我跟着OpenGL的教程发现here问题提供的顶部答案this问题,但我的立方体拒绝呈现正面和背面,所有其他面呈现,同样的问题金字塔。这里是源代码:lwjgl中的我的多维数据集不能正确呈现

public void render(){ 
    GL11.glMatrixMode(GL11.GL_PROJECTION); 
    GL11.glLoadIdentity(); 
    GL11.glOrtho(0, Display.getDisplayMode().getWidth(), 0, Display.getDisplayMode().getHeight(), -1, 1); 
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_STENCIL_BUFFER_BIT); //clear screen 

    //Center square according to screen size 
    GL11.glPushMatrix(); 
    if(Display.wasResized()){ 
     MX = 0; //MX is mouse X position 
     MY = 0; //MY is mouse Y position 
    } 
    if((MX == 0 && MY ==0)){ 
     GL11.glTranslatef((Display.getWidth()/2), (Display.getHeight()/2), 0.0f); 
    }else{ 
     GL11.glTranslatef(MX+50, MY+50, 0.0f); 
    } 
    GL11.glRotatef(angle, 0.0f,1.0f,0.5f); //Angle is the angle of the quads rotation 
    GL11.glBegin(GL11.GL_QUADS); 

    GL11.glColor3f(0.0f,1.0f,0.0f); 
    GL11.glVertex3f(50.0f, 50f, -50f); 
    GL11.glVertex3f(-50.0f, 50f, -50f); 
    GL11.glVertex3f(-50.0f, 50f, 50f); 
    GL11.glVertex3f(50.0f, 50f, 50f); 

    GL11.glColor3f(0.0f,0.5f,0.0f); 
    GL11.glVertex3f(50.0f, -50f, 50f); 
    GL11.glVertex3f(-50.0f, -50f, 50f); 
    GL11.glVertex3f(-50.0f, -50f, -50f); 
    GL11.glVertex3f(50.0f, -50f, -50f); 

    GL11.glColor3f(1.0f,0.0f,0.0f); 
    GL11.glVertex3f(50.0f, 50f, 50f); 
    GL11.glVertex3f(-50.0f, 50f, 50f); 
    GL11.glVertex3f(-50.0f, -50f, 50f); 
    GL11.glVertex3f(50.0f, -50f, 50f); 

    GL11.glColor3f(1.0f,1.0f,0.0f); 
    GL11.glVertex3f(50.0f, -50f, -50f); 
    GL11.glVertex3f(-50.0f, -50f, -50f); 
    GL11.glVertex3f(-50.0f, 50f, -50f); 
    GL11.glVertex3f(50.0f, 50f, -50f); 

    GL11.glColor3f(0.0f,0.0f,1.0f); 
    GL11.glVertex3f(-50.0f, 50f, 50f); 
    GL11.glVertex3f(-50.0f, 50f, -50f); 
    GL11.glVertex3f(-50.0f, -50f, -50f); 
    GL11.glVertex3f(-50.0f, -50f, 50f); 

    GL11.glColor3f(1.0f,0.0f,1.0f); 
    GL11.glVertex3f(50.0f, 50f, -50f); 
    GL11.glVertex3f(50.0f, 50f, 50f); 
    GL11.glVertex3f(50.0f, -50f, 50f); 
    GL11.glVertex3f(50.0f, -50f, -50f); 

    GL11.glEnd(); 
    GL11.glPopMatrix(); 
} 
+0

我们能有一个屏幕截图。就这样我知道它不是深度剔除。你能看到立方体的边缘,你期望看到另一面吗?如果你旋转它会发生什么? (加入角度旋转呼叫) – Andrew 2013-05-10 02:52:53

回答

2

在我看来像它的深度问题。立方体的前面是关闭的视锥的正面和背面是越来越剪切掉。

GL11.glOrtho(0, Display.getDisplayMode().getWidth(), 0, Display.getDisplayMode().getHeight(), -1, 1); 

注意1(最后一个参数),过去的任何东西都会被剪掉。

你们看到的实际上是你的立方体这实在是伸出的部分。

+0

谢谢!我只需将Znear和Zfar设置为100,并且我的显示器可以完美地处理旋转的3D立方体!谢谢! – getynge 2013-05-10 03:05:55