問題タブ [vertexdata]
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.
iphone - iPhone OS の OpenGL ES で推奨される頂点データ形式は何ですか?
「OpenGL ES および M3G を使用したモバイル 3D グラフィックス」という本の中で、正しい頂点データ形式を選択するとパフォーマンスに大きな影響を与えると著者は述べています。彼らは、ほとんどの頂点データに対して GL_SHORT を推奨しています。これはiPhone OSにも当てはまりますか?
c# - APIに依存しない頂点処理に適したコード構造は何ですか?
現在、C# を使用して 3D メディア エンジンに取り組んでいますが、ちょっとした難問に遭遇しました。レンディング ループを把握し、優れたプラグイン アーキテクチャとコンテンツ管理システム、さらにはマテリアル パイプラインをすべて計画しました。エンジンは、両方の API のプログラム可能なパイプラインと共に、DirectX と OpenGL (「レンダラー」プラグイン経由) を使用する予定です。
とにかく、今週の初めに、私は頂点を処理するためのエンジンの抽象レイヤーに取り組み始めました (私はこれを何週間も恐れていました)。また、ご存じの方もいらっしゃると思いますが、グラフィック API 間の頂点処理はまったく関連していないか、同じではありません。ちょっと関連しています;)が、同じではありません。OpenGL では、頂点の処理は非常に簡単です。カスタムの頂点構造を作成し、それを GPU に送信してから、シェーダーに残りを処理させます。これは、柔軟なグラフィック パイプラインに最適です。OpenGL は、各頂点に含まれる要素を認識する必要はありません。一方、DirectX では、頂点構造ごとに宣言を作成し、それを GPU に送信する必要があります。
問題は、渡される頂点構造のタイプがわからないことです。また、列挙といくつかの抽象 'VertexDeclaration' クラスを介して頂点の各要素を宣言することを含む抽象化レイヤーを作成することは絶対に避けたいと思います。これにより、いくつかの問題が発生します。
1) 頂点要素を取得するのは、控えめに言っても面倒です。「VertexSemantic」を使用して頂点「a - z」の位置を求めることもできますが、スケルトン アニメーションなどで多数の頂点を処理する場合、多くのオーバーヘッドが発生する可能性があります。
2)エンジンの主な焦点が「初心者」であることを考えると、あまりユーザーフレンドリーではありません。ユーザーが大量のオブジェクトを宣言して貴重な開発時間を費やすことなく、カスタムの頂点とメッシュ バッファーを作成できるようにしたいと考えています。
3) もっと?
これで、属性を使って何らかの処理を行ってから、DirectX レンダラー内で頂点構造の宣言を作成できるようになりました。たとえば、いくつかの列挙型を作成します。
これで、ユーザーが頂点構造の各要素の「フィールド」に適用できる属性を作成できます。
カスタム頂点構造がどのように見えるかの例:
これはいいでしょう。DirectX プラグイン (レンダラー) では、各構造型のセマンティクスを作成できるユーティリティ クラスを作成し、データをキャッシュするだけで、頂点ごとに宣言を再作成する必要がなくなります。
NONE 列挙値を ELementUsage に追加して、カスタム値を何にでも使用できるようにすることもできます...しかし、DirectX では各頂点をマークする必要があるため、OpenGL でのみ機能します...ない。
私の質問:
これを行うためのより良い方法はありますか (属性を使用する以外に)? DirectX で VertexDeclarations を使用しないようにする方法はありますか? 「私の」質問でわからないことはありますか?
編集:
属性を使用する際の問題は、各頂点から要素データを取得することです。メッシュ バッファー内の各頂点の位置を取得したいとします。属性を使用したため、「vertex.Position」だけでは実行できません。「Utility.GetElement(vertex, ElementUsage.POSITION)」のように、頂点構造からフィールド参照を抽出できるユーティリティ メソッドを作成する必要があります。 . このメソッドは、最初にリフレクションを使用して属性を見つけ、次にフィールド値への参照を返す必要があります。値を設定することさえ(私は思う)不可能でしょうか?
もう 1 つの方法は、IElement インターフェイスを作成し、各要素 (Positon、Normal など) を実装することです。インターフェイスには、継承された要素構造内で直接返すことができる Name プロパティを含めることができます。これは、PositionElements の Name プロパティが単に「Positon」を返すようにするためです。
次に、AddElement(IElement)、GetElement(string name)、GetElement(int index)、Insert、Replace などのメソッドを含む Vertex 構造体内に IElement の配列を保持できます。DirectX で認識されるすべての要素を実装して、レンダラー プラグインは、頂点構造を解析して頂点宣言の配列を作成できます。
これに関する問題は、配列 '[]' を頂点要素データとして使用できるかどうかわからないことです。同様に、頂点構造体 (IElement 配列を含む) を DirectX に直接渡し、次に GPU に渡すのを妨げる、配列に含まれる他のバイト (存在する場合) は何ですか?
このように実装することは、私が必要としているものに完全に最適です。もう 1 つの質問は、IElement (要素) の継承型がクラスになる可能性があるか、それとも要素値が値型でなければならないかということです。
opengl - OpenGL頂点バッファの混乱
VertexBuffer、VertexArray、VertexBufferObject、およびVertexArrayObjectの違いを誰かが説明したいと思いませんか?これらがすべて異なるものの用語であるかどうかさえわかりませんが、それらすべてがOpenGL仕様に表示されているのを見てきました。
VertexBufferには頂点が含まれているだけで、バインドされると他には何も含まれないことを知っています。頂点ポインターを設定すると、DrawArraysを使用して描画できます。私は何度もこのようにそれをしました。
私はVertexArrayであると思うものを使用しています。これは、設定されている頂点バッファーの状態と、頂点ポインターを格納します。VertexArrayをバインドすると、頂点バッファーが自動的にバインドされ、頂点ポインターが設定されます。私もこれを(ほとんど)うまく使っています。
しかし、VertexBufferObjectとVertexArrayObjectとは何ですか?彼らは良いですか?VertexArrayは私に必要なすべてを提供しませんか?
opengl - GL_VERTEX_ARRAY に関する質問
これは単なる関心事ですが、GL_VERTEX_ARRAY が「保持」し、drawArrays() などを介してレンダリングする頂点の量に制限はありますか? それとも、理論的には数百万の頂点を通過しても drawArrays() を呼び出すことができるでしょうか?
opengl - MacのOpenGLシェーダービルダーに一般的な頂点属性を取得する方法はありますか?
Macでゲームエンジン用のシェーダーを開発する方法を探しています。私はOpenGLShaderBuilderアプリに出くわしましたが、それは1つのことを除けば本当に素晴らしいように見えました。ビルダーで一般的な頂点属性を使用する方法を理解できませんでした。
GLSLシェーダービルダーは、事前定義されたすべてのOpenGL頂点属性(gl_Normal、gl_Color、gl_TexCoord、gl_MultiTexCoordXなど)で正常に動作しますが、シェーダーで独自の頂点属性を定義して、何らかの方法で渡すことができるようにしたいと考えています。モデルを構成する一般的な頂点データのセット。そうすれば、シェーダーに渡す頂点属性のセットがある限り、GLSLシェーダービルダーを使用してシェーダーを個別に開発できます。
directx - DirectX は頂点をどのように読み取るのですか?
そのため、DirectX ドキュメント/リファレンス自体などのチュートリアルやリソースをいくつか調べましたが、何かを見逃したか、質問に対する答えが本当に見つかりませんでした。
質問は、タイトルに記載されているとおりです: DirectX はどのようにして頂点を頂点バッファーに読み込みますか?
もちろん、1 つ以上の FVF コードを提供する必要があることは理解しています。しかし、Vertex 構造体を適切に設定する方法はどこにも書かれていません。私が想像できる唯一のことは、もちろん、DirectXは線形の「タイムライン」でフラグをチェックするため、同じデータ型と順序を必要とする可能性のある1つのフラグが構造体でも最初に来なければならないということです。
私が言いたいことの小さな例として:
!=
FVF コードを使用:
、nx
、通常の頂点の 3D 座標を表しますny
。nz
頂点構造体を適切に設定する方法についてのヘルプをいただければ幸いです...
心から、
デリジャ
r - データフレームから頂点/エッジ配列へ
私はデータフレームを持っています
そして、次のように、学生のカテゴリが連続して変更されるたびに、頂点/エッジ リスト (igraph で使用するため) を作成する必要がありますが、変更がない場合は無視します。
この時点で、ID を無視しています。グラフはエッジをカウントで重み付けする必要があります (つまり、新入生 -> ジュニア = 3)。アイデアは、ツリー グラフを作成することです。メインの交換ポイントのそばにあることは知っていますが、それはあなたが尋ねる場合に備えて...
r - ネットワーク グラフの頂点に (数値実数) 値を割り当てます
ネットワーク プロットの各ノードに、R
. これは繰り返し更新する必要があります。最後に、最新の値 (スコア) に従って頂点のサイズでネットワーク グラフをプロットします。
この目的で使用できる頂点のプロパティとその方法は? でそれが不可能な場合、でigraph
この目的を達成する他の方法はありますR
か?
私は初めてですR
。誰でもこの問題を解決するのを手伝ってください。
opengl-es-2.0 - glVertexAttributePointerスコープ?
現在、iOS と Android の両方のプラットフォームで OpenGL ES 2.0 アプリケーションをプログラミングしています。
このアプリケーションでは、すべて VBO を使用する複数のメッシュをレンダリングします。レンダリングを最適化する過程で、レンダリングするメッシュが 2 つの頂点フォーマットを共有していることに気付きました。だから私は次のことをしたかった:
最初に、すべての頂点属性ポインター オフセットを設定し、次に、この頂点形式を使用する各 VBO を単純にバインドし、glVertexAttribPointer
関数を再度呼び出さずにレンダリングします。
しかし、それは私に奇妙な結果をもたらします。
私の質問は:glVertexAttribPointer
新しい VBO をバインドするたびに呼び出しを行う必要がありますか?
three.js - ジオメトリ頂点データを three.js リボン間で共有できますか?
一般的に円筒形を形成する心臓 MRI スライスから抽出された心臓の輪郭の補間によって生成された頂点の大きなセットがあります。現在の (C++) ビジュアライゼーションでは、頂点データは 1 つの配列に保持され、モデルの各横方向ストリップは三角形ストリップとしてレンダリングされます。
複数のリボンで Geometry 頂点データを共有し、ストリップごとに個別の Geometry オブジェクトを作成する (それによって頂点データを複製する) 必要を回避する方法があるかどうか疑問に思っています。