QGLWidgetから継承するクラスを書いています:
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
GLWidget(QWidget *parent = 0);
~GLWidget();
void paintEvent(QPaintEvent *event);
private:
QImage* _frame;
};
のコンストラクターはGLWidget
、ディスクからイメージをロードし、との間でpaintEvent()
実行されるネイティブOpenGL呼び出しを使用してデータをGPUに送信する役割を果たします。これは、正常に機能します。beginNativePainting()
endNativePainting()
問題は、画像が(垂直に)反転して表示されていることです。これを修正する必要があります。私はこれへの道を見つけていないので、誰かがこの問題について私を助けてくれることを願っています。
ネイティブのGlutアプリケーションではglFrustum()
、次のように呼び出すだけでフリップを実行できます。
static void Reshape( int width, int height )
{
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glFrustum( -1.0, 1.0, 1.0, -1.0, 10.0, 100.0 ); // flip vertically
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glTranslatef( 0.0, 0.0, -15.0 );
}
しかし、の後に投影行列をロードして、上記の呼び出しと同じ値で呼び出してみましbeginNativePainting()
たglFrustum()
が、表示されるのは黒い画面だけです(つまり、期待どおりに機能しませんでした)。
任意のヒント?
また、フリッピングを行うmirrowed(false, true)
方法を使用QImage
しても、画像の表示には何の効果もありませんでした。