Estoy escribiendo mi propio sombreador con OpenGL, y estoy perplejo por qué este sombreador no se compilará. ¿Alguien más podría echarle un vistazo?¿Por qué no compilará este GLSL Vertex Shader?
Lo que estoy pasando como un vértice es de 2 flotadores (separados como bytes) en este formato:
Float 1:
Byte 1: Position X
Byte 2: Position Y
Byte 3: Position Z
Byte 4: Texture Coordinate X
Float 2:
Byte 1: Color R
Byte 2: Color G
Byte 3: Color B
Byte 4: Texture Coordinate Y
y este es mi shader:
in vec2 Data;
varying vec3 Color;
varying vec2 TextureCoords;
uniform mat4 projection_mat;
uniform mat4 view_mat;
uniform mat4 world_mat;
void main()
{
vec4 dataPosition = UnpackValues(Data.x);
vec4 dataColor = UnpackValues(Data.y);
vec4 position = dataPosition * vec4(1.0, 1.0, 1.0, 0.0);
Color = dataColor.xyz;
TextureCoords = vec2(dataPosition.w, dataColor.w)
gl_Position = projection_mat * view_mat * world_mat * position;
}
vec4 UnpackValues(float value)
{
return vec4(value % 255, (value >> 8) % 255, (value >> 16) % 255, value >> 24);
}
Si necesitas más información, estaré feliz de cumplir.
Copie y pegue el mensaje de error. – tibur
¿Cómo recibo un mensaje de error? Obtengo uno cuando llamo a glGetProgramInfoLog, pero eso es solo "Vertex shader (s) no se compiló con éxito antes de llamar glLinkProgram(). Link falló". – Azzi777
@ Azzi777: existe glGetShaderInfoLog, que funciona cuando glCompileShader falla. Siempre debe verificar el estado de compilación de los objetos del sombreador y los objetos del programa. –