Recentemente, criei um jogo ( LD21 ) que usa um sombreador de geometria para converter pontos em triângulos texturizados / seleção. Como eu tinha a impressão de que o suporte ao nº 330 era generalizado, escrevi apenas shaders nº 330, mas parece que muito do hardware não tão antigo suporta apenas o nº 130 (de acordo com o GLView)
Agora, como estou familiarizado apenas com a funcionalidade principal # 330, estou tendo problemas para reescrever meus shaders para # 130. O shader de fragmento foi bastante trivial para reescrever, mas só consegui baixar meu shader de vértice e geometria para # 150.
Portanto, é possível reescrever os sombreadores ou exigiria muitas alterações no meu mecanismo de renderização?
Sombreador de geometria
#version 150
layout(points) in;
layout(triangle_strip, max_vertices = 4) out;
uniform mat4 oMatrix;
in VertexData
{
vec4 position;
vec4 texcoord;
vec4 size;
} vert;
out vec2 gTexCoord;
void main()
{
if(vert.position.x>-4f && vert.position.x<4f && vert.position.y>-2f && vert.position.y<2f)
{
gTexCoord=vec2(vert.texcoord.z,vert.texcoord.y);
gl_Position = vert.position + vec4(vert.size.x,vert.size.y,0,0);
EmitVertex();
gTexCoord=vec2(vert.texcoord.x,vert.texcoord.y);
gl_Position = vert.position + vec4(0.0,vert.size.y,0,0);
EmitVertex();
gTexCoord=vec2(vert.texcoord.z,vert.texcoord.w);
gl_Position = vert.position + vec4(vert.size.x,0.0,0,0);
EmitVertex();
gTexCoord=vec2(vert.texcoord.x,vert.texcoord.w);
gl_Position = vert.position;
EmitVertex();
EndPrimitive();
}
}
Sombreador de vértice
#version 150
#extension GL_ARB_explicit_attrib_location : enable
layout (location = 0) in vec2 position;
layout (location = 1) in vec4 textureCoord;
layout (location = 2) in vec2 size;
uniform mat4 oMatrix;
uniform vec2 offset;
out VertexData
{
vec4 position;
vec4 texcoord;
vec4 size;
} outData;
void main()
{
outData.position = oMatrix * vec4(position.x+offset.x,position.y+offset.y,0,1);
outData.texcoord = textureCoord;
outData.size = oMatrix * vec4(size.x,size.y,0,0);
}