11
我已閱讀了一些關於GLSL的教程。 在某些位置屬性是一些vec3中的vec4。 我知道矩陣運算需要一個vec4,但它值得發送一個額外的元素? 發送vec3並稍後投射到着色器vec4(位置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,vertex * 3,data); glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0); 和着色器在vec4位置使用 「佈局(位置= 0);」表達? – Skides
是的,這就是這個意思。如果你這樣做,GLSL每次嘗試訪問時都會爲W添加一個1.0。 –
只是一個額外的問題:這是否適用於超過'GLfloat'?也就是說,dvec2' - >'dvec4'或'ivec2' - >'ivec4'會出現同樣的擴展嗎? – ThePhD