問題タブ [glm-math]
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.
c++ - GLM + STL:演算子==欠落
STLコンテナでGLMベクトルクラスを使用しようとしています。私が使用しようとしない限り、大したことはありません<algorithm>
。==
ほとんどのアルゴリズムは、GLMクラスに実装されていない演算子に依存しています。
誰もがこれを回避する簡単な方法を知っていますか?STLアルゴリズムを(再)実装せずに:(
GLMは、C++でGLSL関数を実装する優れた数学ライブラリです。
アップデート
glmが実際に拡張で比較演算子を実装していることを知りました(ここ)。しかし、どうすればstlでそれらを使用できますか?
アップデート2
この質問はこれに取って代わられました:stlアルゴリズムでglmのoperator ==を使用する方法は?
opengl - glmの行列値の順序が正しくありませんか?
私はGLMライブラリを使用して、OpenGL3とGLSLで数学演算を実行し始めました。2Dグラフィックスを描画するには正射影が必要なので、次の簡単なコードを記述しました。
glm::orthoが作成した値を画面に印刷すると次のようになります。
私が知っているように、これはOpenGLの値の正しい順序ではありません。これは、この行列に位置ベクトルを乗算すると、すべての変換値が無視されるためです。
シェーダーといくつかのプリミティブを使用してそのマトリックスをテストしましたが、空白の画面しか表示されません。しかし、次のようにマトリックスを手動で変更すると、問題なく機能します。
さらに、「glm / gtc/matrix_transform.inl」ファイルの関数「ortho」を見てください。
最後の3つの初期化行を次のコードに置き換え、正常に機能しました。
これは、テストに使用している最小限の頂点シェーダーです(現時点では、uni_MVPは上記で説明した射影行列のみであることに注意してください)。
すべての機能が同じように機能するため、これはバグではないと思います。多次元配列の順序を逆にする私のC++コンパイラの問題かもしれませんか?すべてのGLMソースコードを変更せずにこれを解決するにはどうすればよいですか?
WindowsVistaで実行されているCode:: BlocksとMinGWで最新バージョンのGLMライブラリ(0.9.1)を使用しています。
c++ - GLMを使用するための最良のglMatrixMode()は何ですか?
次の質問(または問題)は、glmをモデルにロードすると、モデルの一部が透けて見えることです。たとえば、前に2つの山がある場合、近くの山が透けて見えます。 。
写真を表示しますが、テクスチャが機能しないため理解できません。
ここにその問題があります:
古いスタッフ:vvvvvvvvvvvvvvvvvvvvvvv
不思議に思うのは、glmを使用するのに最適なマトリックスモードは何ですか?
私はGL_PROJECTIONに慣れていますが、モデルをロードするときに問題が多すぎます
GL_MODELVIEWを使用すると、カメラを元に戻すことができません
また、GL_MODELVIEWを使用している場合、シーン内の「カメラ」をどのように移動できますか?imaが最終的にしなければならないので、多分それをセットアップする方法はありますか?
編集:あなたたちにある種のビジョンを与えるためのいくつかのコードがここにあります:
c++ - GLM でのモデルの回転
GLMを使用していて、モデルを回転させる関数が見つからないことに気付きました。
この質問にはあまり意味がありませんが、私のopenglプログラムでGLMモデルを回転させる方法、またはモデルを回転させて単一にする方法があるかどうか疑問に思っています。
もしそうなら、あなたはいくつかの指針を与えることができますか?
c++ - Bullet Physics Libraryを使用して衝突を設定するにはどうすればよいですか?
opengl / sfmlゲームで衝突を設定する際に、少し「遅延」が発生しました。助けを求めるだけで、それほどエラーにはなりません。Bullet Physics (これはAPIリファレンスです)を使用していて、さまざまな関数とクラスを調べています。それから私はライブラリにデモが含まれていることに気づきました、それでそれらを見ている間私はそれらを完全に理解していません。
私がすでにopenglのモデルにGLMを使用し、2D目的とウィンドウにsfmlを使用しているので、彼らが私に使用することを推奨するメインライブラリはCollisionInterfaceDemoです。
誰かが私のゲームで衝突を実装する方法を知っているかどうか疑問に思っています。
c++ - 変換計算の高速化
私はOpenGL32Dエンジンをプログラミングしています。現在、ボトルネックを解決しようとしています。したがって、AMDプロファイラーの次の出力をお願いします:http: //h7.abload.de/img/profilerausa.png
データは数千のスプライトを使用して作成されました。
ただし、50.000スプライトでは、testappは5fpsではすでに使用できません。
これは、私のボトルネックが私が使用する変換関数であることを示しています。これは対応する関数です: http ://code.google.com/p/nightlight2d/source/browse/NightLightDLL/NLBoundingBox.cpp#130
すべてのスプライトを一度にバッチ処理しているため、シェーダーではそれを実行できません。つまり、変換を計算するためにCPUを使用する必要があります。
私の質問は:このボトルネックを解決するための最良の方法は何ですか?
私はスレッドATMを使用していません。そのため、vsyncを使用すると、画面が終了するのを待つため、パフォーマンスがさらに低下します。それは私がスレッドを使用する必要があることを教えてくれます。
もう1つの方法は、OpenCLを使用することです。CUDAは、私が知る限り、NVIDIAカードでのみ実行されるため、避けたいと思います。そうですか?
ポストスクリプト:
必要に応じて、ここからデモをダウンロードできます。
http://www63.zippyshare.com/v/45025690/file.html
これはプロファイラーを実行するためのデバッグバージョンであるため、VC++2008がインストールされている必要があることに注意してください。
c++ - 配列で glm::mat4 を初期化する方法は?
私は OpenGL 数学ライブラリ ( glm.g-truc.netglm::mat4
) を使用しており、float 配列で aを初期化したいと考えています。
これはうまくいきません。
解決策は些細なことだと思いますが、それを行う方法がわかりません。glm に関する適切なドキュメントが見つかりませんでした。役立つリンクをいただければ幸いです。
c++ - GLM(OpenGL)で行列とベクトルを乗算する
変換行列m
とベクトルがありv
ます。行列を使用してベクトルの線形変換を実行したいと思います。私はこのようなことをすることができると期待しています:
ただし、これは機能していないようです。GLMでこの種の操作を行う正しい方法は何ですか?
編集:
同様の問題に遭遇した人へのメモ。GLMでは、すべてのオペランドが同じ型を使用する必要があります。dvec4
aにaを掛けて、mat4
それが機能することを期待しないでください。が必要ですvec4
。
opengl - GLSLシェーダーでビューマトリックスを作成する
GPUの1Dテクスチャに多くの位置と方向が保存されています。それらをGLSLジオメトリシェーダーのレンダーソースとして使用したいと思います。これを行うには、これらのテクスチャから対応するビューマトリックスを作成する必要があります。
私の最初の考えは、CPUに迂回し、テクスチャをメモリに読み取り、そこからのようなものを使用して一連のビューマトリックスを作成することですglm::lookat()
。次に、行列を均一変数としてシェーダーに送信します。
私の質問は、この迂回をスキップして、代わりにGLSLジオメトリシェーダーで直接ビューマトリックスを作成することが可能かどうかです。また、これは実行可能なパフォーマンスの面でしょうか?
opengl - いくつかのopenglとglmの説明
誰かが次の行が何をするのか説明してもらえますか?
単位をピクセルに変換しますが、それが何をするものかはわかりません。私が持っているもう 1 つの質問は、より一般的なものですが、数値、つまり sin(90) = 1 を 10 ピクセル、または 40 または任意の数値で表現するにはどうすればよいですか? また、(0,0) が画面の中央になるように指定するにはどうすればよいですか? 上記はすべて glm ライブラリによって処理されていますか?