問題タブ [vbo]

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.

0 投票する
1 に答える
2796 参照

opengl - VBO を使用した OpenGL の複数のテクスチャ

各面に異なるテクスチャを使用してオブジェクト (立方体) をレンダリングする方法を理解しようとしています。簡単にするために、立方体の 3 つの面にそれぞれ適用される 2 つのテクスチャがあります。使用する関連テクスチャを表すために、3 つの座標を持つテクスチャ配列を使用する必要があることを理解しています。これを行う方法と、フラグメントシェーダーをコーディングする方法がわかりません。

私のinit()機能の関連部分は次のとおりです。

ただし、 Orange Book (OpenGL シェーディング言語) にはglActiveTextureandglBindTextureが使用されている例が示されていますが、GLSL のよくある間違いでは、これを行うべきではないと書かれているため、ここで少し混乱しています。

そこから、私のdisplay()関数は次のようになります。

GLSL シェーダーに何を入れればよいかわかりません。私の頂点シェーダーには標準がgl_TexCoord[0] = gl_MultiTexCoord0;あり、私のフラグメントシェーダーは次のようになります。

どのテクスチャで使用するかをフラグメント シェーダに指示するにはどうすればよいですか? 頂点、インデックス、テクスチャ バッファなどを設定しているときだと思いますが、各ポイントにこの 3 番目のテクスチャ座標を渡すことでそれを行いますか? この 3 番目の座標の値は、該当するテクスチャ座標の値ですか? 私の質問が理にかなっていることを願っています。助けてくれてありがとう。クリス

0 投票する
1 に答える
1903 参照

opengl - OpenGL での vbo 管理

OpenGL でレンダリングしたいさまざまなモデルがあります。すべてのモデルには、異なる頂点とインデックスがあります。

vbo を使用してこれらのモデルをレンダリングする際に従うべきベスト プラクティスは何ですか? モデルをレンダリングするには、モデルごとに VBO を作成する必要がありますか? 私は、いくつかの小さな VBO を使用すると、大きな VBO を使用するだけでなく、パフォーマンスに大きな影響を与えることを読みました。

例: 箱とその隣に車があり、箱の頂点数は 8、車の頂点数は 2000 で、これはまったく異なる数です。私はさまざまなモデルを持っていますが、それらも時々消えることがあります。つまり、これらのモデルはサーバー側のバッファから削除する必要があります。どうやってやるの ?

誰かがこの混乱を解消し、私の状況を処理するための良い方法を示す記事に私を案内してくれるかもしれません.

0 投票する
2 に答える
551 参照

opengl - OpenGLの座標としてインデックスを使用する

ユーザーがズームしてスムーズにパンできる時系列ビューアを実装したいと思います。

以前にいくつかの即時モードopenglを実行しましたが、VBOを優先して非推奨になりました。私が見つけることができるVBOのすべての例は、すべてのポイントのXYZ座標を格納します。

パン中に「スムーズ」と呼ばれるフレームレートを取得するには、すべてのデータをVRAMに保持する必要があると思いますが、Yデータ(従属変数)しかあ​​りません。Xはインデックスから計算できる独立変数であり、Zは定数です。XとZを保存する必要がある場合、メモリ要件(バッファサイズとCPU-> GPUブロック転送の両方)が3倍になります。また、ユーザーがパンできる数千万のデータポイントがあるため、メモリ使用量は重要です。

インデックスが他の座標として使用される1-D頂点配列を描画するか、1-D配列を(おそらくテクスチャに)格納し、シェーダープログラムを使用してXYZを生成するためのテクニックはありますか?スケーリングと変換を実装するには、新しい固定機能のないパイプラインモデルの下で、とにかく単純なシェーダーが必要であるという印象を受けています。したがって、X座標とZ座標の生成と、Yのスケーリング/変換を組み合わせることができれば、理想。

これも可能ですか?これを行うサンプルコードを知っていますか?または、少なくとも、どのGL関数をどの順序で呼び出すかを示す擬似コードを教えていただけますか?

ありがとう!

編集:これを明確にするために、同等のイミディエートモードコードと頂点配列コードを次に示します。

v[]の2倍のサイズであることに注意してくださいy[]

0 投票する
2 に答える
1446 参照

c++ - インターリーブされたopenGL頂点バッファオブジェクト間のコピー

opengl 3.3、radeon 3870HD、c++を使用します。

データのインターリーブされた配列について質問がありました。アプリケーション構造をベクトルで取得しました。これは、データとしてバッファオブジェクトに送信されます。このようなもの:

これは大丈夫です私はこれを頻繁に使用します。しかし、私が作成するのはインターリーブされた配列なので、データは次のようになります。

これをGPUで処理するために送信し、変換フィードバックを使用して、たとえばb変数などのバッファーに読み戻します。したがって、次のようになります。

更新された値をインターリーブされたバッファーにコピーしたいのですが、これはglCopyBufferSubDataのような単一のコマンドで実行できますか?これは、オフセットとサイズがストライドではないため、適切ではありません(おそらく、c ++のmemcpyのようなものです)...結果は次のようになります。

そうでない場合は、これらの2つの鉱山よりも優れたアプローチがありますか?

  1. 更新されたバッファをマップし、アプリの一時ストレージに値をコピーし、更新されたマップを解除し、データバッファをマップし、それを繰り返して新しい値を設定します

  2. 定数バッファーと可変バッファーで別々のバッファー。定数は時間の経過とともに同じままですが、glCopyBufferSubDataを使用すると、変数を1回の呼び出しで更新できます。

ありがとう

0 投票する
2 に答える
1461 参照

c++ - メッシュごとに複数の頂点バッファー

すべての頂点とインデックスを含むメッシュのサイズが (最適な) 頂点バッファー オブジェクトの上限 (~8MB) よりも大きい状況に遭遇しました。メッシュを複数の頂点バッファーに分割し、インデックスの有効性を維持できるかどうか疑問に思っていました。つまり、最初の頂点にインデックスがあり、最後の頂点にインデックスがある三角形 (つまり、別々の VBO)。

頂点配列オブジェクト内でこれを維持しながら。私の考えでは、手間を省いて、このようなメッシュ (messes :P) には必要なサイズ (> 8MB) を使用するだけです。それが私が今していることです。しかし、理想的には、現時点で私のバッファー マネージャー (wip) は最適なサイズを使用しています。その場合、特別なケースを作成する必要があるかもしれません。

何か案は?

注:どちらがより適しているか確信が持てなかったので、これをgamedev stackにもクロスポストしました(部分的には設計上の問題です)。

0 投票する
1 に答える
473 参照

android - OpenGL ES VBO glgeterror 4242512 - それは何ですか?

こんにちは、「glgeterror 4242512」が表示されます。コードは次のとおりです。

編集:これを on: onSurfaceCreatedと呼ぶと、すべてがうまくいき、glgeterror 0 が返されます。これは完璧です。

スレッドからこの呼び出しを開始すると、この番号 "4242512" が取得され、 textureBufferIndex も null になります。なんで?

0 投票する
1 に答える
1996 参照

android - クロッピングまたはVBOを使用したAndroid OpenGL ES draw_texture?

こんにちは、キャンバスの代わりに OpenGL を使用するように Android アプリを作り直していました (非常に遅いため)。タイル シート (アトラス テクスチャ) を使用しているので、VBO または draw_texture を使用する方が速いのではないかと考えていました。作物を次のように設定します。

Chris Pruett の話をしばらく聞いた後、draw_texture が個々のスプライトで間違いなく最速であることがわかりましたが、アトラスをトリミングしている場合、これはまだ真実ですか?

0 投票する
1 に答える
1922 参照

opengl - OpenGLマウスピッキング戦略

OpenGLを使用して、特定の平面で回転対称のオブジェクトのモデルをレンダリングしています。ユーザーがモデルをスクロールして(おそらく回転、ズームなどの後で)、どのワールド座標座標を決定できるかを確認したいと思います。マウスが現在指しているモデル。

対称性について言及した理由は、使いやすさのために、個々のコンポーネントのVBOを使用してモデルを構築しているためです。私がやっていることとの類似点は自転車のホイールです-スポーク用に1つ、ハブ用に1つ、ホイール/タイヤ用に1つあり、スポークVBOを何度も再利用します(後適切な翻訳と回転)。私の最初の質問は、この配置が私がやろうとしている種類のピッキングに役立つかどうかです。たとえば、結果のモデルで個々のスポークを「選択可能」にしたいと思います。私がやろうとしている種類の選択を行うために、メッシュ内のクワッド/トライアングルごとに個別のVBOが必要ですか?そうでないことを本当に願っています...

また、使用するのに最適なピッキングアルゴリズムは何でしょうか?OpenGLの組み込みの選択モードについて否定的なことしか聞いたことがありません。前もって感謝します!

0 投票する
1 に答える
4915 参照

opengl - OpenGL描画リストを頂点配列またはVBOに変換する

OpenGL 3.0以降で廃止された描画リストを使用して、頂点配列またはVBOのいずれかを使用するようにプログラムを変換しようとしていますが、変換方法の例が見つかりません。

現在プログラムに含まれているのはこれです(Pythonである可能性がありますが、実際に私が興味を持っているのは、適切なOpenGL呼び出しです---たとえば、C ++でもかまいません):

テクスチャを長方形にマッピングしています。その後、どこかに描画します。

これを頂点配列を使用するように変換するにはどうすればよいですか?VBO?

0 投票する
1 に答える
742 参照

pointers - OpenGL VBO アクセス違反

私は過去数週間 OpenGL を学んでおり、法線、シーン グラフ、ブラ ブラに関する他の記事と一緒に Swiftless のチュートリアルと Nehe のチュートリアルの一部を読んだ後、ある種の「フレームワーク」を作成することにしました。新しく学んだコードを簡単に挿入できるようにします。そこで、シーングラフとレンダラーのコンボを作成することにしました。それほどきれいでもなく、高速でもありません (prolly) が、新しい派生ノード クラスを追加して、今読んだばかりの新しい機能をレンダリングするオプションがあります。だから私はinterwebzを見て、実装方法に関するさまざまな例を見て、この基本クラスに落ち着く:

....私はこのクラスを作った:

ここで、freeglut を使用してウィンドウの作成とループを処理します。

シーングラフの「bob」は、次のようにノードの作成を処理します。

コンパイラはエラーを認識せず、コードを実行しますが、ここでアクセス違反を受け取ります。

拡張機能は View::initExtensions() で呼び出され、シーングラフの初期化はウィンドウの作成後に行われるため、....ポインタと関係があると確信しています...

以前のプログラムでは、VBO の作成にまったく同じコードを使用しましたが、機能しました。唯一の違いは、ここで使用されているコードは Node* で使用されているのに対し、以前のコードは Node (ポインターなし) でのみ使用されていたことです。しかし、いずれにせよ、glew がうまく起動するかどうかを確認します。私が使用しているビデオカードについては、ラップトップには、 OpenGL 1.5 をサポートするはずの、GLSL さえも備えていない安っぽい Intel 統合カードがあり、PC には 6850 があります。ラップトップで、教員やその他のもののために。

とにかく、VBOの作品を作成するためのコード、つまり、次のように機能しました。

これは、静的に宣言されていることを除いて、NodeSphere と同じです。前もって感謝します。