Jogl:如何在com.jogamp.opengl.swt.GLCanvas上创建透明背景?

时间:2012-10-28 06:05:37

标签: opengl swt transparent jogl blend

我搜索过&阅读多个关于openGL透明度的论坛,我发现了这段代码

gl.glEnable(GL2.GL_BLEND);
gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL2.GL_ALPHA_TEST);
gl.glAlphaFunc(GL2.GL_GREATER, 0.1f);
gl.glClearColor(0, 0, 0, 0);

有些人在init方法中编写了这段代码并得到了结果。我真的不知道混合了,但是我添加了这段代码而没有发生任何事情!

这里有任何错误或误解!?我怎么能这样做?

顺便说一句,我正在使用jogl 2.0

1 个答案:

答案 0 :(得分:-1)

通过优化GLJPanel,您可以通过以下方式制作透明的GLCapabilities

/** Creates an instance of a transparent GLJPanel. **/
public static final GLJPanel createTransparentPanel() {
    /* Instantiate a new set of GLCapabilities based upon the System's default parameters. */
    final GLCapabilities lGLCapabilities = new GLCapabilities(GLProfile.getDefault());
    /* Define that we don't wish for the background to be opaque. */
    lGLCapabilities.setBackgroundOpaque(false);
    /* Create a new GLJPanel based on these capabilities. */
    final GLJPanel lGLJPanel = new GLJPanel(lGLCapabilities);
    /* Disable opacity for the panel. */
    lGLJPanel.setOpaque(false);
    /* Return the panel. */
    return lGLJPanel;
}

然后可以将其添加到透明JFrame中。您可以通过调用:

为JFrame启用透明度
.setBackground(new Color(0,0,0,0));