gpt4 book ai didi

java - JOGL 双缓冲

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:52 25 4
gpt4 key购买 nike

在 JOGL (Java OpenGL) 中实现双缓冲的合格方法是什么?

我正在尝试通过以下代码来做到这一点:

...    

/** Creating canvas. */
GLCapabilities capabilities = new GLCapabilities();
capabilities.setDoubleBuffered(true);
GLCanvas canvas = new GLCanvas(capabilities);

...

/** Function display(…), which draws a white Rectangle on a black background. */
public void display(GLAutoDrawable drawable) {
drawable.swapBuffers();

gl = drawable.getGL();

gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

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

gl.glBegin(GL.GL_POLYGON);
gl.glVertex2f(-0.5f, -0.5f);
gl.glVertex2f(-0.5f, 0.5f);
gl.glVertex2f(0.5f, 0.5f);
gl.glVertex2f(0.5f, -0.5f);
gl.glEnd();
}

...

/** Other functions are empty. */

问题:

— 当我调整窗口大小时,我通常会出现闪烁。如我所见,我的双缓冲实现有一个错误。

— 我有疑问,我必须在哪里放置函数 swapBuffers — 在绘图之前还是之后(如许多消息来源所述)?如您所见,我在绘制矩形之前使用函数 swapBuffers (drawable.swapBuffers())。否则,调整大小后我会听到噪音。那么什么是合适的方法呢?

包含或省略 capabilities.setDoubleBuffered(true) 行不会产生任何影响。

最佳答案

如果您使用 GLCanvas,autoSwapBuffer 模式默认设置为 true,您不必手动调用 swapBuffers()。您的闪烁与双缓冲无关,而是将 sun.awt.noerasebackground 设置为 true。

关于java - JOGL 双缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com