問題タブ [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 投票する
2 に答える
2513 参照

c - OpenGL 2.1 の頂点バッファ オブジェクト

(私のラップトップはそのバージョンを超えないため、2.1 を指定しました。3.x 以降ではシェーダーが必須として導入されているので、とにかくこれを行っていただろうか?)。

ウィキペディアに感謝します: http://en.wikipedia.org/wiki/Vertex_Buffer_Object VBO を使用することがどれほど簡単かを理解し始めています (IBO についてはまだ肯定的ではありませんか?)。これまでのところ、それらを使用する主な理由は、データがビデオ メモリに格納されるようになったことにより得られるパフォーマンスの向上であると理解しています。

私が知りたいのは、実際の文脈でそれらをどのように使用することになっているのかということです. たとえば、私が見たものはすべて、1 つの頂点バッファー オブジェクトを設定し、1 つの三角形または 1 つの立方体を描画するなどでした。2 つ以上描画したい場合はどうすればよいですか? 描画するエンティティごとに新しい VBO を設定する必要がありますか? それとも、早い段階でセットアップした静的な VBO に魔法のように追加しますか?

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

c - スプライトにはどのような頂点を作成すればよいですか?

OpenGL と C を使用して 2D レンダリング エンジンを作成しています。VBO と非即時モード レンダリングに使用する方法について学習しています。私はから読んでいます:http://www.opengl.org/wiki/Vertex_Buffer_Object

チュートリアルでは、次のことを提案しています。

法線値は必要ありません。また、1 つの頂点に対して 3 つのテクスチャ座標が存在する方法や理由がわかりません。

必要なのは Vertex (XYZ) と 1 つの Texcoord (s0, t0 <-- まだ意味がわからない) だけだと思います。

0 投票する
4 に答える
864 参照

java - VBO を使用した JOGL でのメモリ リークの可能性

現在、4D の球/平面上の巨大なベクトル フィールド (> 250'000) を視覚化するアプリケーションを開発しています。プロセスを高速化するために、頂点、法線、および色に VBO を使用しています。GPU に送信する前にデータを準備するために、バッファ (FloatBuffer、ByteBuffer など) を使用しています。

シリンダーへのデータ: 各シリンダーは 16 * 9 + 16 * 3 = 192 float -> 192 * 4 バイト = 768 バイトを使用します。

頂点を送信した後、次のクリーンアップを行っています。

JConsole で監視したところ、GarbageCollector が「正しく」実行されていないことがわかりました。シリンダ数を減らしても、メモリは解放されません。JConsole Monitoring Tool には、GC を実行するためのボタンがあり、手動で行うとメモリが解放されます (大量のシリンダーをロードして大幅に減らすと、GC によって 600MB 以上がクリーンアップされることがあります)。

JConsole のイメージは次のとおりです。 JConsole 出力、[GC の実行] ボタンを押した後にメモリがクリーンアップされる

問題は、コード内でこのバッファを自分でクリーンアップするにはどうすればよいかということです。clear メソッドを呼び出して参照を null に設定するだけでは不十分です。System.gc()の呼び出しも試みましたが、効果はありませんでした。何か考えはありますか?

0 投票する
3 に答える
1616 参照

c++ - VBO を使用して頂点をレンダリングする際の問題 - OpenGL

アプリケーションの速度を上げるために、頂点配列関数を VBO に転送しています。

これが私の元の作業頂点配列レンダリング関数です。

うまくいきました!

現在、それらをVBOに移動していますが、実際にプログラムが原因でグラフィックカードが応答しなくなりました。頂点とインデックスの設定はまったく同じです。

新しいセットアップ:

vboId は bsp.h で次のように設定されます。GLuint vboId[2];

createVBO() 関数を実行しただけではエラーは発生しません。

そして、VBOS のレンダリング コード。私はそれがここにあると確信しています。頂点配列で行ったように、VBO で whats をレンダリングしたいだけです。

与える:

エラーの内容はわかりませんが、レンダリング機能が間違っていることは確かです。オンラインにはたくさんありますが、互いに矛盾していることが多いため、これに関するより統一されたチュートリアルがあればいいのにと思います。

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

java - How can I map the elements to colors in OpenGL VBO?

I'm creating an app using VBO to render some objects with difficult color structure. I noticed, that VBO defines the color of the element equal to last vertex index in the element buffer. For example, when I use point array like this

color array:

and element array:

to draw a triangle, it will be red (as the last element in elementBuf is 2, in colorBuf it matches red).

In fact it can lead to additional memory usage to paint everything correctly.

Is there any other possible way to link colors with elements?

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

c - タイルマップのVBO(描画順序と傾斜した空中2D)

ゲームはテクスチャクワッドを使用したトップダウンの2Dパースペクティブですが、加速グラフィックスにGLを使用する(ANSI C、Windows互換性のため、C99は使用できません)ゲームでタイルマップを描画したいと思います。タイムマップを処理するための一般的な意見は、これから作成するGL頂点バッファオブジェクトを使用しているようです。しかし、私はいくつかのタイルが垂直方向の境界を少し超えて、斜めの空中写真を偽造したいことに気づきました。これにより、ブロックの真上にあるものはすべて、タイルで部分的に覆われるようになります。ここでVBOを使用する場合は、タイルマップ全体を一度に描画する必要があります。つまり、後で描画するオブジェクトはすべて、タイルマップの真上に表示されます。

この問題への最も正直なアプローチは何でしょうか?最初にタイルマップを描画し、次にエンティティ(プレーヤー/敵)を描画し、次にエンティティをカバーするように余分な垂直スペースを描画し、最後に両方に表示される効果を描画する必要がありますか?(ショット、爆発など)。しかし、これにより、ショットが地形に覆われないという問題が発生します。順序を変更すると、地形が大規模な爆発を不自然に覆うことになります。または、すべてのビジュアルオブジェクトを並べ替えてトップダウンで描画することもできますが、この特定のケースではテクスチャで並べ替えてもあまり役に立たないため、テクスチャを頻繁に変更する必要があります。

また、エンティティがマップに色をキャストできるように、グリッド内のすべての個々の頂点の色を動的に変更できるようにしたいと思います。私が理解していることから、これを達成する方法は、頂点シェーダーを使用することです。これは正しいです?

編集:最後のこと。画面よりも大きいタイルマップのようなVBOを変換して描画した場合、GLは自動的に見えない顔をカリングしますか、それとも「カメラ」を移動するたびにVBOをリフォームする必要がありますか?

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

c - OpenGL で VBO を表示できません

OpenGL で VBO と IBO を使用していますが、正しく描画できません。フレーム表示機能で忘れていた可能性があることを教えてください。- struct Point3D は、(x,y,z) 内に 3 つの float を持つ構造体です。- nbVertex は、glVertex 配列内の頂点の量です。- nbVBOInd は、VBOInd 配列内のインデックスの量です。

ありがとう !

0 投票する
3 に答える
4791 参照

opengl - OpenGLでの頂点の制限

何千もの頂点を持つOpenGLシーンがあり、それらをVBO/IBOとして渡したいと思います。glGetIntegerv(GL_MAX_ELEMENTS_VERTICES、&maxVertices)コマンドを実行すると、最近のビデオカードを使用しているにもかかわらず、頂点の最大数が2048に制限されていることがわかります。それに加えて、Cの配列はintに制限されているため、最大32kの頂点になります。

これらの制限を回避して、とにかくすべてのオブジェクトを表示するにはどうすればよいですか?

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

c - OpenGLで色を設定できません

VBOとIBOとして作成されたOpenGLシーンがあります。私のVBOは3つのフロートのシリーズです:x、y、z、x、y、z、x、y、z ...それに加えて、3つのフロートのシリーズで作られたカラー配列があります:r、g、 b、r、g、b、r、g、b..。

私の目標は、最初の頂点(x = vertice [0]、y = vertice [1]、z = vertice [2])が最初の色(r = color [0]、g = color [1]、 b = color [2])。ただし、以下のコードでは色を表示できません。

上記のコード、またはアレイの設定方法に問題がありますか?

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

iphone - 頂点シェーダー内の iPhone OpenGL ES 2.0 で VBO の値を永続的に変更することは可能ですか?

私は Opengl ES 2.0 初心者 (および GLSL 初心者) ですので、これが明らかな質問である場合はご容赦ください。

プログラムの開始時に CPU で一度初期化する VBO がある場合、CPU で計算を行わずに頂点シェーダーを使用して各フレームを更新し、GPU に再アップロードすることは可能ですか? ユニフォームを送ってそれに基づいてデータを操作することについては言及していません。代わりに、GPU 自体の VBO で永続的な変更を引き起こすことを意味します。

したがって、私が考えることができる最も単純な例は、フレームがレンダリングされるたびに、頂点シェーダーの gl_Position の x、y、および z コンポーネントに 1 を追加することです。これは、頂点が 1 つしかなく、その初期位置が CPU で (0,0,0,1) に設定されている場合、30 フレーム後には (30,30,30,1) になることを意味します。

これが可能である場合、コードでどのように見えるでしょうか?