OpenGL ES 灯光,想说爱你并不是很容易的事

简介: OpenGL ES 灯光,想说爱你并不是很容易的事 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

OpenGL ES 灯光,想说爱你并不是很容易的事

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。



头疼!!!坚持把这个总结写完吧,要不,明天又得重新疏理一会儿思路才能开始工作......噢,忘了明天要去看病,明天没的总结分享给大家喽~


最近在重建 OpenGL ES 的工程,把公共部分和Obj重复的部分拆分开,老罗兄弟原有代码的架构已经不能满足需要,但新建也都是基于老罗兄弟的代码做适当增减,核心还是源于老罗兄弟博客,在此表示感谢。

以下代码是绘制的基本结构,在其中可以执行相应的着色器操作,包括顶点缓存、灯光、纹理、矩阵变换:

- (void)glesRender {
    
    // 清除背景颜色
    glClearColor(0.0f, 1.0f, 0.0f, 1);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    // 设置视口
    glViewport(0, 0, self.frame.size.width, self.frame.size.height);
    
    // 准备顶点及纹理缓冲区、灯光及转换矩阵,绘制图形到桢缓冲区
    
    
    // 显示桢缓冲内容
    [_glesContext presentRenderbuffer:GL_RENDERBUFFER];
}

暂时考虑将矩阵变换也作为公共部分,毕竟现在研究的阶段,还没这个必要去深入,只要能各方查看,缩放、平移即可。

那么上面代码中空注释(其实注释本身就是一种伪代码,伪代码与UML这种设计各有千秋,也是设计的一种,所以我总是先写出来伪代码,再去填实际语言代码)部分就应该是:

1、纹理缓存的建立,备用;

2、根据一系列...直到按纹理分组的面来建立顶点缓存;

3、灯光,暂时obj中没有,不过后续考虑ASE,故而留出接口,以备后续扩展;灯光就没什么缓存了,直接弄到着色器中去计算;

以上内容,看似简单,不过对我来说,可是花了很久时间,边研究边总结出来的,哪些相同,哪些不同,哪些公用,哪些私用......


上面提到的1和2基本问题不大,问题是3中所说的灯光,一是暂时还不了解灯光的类型如何在OpenGL ES中处理,二是灯光与纹理的复合使用,之前测试无灯光确完全能显示贴图。


经近期的多方搜集,发现灯光的三种类型:平行光源(太阳)、点光源(灯泡)、投射光源(射灯)需要了解一些理论知识,才能看得懂那些个计算。

另外考虑到,是否纹理贴图与灯光作用和没有灯光作用,只是一种“整景”的方式呢?!

也就是说本来是大白天的,为了要效果,所以整个黑屋子放上灯光,如果把窗帘打开,太阳光一照进来,灯光就完全不起作用了,就把这种整景效果给弄没了呢?

姑且当作,灯光不是为了照亮,而是为了照出不亮的效果部分,与现实正好相反呢?!现实的灯光是为了把黑暗照亮要照亮的部分。

或者从另一个角来说,透明度如果基色是白色,那么透明是从白往不透明状态转换;如果基色是黑色,那么透明度就是从黑往不透明状态转换。


现在真正的了解了,上学是为了什么了!不是为了学到有用的东西,而是为了能学会有用东西的东西;不是为了速度,而是为了加速度;速度是技校的事情,加速度则是大学的事情。


目录
相关文章
|
4月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
49 0
|
12月前
|
存储 编解码 算法
Opengl ES之LUT滤镜(上)
Opengl ES之连载系列
335 0
|
12月前
|
数据安全/隐私保护 开发者
OpenGL ES 多目标渲染(MRT)
Opengl ES连载系列
211 0
|
12月前
|
数据安全/隐私保护 索引
Opengl ES之纹理数组
Opengl ES连载系列
171 0
|
12月前
|
数据安全/隐私保护
Opengl ES之水印贴图
Opengl ES之连载系列
81 0
|
12月前
|
Java 数据安全/隐私保护 Android开发
Opengl ES之矩阵变换(下)
Opengl ES连载系列
81 0
|
12月前
|
Java API 数据安全/隐私保护
Opengl ES之矩阵变换(上)
Opengl ES连载系列
82 0
|
12月前
|
存储
Opengl ES之踩坑记
Opengl ES之连载系列
89 0
|
12月前
|
存储 编解码 算法
Opengl ES之RGB转NV21
Opengl ES连载系列
115 0
|
12月前
|
并行计算 C++
Opengl ES之YUV数据渲染
Opengl ES连载系列
128 0