0
OpenGL會自動截斷它還是這是一個錯誤?當調用glUniform4f來設置float3變量時會發生什麼?
我有一塊令人討厭的OpenGL代碼,似乎是在程序中通過使用glUniform4fv與一個大數組,其中float4的值(即每行4浮點數,而不是3),並且它似乎工作。也就是說,OpenGL只會將3個值複製到矩陣的每一行,並跳過第4個值。可以假設這將始終有效嗎?
OpenGL會自動截斷它還是這是一個錯誤?當調用glUniform4f來設置float3變量時會發生什麼?
我有一塊令人討厭的OpenGL代碼,似乎是在程序中通過使用glUniform4fv與一個大數組,其中float4的值(即每行4浮點數,而不是3),並且它似乎工作。也就是說,OpenGL只會將3個值複製到矩陣的每一行,並跳過第4個值。可以假設這將始終有效嗎?
的GLSL規範是對這個相當明確:爲glUniform*
呼叫的大小和類型必須正好在着色器聲明的尺寸和類型相匹配(除了採樣和布爾值)。因此,如果您撥打glUniform4fv
,則必須設置類型爲vec4
的單個變量或類型爲vec4
的數組變量中的count
條目數組。
OpenGL沒有'float4','float3'或'float4x3'類型。你在談論'vec4','vec3'和'mat4x3'嗎? –
@NicolBolas是的 – kaalus