#version 450 core layout (points) in; layout (triangle_strip, max_vertices = 4) out; in vec4 vColor []; in vec3 vTexCoord []; out vec4 gColor; out vec2 gTex; void main() { vec3 cenPos = gl_in[0].gl_Position.xyz; float sizex = vTexCoord[0].y; float sizey = vTexCoord[0].z; //float size = 0.05; gColor = vColor[0]; float texPos = vTexCoord[0].x; gl_Position = vec4 (cenPos.x - sizex*0.5, cenPos.y - sizey*0.5, cenPos.z , 1); //gl_Position = vec4 (0, 0 , 5 , 1); gTex = vec2 (texPos*0.0078125, 1); EmitVertex(); gl_Position = vec4 (cenPos.x - sizex*0.5, cenPos.y + sizey*0.5, cenPos.z , 1); //gl_Position = vec4 (0, 0.5 , 5 , 1); gTex = vec2 (texPos*0.0078125, 0); EmitVertex(); gl_Position = vec4 (cenPos.x + sizex*0.5, cenPos.y - sizey*0.5, cenPos.z , 1); //gl_Position = vec4 (0.5, 0.5 , -5 , 1); gTex = vec2 ((texPos+1)*0.0078125, 1); EmitVertex(); gl_Position = vec4 (cenPos.x + sizex*0.5, cenPos.y + sizey*0.5, cenPos.z , 1); gTex = vec2 ((texPos+1)*0.0078125, 0); //gl_Position = vec4 (0.5, 0 , -5 , 1); EmitVertex(); EndPrimitive(); }