gpt4 book ai didi

opengl-es - OpenGL ES 2.0 着色器最佳实践

转载 作者:行者123 更新时间:2023-12-03 21:03:51 25 4
gpt4 key购买 nike

我一直在寻找 OpenGL 中的着色器示例,并且看到了一些不同的样式。一些着色器专门使用内置类型(即 gl_Vertex)在应用程序代码和着色器之间传输数据。

一些着色器使用不同的类型将数据从顶点传输到片段着色器,而不是 gl_Position 和 gl_FragColor。

一些着色器使用前缀 'in' 和 'out' 来指定数据传输:

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 中编写着色器的首选方式是什么?是否有最佳实践指南?有人可以提供一个顶点和片段着色器的例子,它是“做什么”的光辉例子吗?

谢谢。

最佳答案

  • “ES 2.0”中没有 gl_Vertex。您提供的所有属性都是自定义的。
  • gl_Position 在 ES 2 中不是一个选项,而是一个要求。了解 OpenGL 管道以了解原因。提示:只有在禁用光栅化器(例如,转换反馈)时,它才可能是可选的,但 ES 不支持此功能。
  • 在 ES 2.0 中,顶点属性必须具有“属性”值,并且变量必须声明为“变化”。使用 'in' 和 'out' 代替是在 OpenGL 3+ 下养成的习惯,不能应用于 ES。

  • 最后,您最好的选择是阅读 OpenGL ES 2.0 Specification正如尼可波拉斯所建议的那样。规则第一,最佳实践 - 稍后。祝你好运!

    关于opengl-es - OpenGL ES 2.0 着色器最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7536956/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com