QT を使用して Unix で作業しており、OpenGL でレンダリングするビットマップ (QGLWidget または QGLPixelBuffer クラス) を作成しようとしています。カラー インデックス モードを使用する必要があるため、ビットマップを作成するときに、この qglformat を宣言します。
qglformat.setDirectRendering(true);
qglformat.setRgba(false); // COLOR INDEX MODE
qglformat.setDepth(true);
qglformat.setOverlay(false);
qglformat.setDepthBufferSize(16);
次に、ビットマップを作成します。
QGLウィジェット:
m_qglwiget = new QGLWidget(qglformat);
m_qglwiget->setGeometry(0,0,m_iW,m_iH);
QGLPixelBuffer:
m_pB = new QGLPixelBuffer(m_iW,m_iH,qglformat);
最初のケースでは、ウィジェットが作成されますが、それが有効かどうかを確認すると、関数 isValid() は「false」を返します。そして、実行はそのエラーで中止されます: QGLContext::makeCurrent(): Cannot make invalid context current. コンテキストも無効であるためです。
それ以外の場合、PixelBuffer は正しく作成されますが、インデックス カラー モードが RGB モードに自動的に変更されます。
同じプログラムが Windows を使用している同じコンピュータで実行されるため、グラフィック カードの問題ではありません。
カラー インデックス モードでレンダリングできるようにするために、ビットマップを正しく定義する方法を教えてください。