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

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



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

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    拍立淘---试妆魔镜 OpenGL ES 2.0 框架及性能优化
  • 7
    opengl 教程(5) shader(2) uniform变量
  • 8
    《基于MFC的OpenGL编程》Part 15 Selection
  • 9
    关于 OpenGL GLU 的相关介绍和资源链接
  • 10
    NeHe的OpenGL教程5(Bang翻译Delphi版)-如何绘制立方体
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    143
  • 7
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    235
  • 8
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    90
  • 9
    深入探索iOS开发中的SwiftUI框架
    145
  • 10
    ios样式开关按钮jQuery插件
    60