2012-04-02 50 views
2

我正在嘗試使用spidergl已經使用的implements示例代碼實現webgl陰影映射。我試圖直接在WebGL上實現它。頂點位置三元組如何映射到着色器中的vec4?

我相信我有幾乎相似的代碼,但我沒有得到結果。我已經將問題縮小到了代碼的一小部分。我的着色器代碼定義了a_position(頂點位置屬性),如vec3;而spidergl代碼將其定義爲vec4。我梳理了spidergl代碼,以瞭解它們的頂點位置屬性(它們是x-y-z三元組)如何填充到vec4中。我期望在調用vertexAttribPointer時找到訣竅。但是他們所傳遞的大小和步幅的值如預期的那樣:3和12.我改變了我的代碼來做同樣的事情,但我還沒有得到相同的結果。

有人可以解釋位置三元組被映射到vec4的基本機制嗎?我從來沒有見過這樣的代碼,它還提到了立方體角的x,y,z座標,但有着色器將a_position作爲vec4。那麼什麼會被填入vec4的第四個浮點數?

回答

3

glVertexAttrib文檔的這一部分可能會感興趣:

這些命令可以用來指定指數指定的通用頂點屬性的一個,兩個,三個或四個組成部分。

A 在命令的名稱中指示只傳遞一個值,並且它將用於修改泛型頂點屬性的第一個組件。第二個和第三個組件將設置爲0,第四個組件將設置爲1.

類似地,命令名稱中的指示爲前兩個組件提供值,第三個組件組件將被設置爲0,以及所述第四分量將在命令的名稱被設置爲1

甲指示被提供用於所述第一三個分量的值和所述第四分量將被設置爲1 ,而該名稱中的名稱表示爲所有四個組件提供值。

基本上,如果你設置一個vec4屬性與VEC 3時,vec4的前3個元素匹配您的VEC 3和第4單元被設置爲1

我的猜測是,你的問題是在其他地方在你的代碼中。

+0

+1 for _food for thought_。我會在GLSL規範中期待這一點,但第二個想法是,它並不真正屬於那裏。 – 2012-04-02 18:23:20

相關問題