我搜索过&阅读多个关于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
。
答案 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
中。您可以通过调用:
.setBackground(new Color(0,0,0,0));