hi,
I am using opengl v2.0.1.8x.
I am trying to apply a geometry shader to the rendering procedure.
The problem is very unusual (I’ve put a “// ****** Bug here”, before the problem codeline)
#version 120
#extension GL_ARB_geometry_shader4 : enable
in vec3 vertWorldPos[3];
in vec3 vertWorldNormal[3];
out vec3 worldNormal;
out vec3 worldPos;
uniform vec2 WIN_SCALE;
out vec3 dist;
void main(void) {
vec2 sz = WIN_SCALE;
vec2 tt = gl_PositionIn[0].xy;
vec2 t2 = vec2(gl_PositionIn[0].w, gl_PositionIn[0].w);
vec2 p0 = sz * tt / t2; // ****** Bug here
tt = gl_PositionIn[1].xy;
t2 = vec2(gl_PositionIn[1].w, gl_PositionIn[1].w);
vec2 p1 = (sz * tt) / t2; // ****** Bug here
tt = gl_PositionIn[2].xy;
t2 = vec2(gl_PositionIn[2].w, gl_PositionIn[2].w);
vec2 p2 = (sz * tt) / t2; // ****** Bug here
vec2 v0 = p2-p1;
vec2 v1 = p2-p0;
vec2 v2 = p1-p0;
float area = abs(v1.x*v2.y - v1.y * v2.x); // ****** Bug here
dist = vec3(area/length(v0),0,0); // ****** Bug here
worldPos = vertWorldPos[0];
worldNormal = vertWorldNormal[0];
gl_Position = gl_PositionIn[0];
EmitVertex();
dist = vec3(0,area/length(v1),0); // ****** Bug here
worldPos = vertWorldPos[1];
worldNormal = vertWorldNormal[1];
gl_Position = gl_PositionIn[1];
EmitVertex();
dist = vec3(0,0,area/length(v2)); // ****** Bug here
worldPos = vertWorldPos[2];
worldNormal = vertWorldNormal[2];
gl_Position = gl_PositionIn[2];
EmitVertex();
EndPrimitive();
}
Thing is that it seems that the compilationcan not be applied on any code of line (in the geometry) where I am using the / or * operators…
Does anyone know what is wrong with that… and how to fix that?
I checked the version of the opengl I am using, but it seems that this code should work in the earlier versions as well (which I am using, I got quite old legacy “ATI Radeon x1650 GT” card).
Nighthawk.