美文网首页
OpenGL的纹理坐标及旋转问题

OpenGL的纹理坐标及旋转问题

作者: 云上听风 | 来源:发表于2019-11-13 15:32 被阅读0次

OpenGL的纹理坐标与旋转显示


贴一张我自己用draw.io画的图,顺便推荐一下这个在线画图的网站 :draw.io

image.png

OpenGL的纹理坐标原点是在左下角,ios/Android显示系统的原点在左上角,跟纹理是上下颠倒的(其实应该说是垂直镜像的),所以红1代表ios图片原点位置。如图中的R0,没有任何旋转时图片从左上角红1开始到右下角红4。
此时手机采集摄像头是横屏状态采集而来的,在iphone上的橫屏是Home键在左的状态。
所以opengl的显示矩阵按红1开始到红4排列。

当把手机竖起来Home键朝下时,相当于将手机向右旋转90度,如图R90。红1从左上角变成了右上角。

以下是openGL显示图片时的矩阵,代码中填写坐标的从图中对应的红色1开始顺序填写即可:

static const GLfloat rotation0[] = {
      0.0f, 1.0f,//bottom left 这个注释对应OpenGL纹理左下角原点
      1.0f, 1.0f,//bottom right
      0.0f, 0.0f,//top left
      1.0f, 0.0f,//top right
  };

  static const GLfloat rotateRight90[] = {
      1.0f, 1.0f,
      1.0f, 0.0f,
      0.0f, 1.0f,
      0.0f, 0.0f,
  };

  static const GLfloat rotateRight180[] = {
      1.0f, 0.0f,
      0.0f, 0.0f,
      1.0f, 1.0f,
      0.0f, 1.0f,
  };

  static const GLfloat rotateRight270[] = {
      0.0f, 0.0f,
      0.0f, 1.0f,
      1.0f, 0.0f,
      1.0f, 1.0f,
  };

以上是显示的矩阵,但如果是openGL内部处理旋转而不是显示时,按openGL的原点顺序旋转即可,如:

static const GLfloat rotation0[] = {
      0.0f, 0.0f,//bottom left 
      1.0f, 0.0f,//bottom right
      0.0f, 1.0f,//top left
      1.0f, 1.0f,//top right
  };
  static const GLfloat rotateRight90[] = {
      1.0f, 0.0f,
      1.0f, 1.0f,
      0.0f, 0.0f,
      0.0f, 1.0f,
  };
...

镜像


对应上图,水平镜像(即我们平常照镜子)将图按垂直中轴线翻转,垂直镜像(比较少用)将图按水平中轴线翻转。

相关文章

  • OpenGL的纹理坐标及旋转问题

    OpenGL的纹理坐标与旋转显示 贴一张我自己用draw.io画的图,顺便推荐一下这个在线画图的网站 :draw....

  • OpenGL坐标概念

    openGL 顶点,坐标系,纹理坐标Android OpenGL es 纹理坐标设定与贴图规则对Android o...

  • OPenGL ES纹理翻转解决方案

    纹理翻转 在使用OpenGL函数加载纹理到图形时,经常遇到纹理上下颠倒的问题。原因是因为OpenGL要求纹理坐标原...

  • 十一、OpenGL纹理API及纹理坐标

    1. 图像存储空间计算公式 图像存储空间 = 图像的⾼度 * 图像宽度 * 每个像素的字节数每个像素的字节数 = ...

  • OpenGL纹理坐标&&隧道案例(二)

    一.隧道案例效果 二.纹理坐标 纹理坐标主要是把图形映射到OpenGL中去,图形中每个顶点关联到对应的纹理坐标下,...

  • OpenGLES纹理翻转解决方案

    一.先看看我们平时显示纹理可能出现的问题 二.解决方案 2.1矩阵旋转顶点坐标(即图形顶点坐标在不改变顶点纹理坐标...

  • OpenGL-12-纹理、纹理API及纹理坐标

    一、了解纹理 在OpenGL中,纹理是一种图形数据,主要用于包装不同的物体。我们来举个例子:装修房子时,各个房间需...

  • OpenGL/OpenGL ES入门: 纹理应用 - 纹理坐标及

    系列推荐文章:OpenGL/OpenGL ES入门:图形API以及专业名词解析 OpenGL/OpenGL ES...

  • OpenGL --- (九)纹理坐标

    纹理坐标就是纹理与图形的映射关系,图形中每个顶点都会关联一个纹理坐标,表示顶点需要从该位置读取纹理图像的数据。 纹...

  • OpenGL 纹理坐标解析

    什么是纹理? 计算机图形学中的纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的...

网友评论

      本文标题:OpenGL的纹理坐标及旋转问题

      本文链接:https://www.haomeiwen.com/subject/fgnhictx.html