我只是將一些幾何着色器弄成一個GL_POINTS列表並輸出一個帶有三角形條紋的框。我有它基本上工作,但是當我放大/縮小或平移三角形帶走遍各地,並沒有保持其在世界上的位置,但仍然正確畫框。幾何着色器 - 指向不保持世界位置的三角形條紋
例如,如果我給輸入端(5,5,0),它會繪製這些點的三角形帶,使一個框:
(5,5,0)
(5.5,5, 0)
(5,5.5,0)
(5.5,5.5,0)
頂點着色器:
// Vertex Shader
#version 130
in vec4 vVertex;
void main(void)
{
gl_Position = gl_ModelViewProjectionMatrix * vVertex;
}
幾何着色器:
version 130
#extension GL_EXT_geometry_shader4 : enable
void main(void)
{
vec4 a;
vec4 b;
vec4 c;
vec4 d;
int i = 0;
for(i = 0; i gl_VerticesIn; i++)
{
a = gl_PositionIn[i];
//a.x -= 0.5;
//a.y -= 0.5;
//a.z = 0.0;
gl_Position = a;
EmitVertex();
b = gl_PositionIn[i];
b.x += 0.5;
//b.y -= 0.5;
//b.z = 0.0;
gl_Position = b;
EmitVertex();
d = gl_PositionIn[i];
//d.x -= 0.5;
d.y += 0.5;
//d.z = 0.0;
gl_Position = d;
EmitVertex();
c = gl_PositionIn[i];
c.x += 0.5;
c.y += 0.5;
//c.z = 0.0;
gl_Position = c;
EmitVertex();
}
EndPrimitive();
}
我很可能錯過了一些愚蠢的東西。
所以我應該改變我的頂點着色器:gl_Position = gl_ModelViewMatrix * vVertex;然後在我的幾何着色器中,我應該爲所有verticies執行此操作:gl_Position = a * gl_ProjectionMatrix; – cuatro 2010-10-31 15:19:37
這就是我會嘗試的,是的。 – Stringer 2010-10-31 15:24:01
當平移/縮放時除了現在盒子也扭曲外,還存在同樣的問題。 – cuatro 2010-10-31 15:24:02