我正在寫一個骨骼動畫的着色器,需要一個int []屬性來將索引保存到包含關節轉換矩陣的mat4 []。我的問題是,我不能創建一個存儲int []的VBO。我試過使用GL30.glVertexAttribIPointer(),但是,我的電腦不支持Opengl 3.0。所以我不得不使用我讀過的glVertexAttribPointer()將所有的值轉換爲浮點數。在可以通過着色器訪問的VBO中存儲int []的最佳方式是什麼?LWJGL opengl glsl着色器與int []屬性
0
A
回答
1
您試圖做什麼有兩個問題。
第一個問題是您正在嘗試傳遞整數。使用花車;使用float作爲數組的索引沒有任何問題。如果您通過GL_FALSE
獲得normalized
參數glVertexAttribPointer
,您將獲得有效整數。您可以將每個索引作爲GL_UNSIGNED_BYTE
傳遞。第二個問題是你想傳遞數組。別那樣做;你想要一個vec4
,而不是一個數組。 XYZW表示您在矩陣中使用的四個索引。
如果頂點需要多於4個矩陣會怎麼樣?別再那樣做了;這就是其他人都會剝皮的原因。這種工作方式是,當您構建頂點數據時,如果一個頂點受到4個以上矩陣的影響,那麼您只能使用權重最大的4個(相應地重新調整權重)。
相關問題
- 1. OpenGL GLSL着色器統計
- 2. LWJGL GLSL着色器沒有編譯
- 3. GLSL着色器可選屬性
- 4. OpenGL的每像素着色與GLSL着色器
- 5. C++在OpenGL着色器(GLSL)位標誌
- 6. 的OpenGL - GLSL着色器,alpha混合
- 7. shadowmapping opengl glsl着色器圖形數學
- 8. GLSL着色器
- 9. GLSL着色器只繪製黑色屏幕LWJGL
- 10. 使用GLSL着色器SDL2
- 11. GLSL着色器屬性(以整數形式)
- 12. GLSL着色器檢測
- 13. OpenGL着色着的綁定屬性
- 14. 將兩個片段着色器與opengl/glsl混合
- 15. VAO + IBO與GLSL着色器的使用
- 16. 無法鏈接glsl頂點着色器
- 17. GLSL LWJGL災難/着色器什麼都不做?
- 18. OpenGL GLSL Cel着色和輪廓算法
- 19. GLSL着色器閃爍
- 20. OpenGL着色器?
- 21. GLSL:頂點着色器無片段着色片段着色器
- 22. 錯誤時,編譯着色器GLSL 3.30
- 23. 如何將每個頂點屬性傳遞給GLSL着色器
- 24. 混合Cg和GLSL着色器
- 25. GLSL邊框着色器
- 26. GLSL着色器問題
- 27. GLSL - 在GLSL 1.2統一地點和着色器深度測試
- 28. 如何編寫通用GLSL着色器來着色對象
- 29. GLSL着色器分析工具
- 30. GLSL 1.5和OpenGL 3.3:將顏色傳遞給頂點着色器似乎失敗
使用浮點數來存儲整數不超過2^23,除此之外,兩個相鄰浮點數之間的差值大於1(所以並非所有整數都可以表示爲浮點數)。但我認爲這在這種情況下不會造成任何限制 –