3
私はQGLWidgetから継承するクラスを書いている:beginNativePainting()内でテクスチャを反転させる方法は?
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()
の間で実行され、これは正常に動作します。
問題は、画像が反転して表示されていることです(垂直方向)。これを修正する必要があります。私はこれへの道を見つけていないので、誰かがこの問題について私を助けてくれることを願っています。
私は単純にフリップを行うには、このようなglFrustum()
を呼び出すことができますネイティブのGLUTアプリケーションで :
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()
を呼び出して試してみました私が得るのは黒い画面です(これは期待どおりに機能しなかったことを意味します)。 ヒント?
の方法をQImage
とすると、反転しても画像の表示に影響はありませんでした。
@karlphillip:テクスチャを描画するコードを私に与えない限り、できます。それはこれに依存します。 – datenwolf
よろしくお願いいたします。今私は何をしなければならないか分かっています。私はちょうどそれをテストし、それは働いた。 – karlphillip