OpenGL纹理上下颠倒翻转的三种解决办法
http://blog.csdn.net/narutojzm1/article/details/51940817
-
综述
在使用OpenGL函数加载纹理到图形时,经常遇到纹理上下颠倒的问题。原因是因为OpenGL要求纹理坐标原点在图片最下面,如图:
而图片信息中的原点一般都在最上方,一行行记录下来的,就会导致整个图片上下颠倒了。
如图:
从这个思路触发共有三种办法解决问题:一.翻转顶点信息中的纹理坐标
原始顶点如图:
因为纹理坐标的范围是0-1,所以翻转的话都统一用1去减得到正确的图片:
二.翻转顶点Shader中的纹理坐标
基于方法一,更聪明的办法就是直接在Shader中翻转纹理Y轴坐标
三.翻转顶点
上面都是直接针对问题的解决办法,反其道而行之,我们也可以直接翻转顶点,这样纹理就正了:
在翻转顶点时,就不是直接对Y值用1去减,因为顶点的取值范围是-1 - 1 ,所以我们直接加上负号做翻转即可这篇总结,参考了一个很好的OPENGL学习网站
https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/,
大力推荐
版权声明:本文为博主原创文章,未经博主允许不得转载。
OpenGL纹理上下颠倒翻转的三种解决办法的更多相关文章
- 转:extjs 添加loading状态的三种解决办法:
extjs 添加loading状态的三种解决办法: 方法一: //materialGrid 指需要显示loading状态的控件id var o=Ext.getCmp('materialGrid'); ...
- PHP中出现Notice: Undefined index的三种解决办法
前一段做的一个PHP程序在服务器运行正常,被别人拿到本机测试的时候总是出现“Notice: Undefined index:”这样的警告,这只是一个因为PHP版本不同而产生的警告(NOTICE或者WA ...
- 总是弹出visual studio 实时调试器 三种解决办法
最近服务器老是弹出visual studio 实时调试器很是郁闷呀.关还关不掉.怎么解决呢 ,现像如下图所示: 下面我们一起来分析一下这种情况的原因: 弹出应用程序: Visual Studio 实时 ...
- 电脑开机失败提示"用户配置文件服务登录失败"的三种解决办法
最近遇到这样一个怪现象,就是每次打开电脑输入密码,突然提示"User Profile Service 服务未能登录,无法加载用户配置文件",然后就没办法正常开机了,为什么会这样呢? ...
- asp.net中URL参数传值中文乱码的三种解决办法
在做Asp.Net开发的时候,参数传递中文时,经常会遇到页面乱码的问题,下面是在网上收集的相关资料,请大家参考: 解决的方法一般有3种: 1.设置web.config文件 <system.web ...
- 【转】android加载大量图片内存溢出的三种解决办法
方法一: 在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数 * @return ...
- 无法连接到WMI提供程序 三种解决办法
无法连接到WMI 提供程序 请注意,你只能使用SQL Server 配置管理器来管理SQL Server 2005服务器.找不到指定的模块.[0x8007007e] 解决方案1: 检查一下 windo ...
- 微信 AES 解密报错 Illegal key size 三种解决办法
微信 AES 解密报错 Illegal key size Java 环境 java version "1.8.0_151" Java(TM) SE Runtime Environm ...
- Spring Boot Maven Plugin打包异常及三种解决方法:Unable to find main class
[背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没 ...
随机推荐
- Android开发学习秘籍笔记(十九)
吼.花了2天最后做出了一个类似于蓝牙串口助手功能的小程序,事实上也是实习公司的要求---有一个蓝牙无线扫描枪,要求终端能够通过蓝牙连接到该设备,而且蓝牙无线扫描枪扫描二维码或者条形码的时候能够将二维码 ...
- TP id 对字符串的查找
// 还剩的图片的id $oldPid = implode(',', $_POST['OldGoodsPic']); // 从数据库中找需要出删除了的 FIND_IN_SET(id,'$oldPid' ...
- load data导入数据之csv的用法
今天总结一下:csv格式文件导入的方法. 1.准备数据表:CSV
- window linux IPC ftok BY_HANDLE_FILE_INFORMATION
看这题目就很乱,心情当然也是不怎么美好了.前一段时间做了一个项目,AIX(Unix的一种)中的一个系统向WINDOWS移植,开发环境由IBM的C/C++(叫什么忘记了,好像是xlC)变为VC++. 这 ...
- VS+mysql+EF搭建
2016年7月6日更新: vs2010只需要安装mysql的.net connector就可以 vs2012, vs2015都需要安装.net connector + ODBC connector才行 ...
- Android无线测试之—UiAutomator编译与运行测试代码
一.创建build文件 android create uitest-project -n <jars> -t 1 -p <workspace path> 其中-n后面跟的是要发 ...
- 【discuz】G变量注解之 $_G['member'] 全局当前登录者信息
print? <?php G变量的使用方法: 直接复制下面的变量放到discuzx模板需要的位置即可! 例如:$_G['style'][boardlogo] 刷新后就会 显示一张logo 全局当 ...
- Ants(二分图最佳完美匹配)
Ants Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6904 Accepted: 2164 Special Ju ...
- Java实现单例模式的两种方式
单例模式在实际开发中有很多的用途,比如我们在项目中常用的工具类,数据库等资源的连接类.这样做的好处是避免创建多个对象,占用内存资源,自始自终在内存中只有一个对象为我们服务. 单例对象一般有两种实现方式 ...
- delphi 创建服务,安装与卸载服务
运行Delphi7,选择菜单File-->New-->Other--->Service Application.将生成个服务框架.将工程保存为ServiceDemo.dpr和Unit ...