是否可以使用GLSL頂點着色器程序設置單個頂點的顏色,就像gl_Position更改頂點的位置一樣?更改頂點着色器中頂點的顏色
回答
我想我對你的GLSL經驗有太多瞭解。我很抱歉。
對於GLSL之前版本1.30的版本,您想要寫入gl_BackColor內置插件,這些插件可以在頂點着色器中訪問。詳細瞭解GLSL 1.10規範(http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.10.59.pdf)的更多信息或GL_ARB_vertex_shader擴展規範。
gl_FrontColor和gl_BackColor是採用標準化浮點標量的4D RGBA向量。
但是,這將設置所有頂點爲紅色,而不是一個頂點。這是因爲所有頂點都運行相同的頂點着色器。如果要設置單獨的顏色,請將glColorPointer與glDrawArrays,glDrawElements,glDrawRangeElements或glMultiDrawElement一起使用。由glColorPointer設置的頂點顏色可以在頂點着色器中讀取爲gl_Color。頂點着色器中的gl_Color是每個頂點屬性。
要讀取您在頂點着色器中寫入的顏色,請在片段着色器中讀取內置的變化gl_Color。完成的片段應寫入gl_FragColor。
頂點着色例如:
void main()
{
gl_FrontColor = gl_Color;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
片段着色器例子:
void main()
{
gl_FragColor = gl_Color;
}
此外,爲了使頂點着色器設置varyings就像OpenGL的固定功能管線,調用函數ftransform( )。
void main()
{
ftransform();
}
感謝您的回覆。順便說一句,在頂點着色器中使用gl_FrontColor時,似乎片段着色器的定義(至少使用gl_FragColor = glColor)是強制性的。 – 2010-04-01 12:09:55
err,在片段着色器中設置gl_Position? glColor而不是gl_Color?自行變換,而不設置爲gl_Position? – Bahbar 2010-04-02 13:30:52
現在已修復:) – 2010-04-05 23:23:50
- 1. 頂點着色器與頂點
- 2. 6顏色圖頂點着色算法
- 3. Matrix.CreateRotation VS頂點着色器
- 4. 頂點着色器問題
- 5. 從頂點着色器
- 6. 更改頂點着色器中的浮點數(GLSL)
- 7. 無法將頂點着色器中的顏色傳遞給片段着色器
- 8. OpenGL - 着色器中的頂點顏色被交換
- 9. graph-tool:如何更改頂點顏色?
- 10. GLSL:頂點着色器無片段着色片段着色器
- 11. THREE.Line中的頂點顏色
- 12. GLSL點燃頂點着色器
- 13. Jung着色頂點的值
- 14. 頂點着色器中的Direct3D11錯誤頂點轉換
- 15. 頂點着色器中的邊界框
- 16. 頂點着色器中的Phong照明
- 17. 頂點着色器和原始模型的顏色
- 18. 表面着色器中的統一着色器頂點格式
- 19. OpenGL - 頂點着色器顏色沒有傳遞給片段着色器
- 20. 在OpenGL ES 2.0頂點着色器中生成頂點
- 21. C++/OpenGL/SFML頂點着色
- 22. 什麼是頂點着色?
- 23. DirectX - 傳遞給頂點着色器的頂點的維數
- 24. 如何通過着色器管道傳遞頂點顏色?
- 25. Directx的頂點顏色
- 26. 網格VS頂點着色器的頂點結構
- 27. 僅用於某些頂點的頂點着色器
- 28. 在Vulkan中,頂點着色器中頂點的輸出顏色與我在片段着色器中獲得的顏色不同
- 29. 粒子系統的頂點着色器
- 30. Swizzling頂點數組,頂點緩衝區對象和着色器
您使用哪種OpenGL版本? *總是*記住解釋這一點。 – 2010-03-31 13:26:55
GL_ARB_shading_language_100擴展名 – 2010-03-31 13:30:44
OpenGL版本,不是着色器版本。 – 2010-03-31 15:29:33