美文网首页
OpenGL ES之纹理

OpenGL ES之纹理

作者: 小Ju | 来源:发表于2017-06-29 20:36 被阅读43次

之前只是用OpenGL ES来渲染出一个很单调的白色三角形, 但生活中却又千千万万种颜色, 还有些东西是由很多颜色组成的, 为了渲染出最逼真的, OpenGL ES提供了一种纹理的图形技术, 用来渲染没一个像素的颜色

  • 纹理: 用来保存图像的颜色元素的缓存, 例子中只做2D的缓存
    原理大概是OpenGL ES缓存了一张图片上的像素颜色, 在通过我们定义的几何图形一叠加绘制出结果图形. 几何图形多出来的部分, 将不会被着色.如图:


    屏幕快照 2017-06-28 下午8.43.06.png
  • 纹理渲染过程中的一些概念:
    1.视口坐标(和屏幕坐标相反要注意):帧缓存中的像素坐标

    2.片源: 每个元素像素

    3.映射:几何图形和纹理叠加,对齐的过程

    4.纹理坐标系中的2D轴:S和T轴, 每一条轴的坐标范围(0-1), 从一个像素到64个纹素 .如图:


    OpenGL ES之纹理
  • 效果展示:(一个三角形,用纹理渲染)
    纹理图片:


    OpenGL ES之纹理

最后效果:


OpenGL ES之纹理
  • 代码
    三角形顶点坐标和纹理坐标
//顶点数据 用浮点类型
static const scene point[] = {
    0.5, -0.5, 0.0f,    1.0f, 0.0f, //右下
    0.5, 0.5, -0.0f,    1.0f, 1.0f, //右上
    -0.5, 0.5, 0.0f,    0.0f, 1.0f, //左上   
 };

纹理

glEnableVertexAttribArray(GLKVertexAttribTexCoord0); //纹理告诉OpenGL纹理的数据在哪里
    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(scene) , NULL);
    //纹理贴图
    CGImageRef imageRef = [[UIImage imageNamed:@"11"] CGImage];
    GLKTextureInfo *info = [GLKTextureLoader textureWithCGImage:imageRef options:nil error:NULL];
  • 最终的效果图三角形中的图片是位置是不是原来图片的位置, 这是因为视口坐标和屏幕坐标是相反的, 如要修改可以先将纹理的image先做旋转处理(懒不想搞).

  • 最后demo地址:https://github.com/xiaojuye/OpenGL.git

相关文章

  • OpenGL坐标概念

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

  • OpenGL之纹理及应用案例

    纹理介绍 OpenGL使用的图片数据(纹理)都是tga格式的,而iOS/OpenGL ES使用PNG/JPEG格式...

  • OpenGL ES之纹理

    之前只是用OpenGL ES来渲染出一个很单调的白色三角形, 但生活中却又千千万万种颜色, 还有些东西是由很多颜色...

  • 案例08:隧道

    OpenGL + OpenGL ES +Metal 系列文章汇总 本案例主要目的多个纹理如何使用,加深对纹理的使用...

  • Android音视频开发 - 用OpenGL ES绘制图片

    1. 纹理介绍 使用 OpenGL ES 绘制简单的几何形状还不够,OpenGL 更多地是用来显示而纹理图像,比如...

  • OpenGL ES之旅(三)-- OpenGL ES 纹理翻转解

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

  • Android OpenGL ES(一)-开始描绘一个平面三角形

    关于OpenGL ES Android的介绍这里略过 OpenGL ES世界的基本元素 着色器 坐标系。矩阵 纹理...

  • OpenGL ES学习之纹理贴图

    OpenGL ES学习之纹理贴图 基本原理 启用纹理映射功能后,如果想把一副纹理应用到相应的几何图元,就必须告知渲...

  • OpenGL ES 知识点-纹理

    纹理 纹理是用来保存图像颜色元素之的OpenGL ES 缓存.当用一个图像初始化一个纹理缓存之后,在这个图像的中的...

  • OpenGL ES之纹理(三)

    什么是纹理 纹理是一个用来保存图像的颜色色素值得OpenGL ES缓存, 纹理的作用是为了使我们渲染的几何图像更加...

网友评论

      本文标题:OpenGL ES之纹理

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