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

本文探讨了在OpenGL ES中导入和呈现多个模型文件的公共部分,包括层对象配置、图形上下文设置、纹理和灯光管理。作者强调将不变的部分抽象出来,以提高代码复用性和性能,同时指出在处理模型动态加载时避免不必要的性能损耗。内容涵盖了视角变换、顶点更新、纹理更新和灯光更新等关键步骤,以及如何初始化和销毁相关对象。
摘要由CSDN通过智能技术生成

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

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

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

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


为什么要提这个话题呢,是因为多个模型文件obj导入到OpenGL ES中,会有多个纹理库,多个几何体,灯光暂时还不知道咋弄估计也会有多个吧,再有多个......还没理太清还我有多少个多个!

不过至少,就这些是要根据每个Obj中承载的内容不同来呈现的,那么其它的工作就应该是可以共用,统一进行设置,不需要再牵扯到每一个obj,不用因为obj的个数和各自内部来考虑了。

另外,也可以随时根据obj的动态加载,来进行重绘,反复地重启应用,不光我闲麻烦,估计用户也觉得开发这应用的人真二......一系列。

总之,我得先把这些公共的部分拆出来,针对Obj的部分,也得做成能重复使用的,要不然有几个obj我要做几次,代码多得自已都乱了,那估计遇到问题,就不甭想找出来解决掉了。

提纲挈领估计就是这意思吧,得有纲有目,思路才清楚,清晰的思路,不用多费脑筋,有些问题的解决办法自然就出来了,何况,我这后续一大堆事儿,还没头绪呢。


那么接下来就看看总共有哪几部分:此处声明,以下代码均来自罗朝辉的博文示例,再次感谢,虽然你的博文写的有点粗犷,但至少花些时间,还得获得了大部分框架!


第一部分 公共部分

1、层对象要改成支持 OpenGL ES 的;

+ (Class)layerClass {
    
    // Support for OpenGL ES
    return [CAEAGLLayer class];
}

2、设置 OpenGL ES 层对象实例的属性:默认的属性是透明的,画上去也看不到,不就白辛苦了吗

- (void)setupLayer {
    
    _eaglLayer = (CAEAGLLayer*) self.layer;
    
    // 使 CALayer 可见
    _eaglLayer.opaque = YES;
    
    // 设置绘制属性:
    _eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                     [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking,
                                            kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
}

层对象的属性  drawableProperties 是个NSDictionary 类型,以上代码中给出了两个在绘制时要使用的属性值,估计象 OpenGL ES 这类状态机的玩意,肯定会有默认值,你不提供,也照样工作,只不过不是按你预期工作而已。这里的两个属性声明与描述附后,简单解释如下:

kEAGLDrawablePropertyRetainedBacking:


kEAGLDrawablePropertyColorFormat:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值