저는 며칠 동안 JOGL을 사용해 왔으며 이제는 주요 도로 블록이되고 있습니다. 올바른 z- 순서로 그리는 도형을 얻을 수 없으며 OpenGL에 주어진 순서대로 그려집니다.JOGL 깊이 버퍼링이 작동하지 않습니다.
것은 내가 두 번이
- 당신의 절두체가 정확한지 확인하십시오 내가이 일반 해상도 (내 반응을) 연구의 마지막 몇 시간을 보냈습니다
다음과 같은 것 같다 절두체를 확인했는데 정확하다고 보겠습니다.
- 사용자가 만든 절두체 대신 gluLookAt로 바 꾸었습니다.
- 나는 단지 glOth로 전환했습니다. 그것이 문제라는 관점이 아니라는 것을 확신하십시오.
- 이 난 대신 기본을 것으로 보인다 -1, 1 개 범위에서 작업, 전혀보기를 설정하지 않은
- 당신의 절두체가 정확한지 확인하십시오 내가이 일반 해상도 (내 반응을) 연구의 마지막 몇 시간을 보냈습니다
다음 호출이 초기화에 있는지 확인 :
- gl.glEnable (GL.GL_DEPTH_TEST);
- gl.glDepthFunc (GL.GL_LEQUAL);
각에 깊이 버퍼
- gl.glClear 다시 그리기 삭제되어 있는지 확인합니다 (GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT을);
나는이 문제가 발생하는 위치를 아래 프로그램의 아주 기본적인 샘플을 제공하고 있습니다. JOGL을 실행하면 Z- 위치 -0.5f에 빨간색 삼각형이 항상 표시되며, 삼각형이 서로를 중심으로 회전합니다. 두 개의 삼각형 버텍스 호출을 바꾸면 녹색 삼각형이 항상 맨 위에 표시됩니다.
이것은 나에게 엄청난 두통이었습니다. 그래서 어떤 통찰력이든 JOGL이나 OpenGL에서 일반적으로 도움이 될 것입니다. 그러나 나는 틀린 것을 보지 못합니다.
간결하게하기 위해 창을 파괴하기위한 적절한 코드를 제거했습니다.
import java.awt.Frame;
import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.awt.GLCanvas;
import javax.media.opengl.glu.GLU;
import com.jogamp.opengl.util.Animator;
public class JOGLTest implements GLEventListener
{
static GLU glu = new GLU();
static GLCanvas canvas = new GLCanvas();
static Frame frame = new Frame("JOGL test");
static Animator animator = new Animator(canvas);
float rot = 0.0f;
public void display(GLAutoDrawable glDrawable)
{
final GL2 gl = glDrawable.getGL().getGL2();
rot++;
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glRotatef(rot, 0.0f, 1.0f, 0.0f);
gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(0.0f, 1.0f, 0.0f);
gl.glVertex3f(-1.0f, -1.0f, 0.0f);
gl.glVertex3f(1.0f, -1.0f, 0.0f);
gl.glColor3f(1.0f, 0.0f, 0.0f);
gl.glVertex3f(-1.0f, 1.0f, -0.5f);
gl.glVertex3f(1.0f, 1.0f, -0.5f);
gl.glVertex3f(0.0f, 0.0f, -0.5f);
gl.glEnd();
}
public void dispose(GLAutoDrawable arg0)
{
}
public void init(GLAutoDrawable glDrawable)
{
GL2 gl = glDrawable.getGL().getGL2();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClearDepth(1.0f);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glDepthFunc(GL.GL_LEQUAL);
}
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3,
int arg4)
{
}
public static void main(String[] args)
{
canvas.addGLEventListener(new JOGLTest());
frame.add(canvas);
frame.setSize(640, 480);
frame.setVisible(true);
animator.start();
canvas.requestFocus();
}
}
정확히 동일한 OpenGL 코드를 OpenGL을 사용하는 Windows 응용 프로그램은 정상적으로 작동합니다.이것은 내가 자바 윈도우 잉에 대한 설정이나 내가 가지고있는 JOGL의 빌드에 문제가 있다고 생각하게한다. 어떤 입력? –