2012-06-25 5 views
2

GL_QUADS를 GL_TRIANGLES로 전환하고 마지막 점을 제거하면 삼각형이 잘 렌더링됩니다. 그러나 다시 GL_QUADS로 변경하고 다른 점을 추가하면 검은 화면이 나타납니다. 그래서 내가 뭘하니?LWJGL에서 쿼드 드로잉을 잘못 했습니까?

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 
import org.lwjgl.opengl.GL11; 
import org.lwjgl.util.glu.GLU; 

public class Main { 
public Main() { 
    this.start(); 
} 

private void start() { 
    try { 
     Display.setDisplayMode(new DisplayMode(640,640)); 
     Display.setTitle("FPSTest"); 
     Display.create(); 
    } catch (LWJGLException e) { 
     e.printStackTrace(); 
    } 
    GL11.glMatrixMode(GL11.GL_PROJECTION); 
    GL11.glLoadIdentity(); 
    GL11.glOrtho(-10, 10, -10, 10, -1000, 1000); 
    GL11.glMatrixMode(GL11.GL_MODELVIEW); 
    while (!Display.isCloseRequested()) { 
     GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT|GL11.GL_COLOR_BUFFER_BIT); 
     GL11.glRotatef(0, 1, 1, 1); 
     GL11.glBegin(GL11.GL_QUADS); 
//   GL11.glBegin(GL11.GL_TRIANGLES); 
     { 
      GL11.glColor3f(1.0f, 0.0f, 0.0f); 
      GL11.glVertex3f(0.0f, 3.0f, 0.0f); 
      GL11.glColor3f(0.0f, 1.0f, 0.0f); 
      GL11.glVertex3f(0.0f, 0.0f, -3.0f); 
      GL11.glColor3f(0.0f, 0.0f, 1.0f); 
      GL11.glVertex3f(3.0f, 0.0f, 0.0f); 
      GL11.glColor3f(0.0f, 1.0f, 0.0f); 
      GL11.glVertex3f(0.0f, 0.0f, 3.0f); 
     } 
     GL11.glEnd(); 
     GL11.glLoadIdentity(); 
     Display.update(); 
    } 

    Display.destroy(); 
} 

public static void main(String[] argv) { 
    new Main(); 
} 

} 

답변

1

쿼드의 버텍스는 동일 평면에 있어야합니다. 지정한 네 꼭지점이 아니며 this에 따라이 경우 결과가 정의되지 않습니다 (빈 화면의 원인 일 수 있음).

다음은 비행기 방정식을 찾는 데 도움이되는 tool이므로 동일 평면상의 4 번째 점을 선택할 수 있습니다. 첫 3 점 식 -9x -9y +9z + 27 = 0 형성하므로 적절한 포인트의 일 예이다 :

GL11.glVertex3f(2.0f, 2.0f, 1.0f); 
+0

Pffft을 , 신경 쓰지 마. – striking

+0

[ "Coplanar"] (http://en.wikipedia.org/wiki/Coplanarity)는 모든 점이 같은 평면에 있어야 함을 의미합니다. – mgibsonbr

+0

고마워, 나는 그것을 잊었다. 나는 아직도 그것이 어느 점인지에 관해 명확히하지 않고있다. – striking

2

mgibsonbr 언급 한 바와 같이, 정점 비 동일 평면이다. 그는 당신을 도울 수있는 좋은 도구를 게시했습니다.

이 정보는 도움이 될 수도 있습니다.

구성 요소가있는 4 개의 꼭지점 인 경우; 1 < = N < = 4는 행렬의 행렬식은 동일 평면 :

|x1 y1 z1 1| 
|x2 y2 z2 1| 
|x3 y3 z3 1| 
|x4 y4 z4 1| 

될 것이다 0

+0

아, 알겠습니다. 고맙습니다. – striking

0

또한의 glBegin (GL_TRIANGLE_STRIP) 모든 삼각형 동일 평면 사용)

관련 문제