0

Processing/Java を使用したクワッド バッファリングを使用してステレオ ビジョン用の 3D レンダラーを作成しようとしています。私が使用しているハードウェアはこれに対応しているので、問題はありません。Processing 1.5 で動作する jogl 1.0 の stereo.jar ライブラリがありましたが、現在は Processing 2.0 と jogl 2.0 を使用する必要があるため、ライブラリを調整する必要があります。

Jogl と Processing のソース コードでいくつかの変更が加えられており、Quad バッファリングを使用したいことを 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.Theater") を実行する必要がありました。今、Processing スケッチでステレオを直接実行しようとしています。これが私が試していることです:

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);

しかし、 drawable はもはやフィールドではなく、それを行う方法が見つかりません。クアッド バッファリングを設定するにはどうすればよいですか?

私がこれを試してみると:

gl2.glDrawBuffer(GL.GL_BACK_RIGHT);

それは明らかに機能しません:/

ありがとう。

4

0 に答える 0