Pregunta

¿Es posible establecer el color de un solo vértice utilizando un programa de sombreador de vértice GLSL, de la misma manera que GL_Position cambia la posición de un vértice?

¿Fue útil?

Solución

Para las versiones de GLSL Prior versión 1.30, desea escribir en el gl_FrontColor o gl_BackColor empotrados, que son variables accesibles en el sombreador de vértice. Lea sobre variaciones en la especificación GLSL 1.10 (http://www.opengl.org/registry/doc/glslangspec.full.1.10.59.pdf) para obtener más información sobre ellos, o la especificación de extensión GL_ARB_VERTEX_SHADER.

gl_FrontColor y gl_BackColor son vectores 4D RGBA que toman escalares de punto flotante normalizados.

Pero esto se establecerá todos Los vértices a rojo, no solo un vértice. Esto se debe a que el mismo sombreador de vértice se ejecuta para todos los vértices. Si desea establecer colores individuales, use glColorPointer Juntos con glDrawArrays, glDrawElements, glDrawRangeElements o glMultiDrawElements. El color de vértice establecido por glColorPointer se puede leer como gl_Color En el sombreador de vértice. gl_Color En el sombreador de vértice hay un atributo por vértice.

Para leer el color que escribió en el sombreador de vértice, en el sombreador de fragmentos, lea el variado integrado gl_Color. Los fragmentos terminados deben escribirse para gl_FragColor.

Ejemplo de sombreador de vértice:

void main()
{
    gl_FrontColor = gl_Color;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

Ejemplo de sombreador de fragmentos:

void main()
{
    gl_FragColor = gl_Color;
}

Además, para que el sombreador de vértice establezca los varios al igual que la tubería de función fija de OpenGL, llame a la función ftransform ().

void main()
{
    ftransform();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top