투명 배경을 갖기 위해 내 GLCanvas를 작성해야합니다. 내가 받고 싶은 효과는 검은 배경이 아니라 JFrame 배경에서 회색이 될 것입니다. 내가 사용 capabilities.setBackgroundOpaque (거짓); 및 gl.glClearColor (0.0f, 0.0f, 0.0f, 0.0f); 하지만 작동하지 않습니다. 나는 같은 질문 (Jogl: How to make a transparent background on com.jogamp.opengl.swt.GLCanvas?)이 있었지만 그 HUD가 어떻게 작동하는지 이해하지 못한다. 게다가, 나는 단지 왜 metod capabilities.setBackgroundOpaque (false); 작동하지 않습니다.JOGL 투명 배경
여기에 오히려 모두 setOpaque (false)의 호출, JInternalFrame의에 넣어하는 GLJPanel를 사용하여 내 코드
public class JOGL implements GLEventListener {
private static final int FPS = 30;
@Override
public void display(GLAutoDrawable gLDrawable) {
GL2 gl = gLDrawable.getGL().getGL2();
// Clear the drawing area
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// Reset the current matrix to the "identity"
gl.glLoadIdentity();
// Move the "drawing cursor" around
gl.glTranslatef(-1.5f, 0.0f, -6.0f);
// Drawing Using Triangles
gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(1.0f, 0.0f, 0.0f); // Set the current drawing color to red
gl.glVertex3f(0.0f, 1.0f, 0.0f); // Top
gl.glColor3f(0.0f, 1.0f, 0.0f); // Set the current drawing color to green
gl.glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left
gl.glColor3f(0.0f, 0.0f, 1.0f); // Set the current drawing color to blue
gl.glVertex3f(1.0f, -1.0f, 0.0f); // Bottom Right
// Finished Drawing The Triangle
gl.glEnd();
gl.glFlush();
}
@Override
public void init(GLAutoDrawable glDrawable) {
GL2 gl = glDrawable.getGL().getGL2();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
@Override
public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height) {
}
@Override
public void dispose(GLAutoDrawable gLDrawable) {
}
public static void main(String[] args) {
GLCapabilities capabilities = new GLCapabilities(null);
capabilities.setBackgroundOpaque(false);
final GLCanvas canvas = new GLCanvas(capabilities);
final JFrame frame = new JFrame("JOGL - test obj loading");
frame.setLayout(null);
final FPSAnimator animator = new FPSAnimator(canvas, FPS);
canvas.addGLEventListener(new JOGL());
JPanel p = new JPanel();
frame.add(canvas);
frame.add(p);
p.setBackground(Color.red);
canvas.setBounds(0, 0, 1024, 768);
p.setBounds(0, 0, 100, 500);
frame.setSize(1040, 900);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
animator.stop();
frame.dispose();
System.exit(0);
}
});
frame.setVisible(true);
animator.start();
canvas.requestFocus();
}
}
이 게시물은 코드가 너무 짧기 때문에 자동으로 품질이 좋지 않음으로 표시됩니다. 문제 해결 방법을 설명하는 텍스트를 추가하여 확장 해 주시겠습니까? – gung
사실 새 소식은 거의 없습니다. 내 조언을 따랐을뿐입니다. http://stackoverflow.com/a/22280648/458157 – gouessej