Shader学习 Hello World!

本文档介绍了Shader的学习过程,起始于一个简单的Hello World示例。内容包括初始化OpenGL ES,加载、编译和链接顶点及片段着色器,创建并使用着色器程序,生成顶点数据缓冲区,以及渲染循环。着重讲解了如何传递projection model view矩阵、顶点位置、纹理坐标和颜色等参数。在顶点着色器中计算光照,将结果传递到片段着色器,最终完成绘制。同时定义了Uniforms(常量)、Attributes(顶点属性)和Varyings(变量)的概念及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来是准备学习有关 光照和阴影算法 的,然后发现都是用shader做的。虽然做游戏有一段时间,主要接触的也是图形学部分,在OpenGL下工作,也就没有学shader了。

几个月前看过那个<GPU编程之阳春白雪与下里巴人>,但没有实践过,但也算稍微有个了解。

这次学习,主要以PowerVR的示例为教程。它有一个帮助手册<Migration from OpenGL ES 1.x to OpenGL ES 2.0 API.1.1f.External>,里面作了shader使用的说明,这是可以跟它的示例程序印证的。前面说的那本书,更全面和偏理论一点,没有相关示例进行验证。

 

第一课 Hello World:

个人整理之后觉得可以如此划分:

1: 初始化OpenGL ES.

2: Load/Compile/Link Vert/Frag shader program.

3: Creat/Use shader program

4: Gen buffer(for vertex data)

5: Render Loop.

    将在shader程序里面用到的参数传进去,如projection model view matrix, vertex pos, uv, color等。

    vert shader 与 frag shader 传参. 例如光照的计算,在vert shader里面用PMVMatrix点乘顶点normal,再点乘光的方向,得出本顶点光照的强度,然后在frag shader里面用这个去乘颜色值.

    draw array.

 

    这里有几个名词:

    Uniforms:程序用它把原始数据传递给shader。主要是比如world view projection matrix, light direction, material等,它在这一段数据渲染过程中是不变的.

    Attributes: 用来传递顶点有关的数据,如pos, normal, uv等,它随顶点的不同而不同,这是跟Uniform的差别所在。

    Varyings: 用来把数据从vertex shader传递到fragment shader.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值