综述

在使用OpenGL函数加载纹理到图形时,经常遇到纹理上下颠倒的问题。原因是因为OpenGL要求纹理坐标原点在图片最下面,如图:

而图片信息中的原点一般都在最上方,一行行记录下来的,就会导致整个图片上下颠倒了。 
如图:

从这个思路触发共有三种办法解决问题:

一.翻转顶点信息中的纹理坐标

原始顶点如图:

因为纹理坐标的范围是0-1,所以翻转的话都统一用1去减

得到正确的图片:

二.翻转顶点Shader中的纹理坐标

基于方法一,更聪明的办法就是直接在Shader中翻转纹理Y轴坐标

三.翻转顶点

上面都是直接针对问题的解决办法,反其道而行之,我们也可以直接翻转顶点,这样纹理就正了:

在翻转顶点时,就不是直接对Y值用1去减,因为顶点的取值范围是-1 - 1 ,所以我们直接加上负号做翻转即可

这篇总结,参考了一个很好的OPENGL学习网站 
https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/, 
大力推荐

来源: http://blog.csdn.net/narutojzm1/article/details/51940817

转载于:https://www.cnblogs.com/bokeofzp/p/5967512.html

OpenGL纹理上下颠倒翻转的三种解决办法(转)相关推荐

  1. win10在设备管理器里找不到蓝牙的三种解决办法

    一些使用win10的小伙伴在设备管理器控制面板中找不到蓝牙,导致无法进行相应的实际操作.那win10在设备管理器里找不到蓝牙怎么回事呢?下面小编为这个问题带来了解决方法,一起来看看吧. win10在设 ...

  2. Win11的两个实用技巧系列之解决dns异常的三种方法、win10/win11卡顿的三种解决办法

    电脑dns异常怎么修复win10? Win10解决dns异常的三种方法 电脑dns异常怎么修复win10?最近有很多win10用户遇到dns配置错误的问题,这让用户非常苦恼,下面我们就来看看Win10 ...

  3. linux装win之后C盘爆满,win7c盘突然爆满的三种解决办法

    win7c盘突然爆满怎么办?前段时间有用户和我们反馈,自己电脑原来都是好好的,突然有一天变得非常卡顿,打开计算机一看C盘处于爆满的红色状态,明明之前还有很多空间,这是什么原因呢?小编今天就来告诉大家w ...

  4. 总是弹出visual studio 实时调试器 三种解决办法

    总是弹出visual studio 实时调试器 三种解决办法 最近服务器老是弹出visual studio 实时调试器很是郁闷呀.关还关不掉.怎么解决呢 ,现像如下图所示: 下面我们一起来分析一下这种 ...

  5. 出现No persister for错误后有如下三种解决办法

    出现No persister for错误后有如下三种解决办法: 1.检查hbm.xml文件,配置文件后缀名写错 mapping file 必须是.hbm.xml结尾. 2.hibernate 的map ...

  6. SQL Server 数据库没有有效所有者的三种解决办法

    问题描述: 开发的过程中,操作系统出了问题,决定重装系统.但是没有将SQL Server中的数据库文件分离出来,直接将系统格了.在新系统数据库中附加了数据库文件,一切还算正常,但当打开数据库关系图的时 ...

  7. php中的 notice,PHP中出现Notice: Undefined index的三种解决办法

    前一段做的一个PHP程序在服务器运行正常,被别人拿到本机测试的时候总是出现"Notice: Undefined index:"这样的警告,这只是一个因为PHP版本不同而产生的警告( ...

  8. 计算机桌面刷新位置不可用,Win10开机提示桌面位置不可用的三种解决办法

    Win10系统开机显示:位置不可用,C:\WINDOWS\system32\config\systemprofile\Desktop不可用.如果该位置位于这台电脑上,请确保设置或驱动器已连接,或者光盘 ...

  9. linux执行sh提示非标准环境,Linux执行.sh文件时提示No such file or directory该怎么办(三种解决办法)...

    先给大家看下问题描述,下图是我在运行时出现错误截图: 解决方法 分析原因,可能因为我平台迁移碰到权限问题我们来进行权限转换 1)在Windows下转换: 利用一些编辑器如UltraEdit或EditP ...

最新文章

  1. CVPR 2020 论文开源项目一页看尽,附代码论文
  2. 自动驾驶中的9种传感器融合算法
  3. python3字符串的常见操作
  4. ASP.NET学习路线图
  5. AtCoder Grand Contest #026 D - Histogram Coloring
  6. 电动汽车又“火了” 面对频繁自燃事故 蔚来不得不这样做...
  7. Linux 进程优先级以及环境变量
  8. Centos挂载新硬盘开机自动挂载
  9. 解决路由环路问题的探讨
  10. 最新白白iApp手册开源-iApp源码 非常牛逼
  11. Eclipse 2021-09最新版安装图文教程(详细包会)
  12. Python制作某电商平台商品竞拍脚本,能自动定时、抢拍、购买
  13. 苹果微信昵称表情php,苹果手机微信名如何使用特殊符号
  14. 【Linux】/bin/sh、/bin/bash、/bin/dash、init=/sysroot/bin/bash(sh) 、init=/bin/bash(sh) 的区别
  15. C++ 视频播放开源库
  16. 空间点过程与随机测度(二):测度的故事
  17. OpenGL---GLUT教程(三) GLUT窗口设置
  18. OpenGL实现太阳,地球,月球的公转与自转
  19. 计算机主机usb插口松,usb插口(电脑usb接口松动小妙招)
  20. 015 Rust死灵书之Transmutes转换

热门文章

  1. python3数据类型
  2. Hibernate(九)一对多双向关联映射
  3. [Arduino] 学习总结小合集(更新ING)
  4. Corona按钮只能让点击一次
  5. tsql2008技术内幕:tsql语言基础(第3章)
  6. MATLAB报错“Integers can only be raised to positive integral powers.“
  7. linux 防火墙开机启动项,Ubuntu 9.10下实现Firestarter网络防火墙自启动
  8. android悬浮按钮弹出与隐藏,Android悬浮窗按钮实现点击并显示/隐藏多功能列表
  9. php kafka 日志系统,kafka-PHP客户端库(Composer)
  10. leetcode算法题--相交链表