問題タブ [qglwidget]
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.
qt - MainWindow の QCheckBox と QPushButton で QGLWidget にフォーカスを維持する
QCheckBoxとQPushButtonを備えたQtメインウィンドウと、グラフィックレンダリング用のサブQGLwidgetクラスウィジェットがあります。
void Ui_MainWindow::setupUi(QMainWindow *MainWindow)
私はメンバー関数に入れました:
のグラフィック レンダリングを変更する信号を作成しましたwidget_2
。
またはwidget_2
をクリックしても常にフォーカスを維持するには、 andに配置する必要があります。pushButton_2
checkBox_3
pauseSimu()
hideClassic()
と
主要なイベントwidget_2 GLWidget
は、GLWidget クラス メンバー関数でコーディングされます。
常にGLWidgetsetFocus()
に焦点を当てるために、すべてのシグナル関数で使用しないようにするにはどうすればよいですか?widget_2
qt - QtOpenGL-マウスドラッグによる回転-負のデルタ
QGLWidgetのGLWdigetサブクラスがあり、Ox軸とOy軸に沿って3Dオブジェクトを回転させたいと考えています。
このために、私はこのように再実装mousePressEvent
してmouseMoveEvent
機能しました:
私の問題は、dx
それdy
が負になることは決してないので、マウスをどの方向に向けても、常に同じ方向に回転しているということです。
たとえば、水平方向に右にドラッグする場合、オブジェクトを0y軸に沿って正の角度で回転させ、水平方向に左にドラッグする場合、負の角度にします。
これは垂直ドラッグの場合も同じですが、回転はOx軸に沿って行われます。
この問題はグローバル座標に起因していますか?ただし、event->x
GLWidgetevent->y
を基準にした位置を指定します。
opengl - QGLWidget の gl_lines と gl_clear
QGLWidget の描画で問題が発生しました。ウィジェットにはいくつかのクワッドがあり、いくつかのキーを押すと動き回ることができます。四角形を描くだけですべてうまくいきますが、次を使用していくつかの線を追加したいと思います。
描画も正常に機能しますが、glwidget のクリアは機能しなくなりました。私がこれまでに描いたものすべてを見ることを意味します。言及するだけです。同じ初期化を使用してGLUTで同じことを試してみましたが、うまくいきましたが、Qtに切り替えたので、もううまくいきません。paintGL()、resizeGL()、initializeGL() は以下のとおりです。
}
}
}
何か案は?
c++ - 複数の QGLWidget と gluUnProject
2 つの QGLWidget を含む QMainWindow があります。ウィジェットはデフォルトのコンストラクターを使用し、コンテキストを共有しません。ウィジェットはどちらも 2 次元データを表示し、クリックとドラッグが可能です。
これは gluUnproject を使用して機能し、作成された最初の QGLWidget でうまく機能します。2 番目のウィジェットをクリックすると、すべてが期待どおりに機能します。ただし、2 つ目のウィジェットをドラッグすると、動きがスムーズになりません。さらに悪いことに、2 番目のウィジェットがドラッグされると、1 番目のウィジェットの gluUnproject が、2 番目のディスプレイがドラッグされた方向と距離に関連して表示されるマージンだけずれます。
描画メソッドの開始時、マウス イベントの開始時、および一方、他方、および両方の組み合わせで makeCurrent() の呼び出しを試みましたが、改善は見られませんでした。
c++ - QGLWidgetは何も描画することを拒否します
OpenGLが描画されない、よくある間違いなどに関するたくさんの記事やSOの質問を見てきました。これは、私を困惑させています。
glOrtho
いくつかの異なる設定、異なる頂点の位置、色などを試しましたが、すべて役に立ちませんでした。
コードのクリアカラーが紫色(ウィンドウが紫色)であるため、OpenGLの状態が有効であることを確認できます。gDEBuggerは、フレームが更新されていることも確認しています(Frapsも同様です)。
これがコードです。「役に立たなかった」とマークされた行は元々そこになく、私が試したものと失敗したものでした。
カリングをオフにしても、三角形はまったく表示されません。ただし、3つのデバッグログはすべて、本来あるべき状態で正確に呼び出されます。
私は何が欠けていますか?
qt - glewを使用するためにQGLWidgetをサブクラス化する方法は?
glew を使用する QGLWidget のサブクラスをコンパイルするのに苦労しています。Windows 7でQt 5.0.1 + MinGW 4.7を実行しています.Glew 1.7.0は上記のMinGWでコンパイルされています。
QGLWidget を UGGLWidget でサブクラス化し、QGLWidget がインクルード"GL/glew.h"
する前にインクルードしました。コンパイルすると、次のような 200 エラーが発生します。
- 「関数」が別の種類のシンボルとして再宣言されました
- 競合する宣言'typedef'
私の質問: Qt5 でコンパイルされた glew を使用する QGLWidget のサブクラスを取得するにはどうすればよいですか?
編集: 別のセットアップ (Qt4.7 + MinGW4.4) で同じアプローチを試みました。コンパイルして問題なく動作します。また、最新バージョンの glew (Qt5.0.1 + MinGW4.7 + glew1.9.0) を使用してみましたが、どちらもコンパイルされず、同じコンパイル エラーが発生します。
コンパイラ出力の乱雑なスニペットを次に示します。
最後になりましたが、サブクラスのヘッダーとソース ファイルです。今のところ本当に空いています。
ソース:
ヘッダ:
ああ、おそらく .pro ファイルの関連部分
qt - OpenSceneGraph と複数のビューア
OpenSceneGraph と Qt を使用してシミュレーション ソフトウェアを開発しています。シミュレーションには、同じ仮想世界で複数のボットが関与する場合があります。ビューの私の要件は次のとおりです。
- 静的ワールド カメラを表示する機能
- ボットカメラを表示する機能
- これらのビューを移動および/またはスタックする機能
これらのタスクを達成するために、Osg Viewer を使用して QGLWidget 内のシーンをレンダリングする「OSGWidget」を作成しました。この OSGWidget は、QDockWidget 内に配置され、移動したりスタックしたりして、その要件を満たします。
問題は、複数の単一のビューアを使用して同じシーンを異なるウィジェットでレンダリングすると、奇妙なレンダリング動作が発生することです。つまり、テクスチャが正しく表示されないか、まったく表示されないこともあります。
私は SO と OSG フォーラムを見回しましたが、人々は同様の問題を抱えていましたが、私が見た唯一の回答は、Osg CompositeViewer への切り替えを提案していました。私の目的では、同じシーンをレンダリングする移動可能で積み重ね可能なウィジェットの望ましい要件を破るため、それを使用することは避けたいと思います。
これは、Osg では簡単に処理できない、手に負えない状況ですか? これは OSG が「機能するはずの」方法ではないという投稿をいくつか見ましたが、その主張を裏付ける事実を実際に提供していません。誰かが似たようなことをしたり、アイデア/洞察を持っていますか? 必要に応じてコード スニペットを提供することもできますが、これは Osg のイデオロギーに反する可能性があるため、何らかの回答が得られるまで待ちます。
c++ - レイアウト内の複数のQGLWidget
2つのQGLWidgets(1つは3D用、もう1つは2D用)を表示するシングルスレッドアプリケーションをプログラムしたいと思います。一度に表示される2つのQGLWidgetsに関する情報を見つけようとしましたが、役立つものは見つかりませんでした。
さて、私は共有コンテキストは必要ないと思います-表示されるデータは有用な方法で関連していません。2つはQMainWindow内に配置する必要があり、できればQSplitterで分割する必要があります。テストの目的で、2つのQGLWidgetsをQHBoxLayoutに配置しましたが、何らかの理由で、一度に1つしか表示されていません。ウィジェットのインスタンスを作成する順序によって、一方が他方を上書きするかのようになります。QSplitterは何も表示しません。両方でshow()を呼び出そうとすると、1つのウィンドウしか表示されません。(レイアウトをまとめるQWidgetを介してQGLWidgetsをQMainWindowに配置します。)
何かが足りないのですか、それともウィジェットの使用方法に関連するものですか?
メインウィンドウ:
QGLWidget:
ModelViewクラスとUnfoldedViewクラスは、(今のところ)ほとんど同じコードです。彼らは自分たちで何も共有していないと思います。
c++ - 立方体は QGLWidget で正方形としてレンダリングされます
QGLWidget で立方体をレンダリングしようとしましたが、うまくいきません。どう回転させても平べったい四角に見えます。頂点の Z 座標に気付かなかったようです。GL_DEPTH_BUFFER_BIT のクリアを追加する直前に、正方形は立方体のすべての側面が 1 つに詰め込まれたように見えました。今では前面に属さない頂点を破棄しているように見えますが、それでも立方体ではありません!
私の initializeGL() と paintGL():
頂点とインデックスは正しく定義する必要があります。これらは、ほとんどのコードと同様にチュートリアルから取得したものです。ただし、2D オブジェクトのレンダリングは問題ないようです。
また、チュートリアルが -2 引数で matrix.translate を呼び出すのはなぜですか? 1 より大きい値に変更するか削除すると、レンダリングされたオブジェクトが消えます。
Qt5、Windows Vista 32 ビット。
c++ - OpenGLおよびQt5(QGLWidget)の固定アスペクト比(1:1)のパースペクティブ
立方体をQSplitter内のQGLWidgetputにレンダリングしようとしています。1:1の比率にしたいので、立方体であり、ウィンドウの寸法に関係なくその比率を維持します。しかし、私はこれを機能させることができませんでした。私が何をしても、立方体は窓に沿って伸びます。
コードの動作に関して、さらに2つの問題があります。
matrix.setToIdentity()
の最後に発生する投影と変換を除くすべてをリセットするinitializeGL()
ため、で呼び出すとresizeGL()
、前に行列を同一に設定した場合でも、投影は前の投影と結合します。の議論
aspect ratio
はmatrix.perspective()
何もしていないようです。効果のないいくつかの値を試しました。何らかの理由で、投影は正投影であり、遠近法ではありません。
マトリックスは、後もIDですが、この順序で呼び出し
perspective()
た場合に限ります。setToIdentity()
perspective()
resizeGL
での行列演算
initializeGL()
とresizeGL()
異なる処理を取得します。translate()
を呼び出さないと、perspective()
後で呼び出しinitializeGL()
てもキューブは表示されませんresizeGL()
。
誰かが私にこれを説明できますか?クラスは行列を3D変換に保持するためにここにあると思ったQMatrix4x4
ので、自分でそれらを実装する必要はありません。
いくつかのチュートリアルを見てきましたが、同じようにある種の行列を使用しているか、非推奨のOpenGL関数を使用しているようです。幅と高さをフロートにキャストし、変換に個別の行列を使用してみました。
1:1の比率を機能させるにはどうすればよいですか?
私のコードの関連部分: