我一直在尋找OpenGL中着色器的示例,並且我已經看到了一些不同的樣式。一些着色器專門使用內置類型(即,gl_Vertex)來傳遞應用程序代碼和着色器之間的數據。OpenGL ES 2.0着色器最佳實踐
一些着色器使用不同的類型將數據從頂點傳輸到片段着色器,而不是使用gl_Position和gl_FragColor。
某些着色器使用前綴「中」和「出」來指定數據傳輸:
in vec3 vertex;
void main() {
gl_Position = projection_matrix * modelview_matrix * vec4(vertex, 1.0);
}
...而其他人使用的屬性:
attribute vec4 vertex_attrib;
attribute vec4 tex_coord_attrib;
attribute vec4 color_attrib;
uniform mat4 mvp_matrix;
uniform mat4 texture_matrix;
varying vec4 frag_color;
varying vec2 tex_coord;
void main(void)
{
gl_Position = mvp_matrix * vertex_attrib;
vec4 transformed_tex_coord = texture_matrix * tex_coord_attrib;
tex_coord = transformed_tex_coord.st/transformed_tex_coord.q;
frag_color = color_attrib;
}
我的問題是,什麼是GLES 2.0中的首選方法是編寫着色器?是否有最佳實踐指南?有人可以提供一個頂點&片段着色器的例子,這是一個'做什麼'的光輝榜樣?
謝謝。
'in'和'out'可以從宏中得到一些幫助。 – user1095108