GLSLに関するチュートリアルを読みました。 特定の位置属性には、vec3のvec4があります。 行列演算にはvec4が必要ですが、追加要素を送る価値はありますか? vec3を送信して後でshader vec4(position、1.0)にキャストする方が良いですか? メモリ内のデータが少ない - 高速になるでしょうか?または、キャスティングを避けるために余分な要素をパックする必要がありますか?シェーダの位置vec4またはvec3
ヒント何が良いはずですか?頂点属性について
layout(location = 0) in vec4 position;
MVP*position;
または
layout(location = 0) in vec3 position;
MVP*vec4(position,1.0);
私が使用できることを意味しますか: glBufferSubData(GL_ARRAY_BUFFER、0、頂点* 3、データ); glVertexAttribPointer(0,3、GL_FLOAT、GL_FALSE、0、0); シェイダーでは、 「vec4の位置にレイアウト(位置= 0)を使用します;」表現? – Skides
はい、そういう意味です。これを行うと、GLSLはアクセスしようとするたびにWに1.0を追加します。 –
ちょっと速い質問です:これは 'GLfloat'以上に適用されますか?つまり、 'dvec2' - >' dvec4'または 'ivec2' - >' ivec4'でも同じ展開が起こりますか? – ThePhD