OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究

OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究

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

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

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

(一大疑惑,为什么android上关于OpenGL ES 开发的资料很多,确涉及该主题关键字的搜索结果了了无几呢?!不会是关键字不对吧......)

初步分析,

一是有可能是没倒,可能我搞错了三维中的正立方向;

二是确实倒了,可能由于 QuarzCore 库在 iOS 的UIKit空间中绘制本身存在的倒置问题导致;

QuarzCore 库在 iOS 的UIKit空间中绘制本身存在的倒置问题,其解决有两种方案:

1、将图片先在临时绘制上下文中翻转绘制,然后再用 QuarzCore 按正常来绘制,这样把一个倒着的图象倒着画,一定会是正着的了,所谓的正倒是指内容;

2、在用 QuarzCore 绘制之前,先把当前上下文倒过来,再绘制,在倒着的画板上,倒着画,画出来的一定是正的,这样正着看就没问题了,但是否需要把上下文再正过来,需要进一步测试;

以上问题,究其根结,是因为在屏幕绘图空间中,就相当于一张画板,UIKit 和 QuarzCore 所选取的 y 轴的原点和方向不同导致的,前者坐标原点在左上角,y 轴正方向从上向下;而 QuarzCore 坐标原点选在左下角,y 轴正方向从下向上;

虽然分析的挺明白,实际试了近一天,各种情况和方法都试了,还是无法在 OpenGL 中正着把图片贴上去。

继续分析,

一是有可能某个细节部位导致,这时真的需要休息一下,否则就是白耽误工夫,人家讲,一个人藏的东西,十个人都找不到,更何况自已藏忘了的呢?@!:)

二是,还有一个关键问题,如果是将渲染缓冲区中图像呈现到视图中时出现的问题,那么几何体应该也是倒着的,但几何体是正着的,说明不是这个问题,而是OpenGL ES往几何体面上贴图时出现的问题。

偿试将纹理贴图倒过来再用,没有达到预期效果。

由于是OpenGL ES内部往上贴图的时侯,贴反了,这个暂时还不知如何去处理,也许通过纹理坐标的变换能解决,但如何变换还不知道。

那么先用Photoshop把图片倒过来,这样一来,OpenGL ES内部往上贴图倒着贴倒立的图片,显示出来就是正的了。

后又想到,纹理坐标最大为1,那么想掉过来的话,那就把 y 坐标用1减,取补,是否可以变换过来呢?

实际测试好像是不行,不过我是直接在着色器中对其进行处理的,看来并不能达到预期目的,还得想想,怎么能实施这一测试方案。

时间: 2024-09-08 14:50:24

OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究的相关文章

OpenGL ES教程VI之纹理贴图(原文对照)

注:又是一篇,是否有人能解释得清楚,2是重复两次,那么是否N就是重复N次呢?接近1.0的坐标值整数部分加上几就是重复几次吗?这个好像之前验证过不一定的. 转自:http://melord.iteye.com/blog/1126135 OpenGL ES教程VI之纹理贴图(原文对照) 博客分类:  J2ME,Android AndroidOpenGL ES  OpenGL ES Tutorial for Android – Part VI – Textures December 30th, 201

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

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

罗朝辉 《OpenGL ES 2.0 iOS教程》完整列表

这一天,打开关,关了搜,搜了再打开,反反复复找老罗的博客文章,看来还是得建个置顶,方便自已,方便他人. 再次感谢老罗,越往后研究,越感觉到,老罗之前"啰里巴嗦"的这些基本知识,眼下真如宝典般有用!谢谢. 水总是在渴的时侯被人感觉带得少了,其余时间再少的水,都歉多,歉沉! 罗朝辉 <OpenGL ES 2.0 iOS教程>完整列表 [移动开发] [OpenGL ES 08]Per-Pixel Light及卡通效果 [OpenGL ES 08]Per-Pixel Light及卡

OpenGL ES 纹理贴图的重复与嵌位概念理解

OpenGL ES 纹理贴图的重复与嵌位概念理解 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 以下有一篇转载的Android中关于纹理贴图规则的文章,很不多. 不过我这里是想要深入研究如果让

《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.2节Android平台的特点及未来的趋势

1.2 Android平台的特点及未来的趋势 Android 3D游戏开发技术宝典--OpenGL ES 2.0 Android平台基于Linux,其不仅继承了Linux的各种优良特性,同时由于"Android之父"Andy Rubin的先进理念,使得Android平台又增加了许多非常具有吸引力的新特性.这不仅给终端用户带来了非凡的体验,还大大减轻了Android应用开发者的工作量与难度. 1.2.1 全新理念带来的体验风暴 Android是具有开源性质的手机终端解决方案,开发人员可以

OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析

OpenGL ES 贴图图片是否有 Alpha 通道以及图片大小导致无法显示帖图的原因分析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 如下挖的坑,现在填一下! 1.Alpha通道的问题,在

OpenGL ES 可用纹理单元数量与大量纹理的思考

OpenGL ES 可用纹理单元数量与大量纹理的思考 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 2013-12-29更新: 写完下面这些,感觉思路有些清晰了,可是我的中心意思,还没表达出来

OpenGL ES 纹理参数设置方法 glTexParameter

OpenGL ES 纹理参数设置方法 glTexParameter 太阳火神的美丽人生 (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的顶点属性信息,包括几何顶点坐标.纹理坐标和法线坐标. 几何顶点坐标,不用说了,用