2011-09-22 30 views
5

是否可以從幾何着色器輸出新的基元類型而非輸入?我想輸入一個點並渲染一個三角形。這個點將被用作這個三角形的中心。如果沒有,是否還有其他選擇只輸入點並渲染由該點定義的其他一些幾何圖形?使用幾何着色器創建新的基元類型

與答案的幫助這裏是幾何着色器做的正是我要的(如果有的話需要的人):

#version 120 
#extension GL_EXT_geometry_shader4 : enable 

layout(points) in; 
layout(triangle_strip) out; 

void main() 
{ 
    gl_Position = gl_in[0].gl_Position; 
    EmitVertex(); 
    gl_Position = gl_in[0].gl_Position+vec4(1,0,0,0); 
    EmitVertex(); 
    gl_Position = gl_in[0].gl_Position+vec4(0, 1, 0, 0); 
    EmitVertex(); 
    EndPrimitive(); 
} 

回答

4

是的,這是完全可能的,這是幾何着色器是有什麼。只需在應用程序中使用glProgramParameteri或直接在着色器中使用更現代的layout語法,將輸入基元類型指定爲點,並將輸出基元類型指定爲三角形(或者更確切地說三角形條帶,無論它是否只是單個三角形)。

+0

請注意,您並沒有真正選擇語法。或者說,您選擇的語法是基於您是使用幾何着色器的擴展版本還是使用核心功能。不要試圖混合兩者。 –

+0

@Nicol我實際上還沒有使用幾何着色器。感謝您的澄清。 –