簡體   English   中英

在VertexShader中使用mat4

[英]working with mat4 in the VertexShader

為什么第一個代碼有效,而第二個代碼卻無效? 該代碼位於“頂點着色器”中。

第一個代碼:

gl_Position = ProjectionMatrix * ViewMatrix * ModelMatrix * vec4(Position, 1.0);

第二碼:

mat4 View = mat4(
        ViewMatrix[0][0], ViewMatrix[1][0], ViewMatrix[2][0], ViewMatrix[3][0],
        ViewMatrix[0][1], ViewMatrix[1][1], ViewMatrix[2][1], ViewMatrix[3][1],
        ViewMatrix[0][2], ViewMatrix[1][2], ViewMatrix[2][2], ViewMatrix[3][2],
        ViewMatrix[0][3], ViewMatrix[1][3], ViewMatrix[2][3], ViewMatrix[3][3]
    );

gl_Position = ProjectionMatrix * View * ModelMatrix * vec4(Position, 1.0);

從關於矩陣構造函數的GLSL規范中:

矩陣組件將按列主要順序構建和使用。

前四個浮點數定義了新矩陣的第一列,但是您指定了它的第一行。 您正在將View設置為轉置的 ViewMatrix

請注意,這絕對反映了C語法和數組約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM