在使用OpenGL函数加载纹理到图形時经常遇到纹理上下颠倒的问题。原因是因为OpenGL要求纹理坐标翻转的公式原点在图片最下面如图:
而图片信息中的原点一般都在最上方,一行行记录下来的就会导致整个图片上下颠倒了。
从这个思路触发共有三种办法解决问题:
┅.翻转顶点信息中的纹理坐标翻转的公式
因为纹理坐标翻转的公式的范围是0-1所以翻转的话都统一用1去减
二.翻转顶点Shader中的纹理坐标翻转的公式
基于方法一,更聪明的办法就是直接在Shader中翻转纹理Y轴坐标翻转的公式
上面都是直接针對问题的解决办法反其道而行之,我们也可以直接翻转顶点这样纹理就正了:
在翻转顶点时,就不是直接对Y值用1去减因为顶点的取徝范围是-1 - 1 ,所以我们直接加上负号做翻转即可
这篇总结,参考了一个很好的OPENGL学习网站