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

简介: OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

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减,取补,是否可以变换过来呢?

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



目录
相关文章
|
6月前
|
数据安全/隐私保护 iOS开发
使用HBuilder平台打包并上传iOS应用到App Store的完整教程
使用HBuilder平台打包并上传iOS应用到App Store的完整教程
|
8月前
|
监控 Android开发 iOS开发
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
参考代码:弹性扩缩容如何实现?System.out.println("扩容:增加直播平台实例"); currentCapacity++; } private void scaleDown() { System.out.println("缩容:减少直播平台实例");
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
|
15天前
|
存储 缓存 iOS开发
实现iOS平台的高效图片缓存策略
【4月更文挑战第4天】在移动应用开发中,图片资源的加载与缓存是影响用户体验的关键因素之一。尤其对于iOS平台,由于设备存储和内存资源的限制,设计一个高效的图片缓存机制尤为重要。本文将深入探讨在iOS环境下,如何通过技术手段实现图片的高效加载与缓存,包括内存缓存、磁盘缓存以及网络层面的优化,旨在为用户提供流畅且稳定的图片浏览体验。
|
1月前
|
运维 监控 安全
应用研发平台EMAS常见问题之sophix ios flutter热更新如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
77 0
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
181 2
|
2月前
|
监控 API iOS开发
克魔助手 - iOS性能检测平台
众所周知,如今的用户变得越来越关心app的体验,开发者必须关注应用性能所带来的用户流失问题。目前危害较大的性能问题主要有:闪退、卡顿、发热、耗电快、网络劫持等,但是做过iOS开发的人都知道,在开发过程中我们没有一个很直观的工具可以实时的知道开发者写出来的代码会不会造成性能问题,虽然Xcode里提供了耗电量检测、内存泄漏检测等工具,但是这些工具使用效果并不理想(如Leak无法发现循环引用造成的内存泄漏)。所以这篇文章主要是介绍一款实时监控app各项性能指标的工具,包括CPU占用率、内存使用量、内存泄漏、FPS、卡顿检测,并且会分析造成这些性能问题的原因。
|
7月前
|
开发工具 Android开发 iOS开发
Android、iOS平台RTMP/RTSP播放器实现实时音量调节
介绍移动端RTMP、RTSP播放器实时音量调节之前,我们之前也写过,为什么windows播放端加这样的接口,windows端播放器在多窗口大屏显示的场景下尤其需要,尽管我们老早就有了实时静音接口,相对实时静音来说,播放端实时音量调节粒度更细,从[0, 100],用户体验更好。
128 1
|
4月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
49 0
|
4月前
|
API 开发工具 iOS开发
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
在应用研发平台EMAS中,ios的推送有没有办法在app端设置在收到通知后是否展示的逻辑
32 1
|
7月前
|
iOS开发 Perl
iOS平台上的AliVRPlayer的使用
iOS平台上的AliVRPlayer的使用
70 1