2012-09-07 72 views
0

是否有可能從幾何着色器只導出三角形而不導出三角形?這使一些有趣的可能性。 OpenGL 3.3。我可以在幾何着色器中輸出三角形而不是三角形條嗎?

glProgramParameteriARB(mVoxelShd, GL_GEOMETRY_OUTPUT_TYPE_ARB, GL_TRIANGLE_STRIP); 

指定巫術輸出模式執行着色器。如果我嘗試:

glProgramParameteriARB(mVoxelShd, GL_GEOMETRY_OUTPUT_TYPE_ARB, GL_TRIANGLES); 

它編譯和工作正常,但它顯示相同的三角形條。

另外,GLSL語言規範3.3:

爲幾何形狀着色器輸出佈局限定符標識符是

  • 佈局限定符ID
  • line_strip
  • triangle_strip
  • max_vertices = i nteger-constant

這裏似乎沒有「三角形」。

+0

請注意'glProgramParameteriARB'不是3.3。這不是3.3的工作原理;那就是ARB_geometry_shader4,它與核心[Geometry Shaders](http://www.opengl.org/wiki/Geometry_Shader)不同。 –

+0

這是一個有用的觀察。這意味着它的語言規範大部分是正確的核心功能,而ARB和EXT可以採用不同的規則? – Palax

+0

只有[核心擴展](http://www.opengl.org/wiki/OpenGL_Extensions#Core_Extensions)需要具有與核心功能完全相同的語義和功能。對於所有其他擴展,核心功能不具有與擴展版本匹配的*。 GLSL在ARB_shader_objects和GL 2.0版本之間發生了顯着的變化。 –

回答

1

我的錯誤,似乎獨立的三角形可以通過在每個指定的三角形序列之後使用EndPrimitive()在幾何着色器中導出。這看起來更加強大。三角形條和獨立三角形都可以從單個着色器創建,而不會更改幾何輸出類型。

+0

我相信這隻適用於> 4.0(GLSL 400)。 – sdasdadas