問題タブ [geometry-instancing]
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# - Silverlight 5.0 でのジオメトリのインスタンス化 - 可能ですか?
Silverlight 5.0 アプリに取り組んでいます。一度に多数のモデル (数百ものモデル) をレンダリングしているため、ジオメトリのインスタンス化を使用したいと考えています。残念ながら、私の調査から、Silverlight はシェーダー モデル 2.0 を使用していることがわかりました。その場合、インスタンス化を実行することは可能ですか? xna 4.0にはメソッドがあります
GraphicsDevice.DrawInstancedPrimitives()
Silverlight では見えませんが。Silverlight でハードウェアのインスタンス化を使用する可能性はありますか?
そうでない場合 - アプリのパフォーマンスを向上させるための代替手段はありますか? 問題は、私が呼び出しgraphicsDevice.SetPixelShader()
ておりgraphicsDevice.SetVertexShader()
、私のメソッドで数千回を費やしているDraw()
ことです。
java - OpenGL と Java でインスタンス化された drawElements
を使用して、1 つの三角形をさまざまな場所で 100 回レンダリングしようとしていますglDrawElementsInstanced()
。
私はそれを正しい方法で取得していません。私はさまざまなチュートリアルを試しましたが、それらはすべて C++ 用であり、Java 用ではありません。最後はこれ。
これが私のコード例です:
これは私の頂点シェーダーです:
現時点では、中心が 0,0,0 の 1 つの正方形をレンダリングしています。
three.js - THREE.InstancedBufferGeometry と影
私はインスタンスで遊んでいて、素晴らしいです。
今、私はすべてのインスタンスに影を落とさせようとしていますが、うまくいきません。位置、スケールなどのインスタンス処理を追加して Lambert マテリアルのクローンを作成し、機能していますが、これは 1 つのシャドウのみをキャストしています: 位置 (0,0,0) の元のジオメトリからのシャドウ (インスタンスがない場合でもその位置で)。
誰かがそれを機能させるためにどこを探すべきか教えてもらえますか、それともこれはインスタンスまたはマテリアルの制限ですか?
ありがとう。
opengl - ハードウェアのインスタンス化に VBO を再利用する
通常、メッシュ固有の情報 (VBO/VAO) をインスタンス固有の情報 (変換、ユニフォームなど) から分離しようとします。
このように、インスタンス情報を操作するコードの部分は、VBO/VAO について何も知る必要がなく、その逆も同様です。
しかし、最近、glDrawInstanced を使用してハードウェア インスタンス化を使用し始めました。また、インスタンス属性が VAO で結合されているという事実により、懸念事項の分離が難しくなっています。
その理由は、通常、VBO/VAO は私の .OBJ ローダー (これを構築するために必要なすべての情報を持っています) から構築され、コードの他の部分はシェーダーのユニフォームだけを心配していたためです。ここで、コードのこれらの部分は、インスタンス属性に関する情報を添付するために、VAO の構造について知る必要があります。
これは、通常のレンダリングとインスタンス化されたレンダリングの両方で再利用できる VBO がある場合、さらに厄介になります。
メッシュ アトリビュートとインスタンス アトリビュートの設定の間で懸念事項を分離できる推奨される方法はありますか?
1 つは通常のレンダリング用、もう 1 つはインスタンス化されたレンダリング用で、必要な追加のインスタンス属性を追加するための 2 つの VAO を用意することを考えましたが、元の VAO データを複製または検査する方法が見つからなかったので、私のコンポーネントはインスタンスパラメータだけでなく、VBO/VAOの実際の構造。
c++ - OpenGL の複数の位置で VAO をインスタンス化できない
VBO (2 つの三角形)、インデックスの配列、および位置の配列で構成される VAO を OpenGL で作成しました。ただし、インスタンス化すると、1 つのアイテムしか表示されません。すべての位置が 0,0,0 にあるということですか?
インスタンス化された VAO を表示するには、次を使用します。
私は何かを忘れましたか?
c++ - OpenGL のインスタンス化: インスタンス データごとに欠落しているデバッグ方法
私はインスタンス化された図面とインスタンスごとのデータに比較的精通しています。過去にこれを実装して成功しました。
現在、いくつかの古いコードをリファクタリングしており、インスタンスごとのデータがシェーダーに提供される方法にバグを導入しました。関連するビットは次のとおりです。
- glMultiDrawElementsIndirectを使用して実装された作業レンダー ループがあります。インスタンスごとのデータを無視すると、すべてが期待どおりに描画されます。
オブジェクトのワールド変換を格納する vbo があります。AMD のCodeXLを使用してこれをデバッグしました。バッファにはデータが正しく取り込まれ、フレームの描画時にバインドされます。
glBindBuffer(GL_ARRAY_BUFFER,batch.mTransformBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(glm::mat4) * OBJ_NUM, &xforms, GL_DYNAMIC_DRAW);
シェーダーは入力位置を明示的に指定します。
/li>
ViewProj
マトリックスはすべてのインスタンスで等しく、次を使用して正しく設定されます。
Model
はインスタンスごとのワールド マトリックスです。それは誤りです。すべてゼロが含まれています。
バッファーをバインドした後、各フレームを描画する前に、描画されたすべてのインスタンスが異なる変換を受け取るように、属性ポインターと除数を設定しようとしています。
今、私はしばらくコードを見てきましたが、何が欠けているのか本当にわかりません。CodeXL は、モデル (場所 10) が正しく入力されていないことを明確に示しています。OpenGL エラーは生成されません。
私の質問は次のとおりです。インスタンスごとのデータのセットアップがサイレントに失敗する可能性がある状況を知っている人はいますか? または、この問題をさらにデバッグする方法に関する提案はありますか?