これは単純なはずです。QGLWidgetを使用してopenGLグラフィックを描画し、レンダリングされたopenGLグラフィックに何かを書きたいので、QPainterを使用したQtデモのようにオーバーペイントを使用しています。
これが私のプログラムを構築するための私の2つの実用的な選択肢です:
// This works but it's probably stupid
paintEvent()
{
makeCurrent();
glewInit();
loadShaders();
loadTextures();
loadBuffers();
... actually paint something with openGL ...
QPainter painter(this);
... overpainting ...
}
------------------------------------------------------------------------------------
// This works and may probably be better
paintEvent()
{
QGLWidget::paintEvent(event); // Base class call, this calls initializeGL ONCE and then paintGL each time it's needed
QPainter painter(this);
... overpainting ...
}
initializeGL()
{
glewInit();
}
paintGL()
{
loadShaders();
loadTextures();
loadBuffers();
... actually paint something with openGL ...
}
テクスチャとシェーダーが常に同じになるとは限らないことを考えると、これらのオプションのいずれかが(パフォーマンスと合理的に)受け入れられますか?
そうでない場合:プログラムをどのように構成しますか?
助けてくれてありがとう