opengl
Sombreadores
Buscar..
Sintaxis
- #version version_number // La versión GLSL que estamos usando
- void main () {/ * Code * /} // Función principal de Shader
- en nombre del tipo; // Especifica un parámetro de entrada - GLSL 1.30
- escriba el nombre; // Especifica un parámetro de salida - GLSL 1.30
- nombre de tipo inout; // Parámetro para entrada y salida - GLSL 1.30
Parámetros
Parámetro | Detalles |
---|---|
tipo | El tipo de parámetro, tiene que ser un tipo incorporado GLSL. |
Observaciones
Para especificar qué versión de GLSL debe usarse para compilar un sombreado, use el preprocesador de versión, por ejemplo, #version 330
. Cada versión de OpenGL es necesaria para admitir versiones específicas de GLSL . Si un preprocesador #version
no está definido en la parte superior de un sombreado, se usa la versión predeterminada 1.10.
Shader para renderizar un rectángulo de color
Un programa de sombreado, en el sentido de OpenGL , contiene una serie de sombreadores diferentes. Cualquier programa de sombreado debe tener al menos un sombreado de vértice , que calcula la posición de los puntos en la pantalla, y un sombreador de fragmentos , que calcula el color de cada píxel. (En realidad, la historia es más larga y compleja, pero de todos modos ...)
Los siguientes sombreadores son para #version 110
, pero deberían ilustrar algunos puntos:
Sombreador de vértices:
#version 110
// x and y coordinates of one of the corners
attribute vec2 input_Position;
// rgba colour of the corner. If all corners are blue,
// the rectangle is blue. If not, the colours are
// interpolated (combined) towards the center of the rectangle
attribute vec4 input_Colour;
// The vertex shader gets the colour, and passes it forward
// towards the fragment shader which is responsible with colours
// Must match corresponding declaration in the fragment shader.
varying vec4 Colour;
void main()
{
// Set the final position of the corner
gl_Position = vec4(input_Position, 0.0f, 1.0f);
// Pass the colour to the fragment shader
UV = input_UV;
}
Sombreador de fragmentos:
#version 110
// Must match declaration in the vertex shader.
varying vec4 Colour;
void main()
{
// Set the fragment colour
gl_FragColor = vec4(Colour);
}