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

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中处理,二是灯光与纹理的复合使用,之前测试无灯光确完全能显示贴图。

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

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

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

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

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

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

时间: 2024-08-01 16:40:42

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

OpenGL ES 烘焙图遇上灯光会是什么样?!

OpenGL ES 烘焙图遇上灯光会是什么样?! 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 我也期待着.先占个位,研究出来,再填这个坑. 就因为一个破图的尺寸,让我还得继续等待看这一美景.

OpenGL ES 同样的灯光计算在顶点着色器和在片元着色器中计算有什么不同

OpenGL ES 同样的灯光计算在顶点着色器和在片元着色器中计算有什么不同 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 同样一段计算灯光的算法如下: vec4 combineLight (

OpenGL ES 正反面的灯光照射初探

OpenGL ES 正反面的灯光照射初探 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 在  OpenGL ES 中如何实现在房间中查看屋内摆设的效果 中我们已经做到了,只查看一个几何体的内部

关于OpenGL ES中灯光与材质的疑惑

关于OpenGL ES中灯光与材质的疑惑 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 在OpenGL ES 2.0 中,灯光对几何体的影响,是在着色器中进行计算后来作用于每个片元的颜色的.

OpenGL ES 多个模型导入呈现的公共部分

OpenGL ES 多个模型导入呈现的公共部分 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 为什么要提这个话题呢,是因为多个模型文件obj导入到OpenGL ES中,会有多个纹理库,多个几何

OpenGL ES 片元着色器中 int 类型精度不匹配的问题分析

OpenGL ES 片元着色器中 int 类型精度不匹配的问题分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 最终解决方法补充: ------------------------ 经过反复

OpenGL ES在移动设备有限资源下的性能与效果的综合平衡

OpenGL ES在移动设备有限资源下的性能与效果的综合平衡 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 要想性能好,资源消耗低,那么效果肯定要差些: 要想效果好,那么消耗的资源肯定要高:

OpenGL ES 背面消隐特性在 iOS 设备与模拟器上的运行效果细微差异

OpenGL ES 背面消隐特性在 iOS 设备与模拟器上的运行效果细微差异 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 2014-01-09补充 ---------------------

OpenGL ES 在iOS平台加载3dmax导出的obj模型

OpenGL ES 在iOS平台加载3dmax导出的obj模型 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以下注释部分涉及到文件按行读取与块的使用. 关于obj文件格式,后续补充,需要说明