2012-01-09 19 views
7

Estoy aprendiendo sobre programación 3D con el libro Learning Modern 3D Graphics Programming, pero no estoy teniendo suerte con los sombreadores y GLES 2.0 en iOS. Estoy trabajando desde la plantilla del juego xcode 4 opengl, aunque con cambios que tienen sentido para el primer ejemplo del libro.Diferencias de sombreado en iOS

Los primeros sombreadores del libro no se compilarán con muchos errores diferentes. El primer sombreador de vértices

#version 330 

layout(location = 0) in vec4 position; 
void main() 
{ 
    gl_Position = position; 
} 

Se queja de la versión de la versión y se niega a permitir el uso del diseño como especificador. Finalmente logré hacer esto para construir.

attribute vec4 position; 
void main() 
{ 
    gl_Position = position; 
} 

Una vez más el primer fragment shader se niega a construir debido a la versión, y no permitirá la salida en un segmento mundial

#version 330 
out vec4 outputColor; 
void main() 
{ 
    outputColor = vec4(1.0f, 1.0f, 1.0f, 1.0f); 
} 

Con el error

ERROR: 0:10: Invalid qualifiers 'out' in global variable context 

Bueno por lo que Logré obtener el primer ejemplo (un triángulo simple) para trabajar con los siguientes sombreadores.

de sombreado de vértices

#version 100 
void main() 
{ 
    gl_FragColor = vec4(1.0,1.0,1.0,1.0); 
} 

fragmento shader

attribute vec4 position; 
void main() 
{ 
    gl_Position = position; 
} 

Así las trabajadas y yo probamos el primer ejemplo de color en el siguiente capítulo.

#version 330 
out vec4 outputColor; 
void main() { 
    float lerpValue = gl_FragCoord.y/500.0f; 
    outputColor = mix(vec4(1.0f, 1.0f, 1.0f, 1.0f), 
     vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpValue); 
} 

Incluso trabajando en torno a los problemas fijos de eariler, la versión, en la f no flotadores que se les permita, El shader todavía se niega a construir con este error

ERROR: 0:13: 'float' : declaration must include a precision qualifier for type 

Efectivamente se quejaba de flotador.

He intentado buscar en Google para encontrar una explicación de las diferencias, pero ninguna de ellas aparece. También he leído los documentos de Apple en busca de consejos y no encontré ayuda. No estoy seguro de dónde mirar, o qué estoy haciendo realmente mal.

Respuesta

13

añadir esta en la parte superior del shader: precision mediump float;

o precision highp float;

depende de sus necesidades.

Cuestiones relacionadas