問題タブ [vertex-array]
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++ - Qt頂点配列がQImageで機能しない
質問の長さについてお詫びすることから始めます。私はいくつかの小さな、ばかげたエラーを犯したと思いますが、それを完全に見つけることができないので、念のために関連するすべてのコードを投稿することにしました。
ついにQImageを使用してテクスチャの読み込みが機能するようになり、テクスチャを即時モードでレンダリングできるようになりました。ただし、頂点配列は機能せず、その理由がわかりません。「頂点配列とテクスチャ座標配列を有効にしましたか?」のような最も明白なこと おそらく答えではありません。初期化コードを投稿します。
init関数は次のとおりです。
QGLWidgetによって呼び出される初期化、サイズ変更、および描画関数があります(それ自体が実際の仕事関数を呼び出す単なるスケルトンです)
テクスチャ読み込み機能:
描画コードは次のとおりです。
助けてくれてありがとう、Dragonwrenn
geometry - 単純な非凸多角形で頂点を並べる方法
単純な非凸多角形の一連の点があるという問題があります (用語が正しいことを願っています)。しかし、ポイントは必ずしも順番通りではありません (つまり、時計回りまたは反時計回り)。Flash の描画 API で塗りつぶし領域を正しく描画するには、これらのポイントを端に沿って順番に進行させる必要があります (最終的に始点に接続するため)。
デカルト座標のリストを時計回りまたは反時計回りに並べ替えて、「ペンを持ち上げる」ことなくポイントからポイントへとシェイプを描画できる方法はありますか?
多角形の 4 点をソートするという投稿を 1 つ見ましたが、4 点だけの特殊なケースだったと思います。私の図形には最低 6 つのポイントがあります。リストでは、各エントリが少なくとも 1 つの隣接エントリ (前のポイントまたは次のポイント) に (時計回りまたは反時計回りの順序で) 隣接していることが保証されます。例: A, B, D, C... または B, A, D, C... ですが、 A, C, B, D... ではありません (A, B, C のいずれかになるように並べ替える必要があります、D または D、C、B、A)。この投稿を見つけましたが、回答がないようです:ポイント リストをポリゴンに並べ替える
CPU のパフォーマンスが問題です。しかし、「遅い」解決策でさえ、実装と理解が簡単であれば (次のプログラマーにとって)、効果的なキャッシュメカニズムを考え出すことができれば問題ないかもしれません。
私がしなければならないことの例を示すために写真を添付したいと思いますが、まだ評判ポイントが 10 ありません。とにかく、このポリゴンのリストで 3 番目の例の頂点を並べ替える手段があれば、それは完璧です: http://upload.wikimedia.org/wikipedia/commons/1/1f/Assorted_polygons.svg
私は本当にすべての助けに感謝します、ありがとう!
編集:確かに座標系の中心点を保証できます-それは画面の中心になります。すべてのポイントは 0 と画面の幅/高さの間になります (原点は明らかに幅/高さ / 2 です)。ポリゴンの内部に原点が含まれているとは限りません。まれな例外ですが、説明する必要があります。
ところで、私のセグメントが必ずしも順番どおりではない理由は、それらが Conrec: http://paulbourke.net/papers/conrec/を使用して生成されているためです(それらは等高線です)。以下を使用して、Conrec によって生成された等高線セグメントを注文します。 Conrec を使用して等高線の連続点の配列を組み立てる方法 問題のケースは、地図上の外側の等高線です。それらはマップの端と交差します (つまり、閉じた多角形を形成しません)。この場合、線の始点 (マップの端) に再接続するか、兄弟線がマップに入るまで (最終的に元の位置に戻るまで繰り返します)、マップの境界の端に沿って描画します。点)。次に、領域を描画して、塗りつぶし API を機能させることができます。この情報がお役に立てば幸いです。最善の方法は、ポリゴン頂点の順序付きリストを生成することだと思いましたが、おそらく別のアプローチが必要です。
opengl - OpenGL描画リストを頂点配列またはVBOに変換する
OpenGL 3.0以降で廃止された描画リストを使用して、頂点配列またはVBOのいずれかを使用するようにプログラムを変換しようとしていますが、変換方法の例が見つかりません。
現在プログラムに含まれているのはこれです(Pythonである可能性がありますが、実際に私が興味を持っているのは、適切なOpenGL呼び出しです---たとえば、C ++でもかまいません):
テクスチャを長方形にマッピングしています。その後、どこかに描画します。
これを頂点配列を使用するように変換するにはどうすればよいですか?VBO?
opengl - OpenGL頂点バッファの混乱
VertexBuffer、VertexArray、VertexBufferObject、およびVertexArrayObjectの違いを誰かが説明したいと思いませんか?これらがすべて異なるものの用語であるかどうかさえわかりませんが、それらすべてがOpenGL仕様に表示されているのを見てきました。
VertexBufferには頂点が含まれているだけで、バインドされると他には何も含まれないことを知っています。頂点ポインターを設定すると、DrawArraysを使用して描画できます。私は何度もこのようにそれをしました。
私はVertexArrayであると思うものを使用しています。これは、設定されている頂点バッファーの状態と、頂点ポインターを格納します。VertexArrayをバインドすると、頂点バッファーが自動的にバインドされ、頂点ポインターが設定されます。私もこれを(ほとんど)うまく使っています。
しかし、VertexBufferObjectとVertexArrayObjectとは何ですか?彼らは良いですか?VertexArrayは私に必要なすべてを提供しませんか?
opengl - OpenGL: 頂点配列を使用して立方体を描画すると、グラフィカルな不具合が発生する
(イミディエイト モード レンダリングを使用する代わりに) 頂点配列を使用して OpenGL で次のクワッドを描画しようとすると、下の 2 番目のリンクにある図に示されているグラフィカルな不具合 (線分) が表示されます。線は上に向かって無限に伸びているように見えます。
即時描画:
頂点配列による描画:
画像:
私は何を間違っていますか?
opengl - glDrawElementsでインデックスを理解するのに苦労
で地形を描画しようとしてGL_TRIANGLE_STRIP
いglDrawElements
ますが、背後にあるインデックスのことを理解するのに非常に苦労していglDrawElements
ます...
これが私がこれまでに持っているものです:
私は自分vArray
が正しいと信じています。描画するときに同じ値を使用しますが、glBegin(GL_TRIANGLE_STRIP)/glEnd
これは問題なく機能します。
私の推測では、各頂点の座標のインデックスのみを使用することでした。x
しかし、それが。でインデックスを使用する正しい方法であるかどうかはわかりませんglDrawElements
。
- 0:三角形の最初の頂点からのx座標のインデックス。場所:(-128、-128)。
- 768:三角形の2番目の頂点からのx座標のインデックス。場所:(-128、-127)
- 3:三角形の3番目の頂点からのx座標のインデックス。場所:(-127、-128)
- 771:2番目の三角形を描画する4番目の頂点からのx座標のインデックス。場所:(-127、-127)。
これまでのところすべてが理にかなっていると思いますか?
動作していないのは、上記の場所の値(私がダブルチェックしたものでvArray
あり、それらは正しい)がglDrawElements
使用しているものと同じではないということです。2つの三角形が描かれていますが、それらは本来あるべきものよりもはるかに大きくなっています。正しくは(-128、-128)から始まりますが、(-127、-127)ではなく(-125、-125)のようになります。
ここで何が間違っているのか理解できません...
opengl - glDrawArrays: いつ終了しましたか?
擬似コード:
古い OpenGL 実装をサポートしたいので、VBO は使用していません。
glDrawArrays を呼び出した後、次のことを行います。
- 頂点配列の割り当てを解除
delete vertices;
(" ") - おそらくいくつかの頂点を変更します
ただし、GL は glDrawArrays を非同期で自由に実行でき、完了するまで配列の割り当てを解除したり変更したりするのは安全ではありません。
それを確実にするために glFinish を実行できますが、アプリの速度が低下します。
では、頂点配列を自由に解放/変更できるのはいつですか?
colors - 頂点配列のOpenGLES2GLubyteカラーが機能しない
AppleはiOSのカラーデータにGLubyteデータ型を使用することを提案しているので、これを機能させようとしています。私が得た結果は、255未満のすべての色成分が完全に黒であり、255に設定された色の成分のみが実際にその色であるということです。
私がしていること:-単一のオブジェクトの色を自分のColorクラスにGLubytes(範囲0-255)で保存します-色をGLubyteタイプ(まだ範囲0-255)の頂点属性配列のシェーダーに渡します-Inフラグメントシェーダー、色を直接使用するか、コンポーネントを255で除算しますが、どちらも機能しません。
編集:これは機能します、問題は私のコードのどこかにありました。
ios - OpenGLES2頂点配列オブジェクトのヘルプ
OpenGL ES2(iOS上)でVAOを使用する方法を理解し、それらを機能させるのに問題があります。私の現在のレンダリング設定は次のようになります(擬似コード):
初期化:
フレームのレンダリング:
これは正常に機能しますが、両方のVBOにはまったく同じインターリーブ頂点属性構造体があります。ご覧のとおり、すべてのVBOのフレームごとに各属性を設定して有効にしています。InstrumentsはglVertexAttribPointer()とglEnableVertexAttribArray()への冗長な呼び出しについて文句を言いますが、それらの一方または両方を初期化フェーズに移動すると、glDrawElementsを呼び出すときにEXC_BAD_ACCESSを取得するか、何も描画されません。
私の質問は、これをフレームごとに行う必要があるかどうか、そうでない場合になぜ機能しないのか、そしてこれを解決するためにVAOをどのように使用するのかということです。
opengl - OpenGL 頂点バッファ オブジェクト、衝突検出などの他の用途のために頂点データにアクセスできますか?
私は現在、Superbible 5th edition に付属している GLTools クラスを使用しています。私は GLTriangleBatch クラスを探していますが、次のコードがあります:
私が理解していることから、コードはポインター pVerts、pNorms、pTexCoords、pIndexes の配列を渡し、それらを頂点バッファー オブジェクトの配列である頂点配列オブジェクトに格納します。これらは GPU のメモリに格納されます。その後、元のポインタは削除されます。
pVert が指す配列に保持されていた頂点位置にアクセスすることに興味があります。
今、私の質問は衝突検出を中心に展開しています。GLTriangleBatch のすべての頂点の配列にアクセスできるようにしたいと考えています。vertexBufferObject
何らかの getter メソッドを使用して、後でそれらを取得できますか? pVerts ポインターを保持し、代わりに getter メソッドを使用するのが最善でしょうか? 将来的にGJK衝突検出アルゴリズムを実装したいので、パフォーマンスの面で考えています...