問題タブ [qtopengl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rotation - OpenGL - Qt : 回転とスケーリングで不安定な翻訳
openGL で 2D テクスチャを変換、回転、およびスケーリングするプログラムを実装しました。これらの 3 つの変換は、それ自体ではうまく機能しますが、翻訳を他のものと一緒にスローすると、事態は奇妙になります。
スケーリングについては、スケールが 1.0 を超えると問題ないように見えますが、1.0 を下回るとテクスチャが画面からはみ出してしまいます。ローテーションについても同じ悲しい話です。角度が小さいときは特に問題はありませんが、20°以上になると両側がおかしくなります。
これが私のコードです。興味深い機能は最後にあります。
これが私の頂点シェーダーとフラグメントシェーダーです:
回答ありがとうございます。
c++ - Qt OpenGL - マウスドラッグによる回転
QtのドキュメントでHello GLの例を調べていました。
マウスドラッグでシーンを回転させるのに役立つコードがいくつかあります。
と
ドラッグの過程で x/y 座標の変化を計算しようとしていることがわかります。
しかし、彼らはそれをシーンの回転にどのようにマッピングしていますか? ドキュメントには、何が行われているのかについての説明がありません。
また、これらのマジックナンバーは8
どうですか?
c++ - QOpenGLWidget の resizeGL は glViewport を呼び出す場所ではありませんか?
新しい QOpenGLWidget クラスを試しています (これは QGLWidget クラスではないことに注意してください)。
三角形を描いています。クリップ空間で座標を受け取る単純な頂点シェーダーがあるため、行列や投影は関係ありません。-1, -1, 0, 1
頂点の 1 つには座標があり、別の頂点には座標があり1, 1, 0, 1
ます。
glViewport への呼び出しがまったくない場合、プログラムはresizeGLglViewport(0, 0, w, h);
関数を呼び出し ているかのようにレンダリングされますが、そうではありません。つまり、三角形の 2 つの頂点は、ウィンドウのサイズをどのように変更しても、ウィンドウの左下隅と右上隅に取り付けられます。
実際に関数に呼び出しを追加すると、明らかに無視されます-w/2、h/2、またはその他の値を渡すかどうかは関係ありません。レンダリングは、呼び出した場合とまったく同じです(たとえば、三角形がウィンドウの左下 4 分の 1 に表示されることを期待します)glViewport
resizeGL
glViewport(0, 0, w, h);
glViewport(0, 0, w/2, h/2);
関数を呼び出すとglViewport(0, 0, width()/2, height()/2)
、paingGL
レンダリングは期待どおりです。すべてがウィンドウの左下 4 分の 1 に描画されます。
そのため、glViewport は と の間のどこかでオーバーライドされているようresizeGL
ですpaintGL
。何が起こっていて、どうすれば修正できますか? 関数でビューポート変換を行う必要がありpaintGL
ますか?
ドキュメントに記載されている QGLWidget と QOpenGLWidgets の違いの 1 つは、後者が画面に直接ではなくフレームバッファにレンダリングされることです。これは説明の鍵を握ることができますか?
念のため、参照用に完全なコードを添付します。
//三角形.h
//triangle.cpp
//widget.h
//widget.cpp
//main.cpp
//頂点シェーダー
//フラグメントシェーダー
c++ - glLoadGen で QT5 を使用する
C++ で Windows 8.1 上の Qt5.4 を使用して 3D アプリケーションへのインターフェイスを作成しています。アプリケーションは、glLoadGen を使用して OpenGL 関数をロードしています。
問題はありません。glWidget と glLoadGen の両方を、gl.h を含める前に含める必要がありますが、どちらもある時点で gl.h を含めます。一見、両方を同時に使用しているファイルをコンパイルすることは不可能です。
一部のラッパーを使用すると、この問題を回避できる場合がありますが、そうしないことをお勧めします。この問題に対する明確な解決策はありますか?
opengl - Qt 5.5.1: -lGL が見つかりません
でGUIアプリケーションを開発しましたQt 5.3.1
。Qt Creator3.1.2 (based on Qt 5.3.1)
を使用して GUI アプリケーションをビルドしていますが、アプリケーションを正常にビルドおよびデプロイできます。
Qtクリエーターを更新したかったので、最新のものをインストールし、Qt Creator 3.5.1 (based on Qt 5.5.1)
この最新のqtクリエーターで既存のQT GUIアプリケーションを構築するために必要な変更を提供しました。すべてがうまくいき、最終的な実行可能ファイルを作成しようとしましたが、ビルドは次のエラー情報で終了しました:
オンラインで検索しようとしたところ、Mesa パッケージを更新するためのこの提案が見つかりました!. [その場合、同じアプリケーションが私の Qt クリエーター 3.1.2 で正常にビルドされたのはなぜですか。mesa パッケージを更新するための修正を試みる前に、いくつかの詳細を知りたいです。]
この問題を解決するためのヒントを教えてもらえますか? 前もって感謝します。
編集: Qt 5.3.1 で GUI アプリケーションをビルドすると、以下のライブラリが最終的な実行可能ファイルにリンクされます。
Qt 5.5.1 バージョンでビルドしたときと同じアプリケーションで、以下のライブラリが最終的な実行可能ファイルにリンクされています。
-lGLで問題を解決するには、@Kyrylo Polezhaievの提案に従ってmesaパッケージを更新する必要がありました
ここで欠落している部分があります:古いqtバージョン(5.3.1)のOpenGLパッケージは、最新のqtクリエーター5.5.1バージョン-lGLESv2 -lEGL -lGAL
と同等でしたか?-lGL