2012-03-11 1 views
0

방금 ​​ JOGL을 공부하기 시작했으며 한 가지 문제가 있습니다.JOGL - 작동하지 않는 색상

다음은 두 가지 방법, 즉 GLEventListener의 간단한 구현입니다.

@Override 
public void init(GLDrawable glDrawable) { 

    GL gl = glDrawable.getGL(); 
    GLU glu = glDrawable.getGLU(); 

    gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 

    glu.gluOrtho2D(0.0, 600.0, 0.0, 500.0); 

} 

@Override 
public void display(GLDrawable glDrawable) { 

    GL gl = glDrawable.getGL(); 
    gl.glPointSize(100.0f); 

    gl.glColor3f(0.0f, 1.0f, 0.0f); 
    gl.glBegin(GL.GL_POINTS); 
    gl.glVertex2i(300, 250); 
    gl.glEnd(); 

    gl.glEnd(); 

} 

이렇게하면 JFrame 창에 구성 요소를 삽입하는 방법입니다.

package scribble; 

import net.java.games.jogl.GLCanvas; 
import net.java.games.jogl.GLCapabilities; 
import net.java.games.jogl.GLDrawableFactory; 
import javax.swing.*; 
import java.awt.*; 

public class ScribbleComponent extends JFrame { 

    public static void main(String[] args) { 
     ScribbleComponent component = new ScribbleComponent(); 
     ScribbleRunnable runnable = new ScribbleRunnable(component); 
     SwingUtilities.invokeLater(runnable); 
    } 

    public ScribbleComponent() { 
     super("Scribble"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     GLCapabilities glCapabilities = new GLCapabilities(); 
     GLCanvas glCanvas = GLDrawableFactory.getFactory().createGLCanvas(glCapabilities); 
     glCanvas.addGLEventListener(new ScribbleListener()); 
     getContentPane().add(glCanvas, BorderLayout.CENTER); 
     getContentPane().add(new JButton("Clear Screen"), BorderLayout.SOUTH); 
     setSize(600, 500); 
     ScribbleHelper.centerWindow(this); 
    } 

} 

는 ScribbleRunnable (성분) 컴포넌트 표시한다.

ScribbleHelper.centerWindow (this) JFrame 창의 가운데 정렬 만합니다.

흰색 배경에 녹색 사각형이 표시 될 것으로 예상됩니다.

첫 번째 컴퓨터에서는 올바르게 작동하지만 두 번째 컴퓨터에서는 검은 색 바탕에 진한 빨간색 사각형이 나타납니다. 항상 그런 일이 일어나고 다른 색상은 설정할 수 없습니다.

두 컴퓨터 모두 JDK 1.6 및 동일한 라이브러리를 사용하여 Windows 7을 실행합니다.

어디에서 문제가 될 수 있습니까?

답변

0

지속적으로 display() 메소드를 업데이트하려면 com.jogamp.opengl.util.FPSAnimator를 구현해야합니다. 그럼 한번보세요.

gl.glClear (GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT); 네가 깨끗하게 보이도록