我正在尝试为立体视觉创建一个 3d 渲染器,并使用 Processing/Java 进行四重缓冲。我正在使用的硬件已经为此做好了准备,所以这不是问题。我在 jogl 1.0 中有一个用于 Processing 1.5 的 stereo.jar 库,但现在我必须使用 Processing 2.0 和 jogl 2.0,因此我必须调整该库。
Jogl 和 Processing 的源代码中的某些内容发生了变化,我很难弄清楚如何告诉 Processing 我想使用四重缓冲。
这是之前的代码:
public class Theatre extends PGraphicsOpenGL{
protected void allocate()
{
if (context == null)
{
// If OpenGL 2X or 4X smoothing is enabled, setup caps object for them
GLCapabilities capabilities = new GLCapabilities();
// Starting in release 0158, OpenGL smoothing is always enabled
if (!hints[DISABLE_OPENGL_2X_SMOOTH])
{
capabilities.setSampleBuffers(true);
capabilities.setNumSamples(2);
}
else if (hints[ENABLE_OPENGL_4X_SMOOTH])
{
capabilities.setSampleBuffers(true);
capabilities.setNumSamples(4);
}
capabilities.setStereo(true);
// get a rendering surface and a context for this canvas
GLDrawableFactory factory = GLDrawableFactory.getFactory();
drawable = factory.getGLDrawable(parent, capabilities, null);
context = drawable.createContext(null);
// need to get proper opengl context since will be needed below
gl = context.getGL();
// Flag defaults to be reset on the next trip into beginDraw().
settingsInited = false;
}
else
{
// The following three lines are a fix for Bug #1176
// http://dev.processing.org/bugs/show_bug.cgi?id=1176
context.destroy();
context = drawable.createContext(null);
gl = context.getGL();
reapplySettings();
}
}
}
这是旧图书馆的渲染器。为了使用它,我需要做 size(100, 100, "stereo.Theatre")。现在我正在尝试直接在我的处理草图中制作立体声。这是我正在尝试的:
PGraphicsOpenGL pg = ((PGraphicsOpenGL)g);
pgl = pg.beginPGL();
gl = pgl.gl;
glu = pg.pgl.glu;
gl2 = pgl.gl.getGL2();
GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities capabilities = new GLCapabilities(profile);
capabilities.setSampleBuffers(true);
capabilities.setNumSamples(4);
capabilities.setStereo(true);
GLDrawableFactory factory = GLDrawableFactory.getFactory(profile);
如果我继续,我应该做这样的事情:
drawable = factory.getGLDrawable(parent, capabilities, null);
但可绘制不再是一个领域,我找不到办法做到这一点。如何设置四重缓冲?
如果我试试这个:
gl2.glDrawBuffer(GL.GL_BACK_RIGHT);
它显然不起作用:/
谢谢。