問題タブ [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.

0 投票する
0 に答える
35 参照

c++ - wavefront .obj データを最小サイズの要素配列と頂点配列に組み立てる方法は?

Wavefront .obj ファイル内のデータをまとめるのに問題があります。

これらはvec3とのvec2定義です

ベクトルで使用:

どこ:

  • v_vec_indexstd::vector<vec3<float>> v_vec頂点の x、y、z 座標を含むフィールドを持つのインデックスです
  • vt_vec_indexstd::vector<vec2<float>> vt_vec含まれているテクスチャの u および v 座標のインデックスです
  • vn_vec_indexstd::vector<vec3<float>> vn_vec通常の x、y、z 座標のインデックスです

すべてf_vecのフィールドは、 内に一連のvert_x, vert_y, vert_z, tex_u, tex_v, norm_x, norm_y, norm_zfloat 値を作成するために使用されますstd::vector<float> vertex_array

また、 のフィールドのすべてのインデックスf_vecは、デフォルトで - の値です。つまり、 からまでstd::vector<uint32_t>> element_arrayの整数の範囲が含まれています。0f_vec.size() - 1

問題は、vec3内部のフィールドf_vecが繰り返される可能性があることです。したがって、上記のユニークなシーケンスのみを組み立てるために、次のように変更することを計画しました。

これに:

の要素が " "f_vecに挿入されるたびにwhatever container

  • 一意であるかどうかがチェックされます

  • そうである場合、containerそのキーは最大のキーの次の自然数であり、 の最後にプッシュされます。キーの値は にプッシュされ、element_array新しい頂点が内部に作成されます。vertex_array

  • そうでない場合、containerそのキーはその複製のキーと同じで、の最後にプッシュされます。キーの値はにプッシュされますが、element_array変更vertex_arrayされません。

どうすればいいですか?

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

c++ - 頂点シェーダー アトリビュートの場所の破損したデータ

頂点シェーダー属性の場所のデータが破損しているため、モデルが引き伸ばされているように見える

頂点シェーダー コードは次のとおりです。

問題は、boneIDs の破損したデータのようです(boneIDs データは CPU では問題ありませんが、シェーダーで破損したデータが取得されます)。シェーダーで boneIDs データをハードコーディングしてみましたが、うまくいきました。

VAO のコードは次のとおりです。

BoneVertex 構造:

最初の 3 つの属性データは問題ないように見えるため、これは奇妙です。問題は、boneIDs と boneWeights にあります。これは何らかの形でパディングに関連しており、データが構造内でどのように配置されているのでしょうか? それとも、他に何か不足していますか?

ありがとう