OpenGL纹理高级

矩形纹理

对于二维纹理来说,除了GL_TEXTURE_2D之外,使用GL_TEXTURE_RECTANGLE就可以使用矩形纹理。

矩形纹理几大特点:

不能Mip,只能加载glTexImage2D的level 0
纹理坐标非标准化
不支持压缩纹理

这种方式通常用于处理和提交图像数据的应用,比起通常的2D纹理硬件支持也更加简单,效率更高。

GLSL采样器sampler2D --> samplerRect

多重纹理

多重纹理支持查询:

GLint n;
glGetItegerv(GL_MAX_TEXTURE_UNITS,&n);

使用多重纹理

纹理数组

使用GL_TEXTURE_2D_ARRAY作为相关函数的第一个参数。使用GLTexImage3D加载一组图像。
可以将最后一个参数设置为NULL,GL将会使其保持未初始化状态,然后在后面使用glTexSubImage3D循环加载所有的图像。

在GLSL中使用uniform sampler2DArray进行采样

纹理代理

使用纹理代理可以查询支持的纹理信息。

创建一个纹理代理就像创建一个纹理一样,但是第一个参数应该是下列之一:

GL_PROXY_TEXTURE_1D
GL_PROXY_TEXTURE_2D 
GL_PROXY_TEXTURE_3D
GL_PROXY_TEXTURE_CUBE_MAP

最后一个参数应该为NULL。

值得注意的是,这并不是真的创建了一个纹理。

在创建之后我们就可以向下面这样来查询相应的信息了(这个意思就是,我们先把指定的值赋给他,然后来查询这个值到底是多少):

glTexImage2D(GL_PROXY_TEXTURE_2D,0,GL_RGBA,2048,4096,0,GL_BGRA,GL_UNSIGNED,NULL);//查看是否支持4096的高度
void glGetTexLevelParameter(GL_TEXTURE_2D,0,GL_TEXTURE_HEIGHT,&height);
时间: 2024-08-29 04:00:36

OpenGL纹理高级的相关文章

opengl纹理贴图

头文件包含#include<stdio.h>//标准输入输出的库文件 #include <gl\glaux.h>  //glaux库的头文件 GLfloat xrot;    // X 旋转 GLfloat yrot;    // Y 旋转 GLfloat zrot;    // Z 旋转 GLuint texture[1];   // 用于存储一个纹理 值得注意的是载入图像的宽和高必须是2的n次方,宽度和高度最小必须是64象素,并且出于兼容性的原因,图像的宽度和高度不应超过256

openGL 纹理05

纹理(Texture) 为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个顶点各自对应纹理的哪个部分. 这样每个顶点就会关联着一个纹理坐标(Texture Coordinate) 用来标明从纹理图像的哪个部分采样(采集片段颜色). 之后在图形的其它片段上进行片段插值(Fragment Interpolation). 纹理坐标在x和y轴上,范围为0到1之间.(注意我们使用的2D纹理图像). 使用纹理坐标获取纹理颜色叫做采样(Sampling). 纹理坐标起始于(0,0),也就是纹理图

OpenGL 纹理学习总结

这里总结下左右颠倒的方法: 就是更改片段着色器 FragColor = mix(texture(texture1,TexCoord), texture(texture2,vec2(1.0 - TexCoord.x, TexCoord.y)),0.78f); 这段代码的意思就是更改图片的纹理坐标 比如: (0,0) -> (1,0) (1,0) -> (0,0) (0,1) -> (1,1) (1,1) -> (0,1) OpenGLDemo.cpp // OpenGLDemo.cp

Qt5.6.0+OpenGL 纹理贴图首战告捷

重要的话写在前面~~通过今晚的实验,知道了EBO是不能随便release的~~~一直不要release就可以了,否则vao会失效 Display.h #ifndef DISPLAYWIDGET_H #define DISPLAYWIDGET_H #include <QGLWidget> #include <QOpenGLFunctions> #include <QOpenGLBuffer> #include <QOpenGLVertexArrayObject>

RenderMonkey 练习 第一天 【opengl 纹理】

础实例: 我们首先实现一个带纹理模型的显示,大体了解RenderMonkey的操作方式. 1. 打开RenderMonkey, 右击WorkSpace的Effect WorkSpace结点,选择Add Default Effect->OPENGL->OPENGL, 创建一个基础实例. 2. 添加一张纹理. 右击Default_DirectX_Effect, 选择Add Texture->Add 2DTexture->2DTexture 选择纹理fliedstone.tga. 然后把

windows下opengl扩展与多重纹理贴图

环境:windows8.1 参考: http://www.cnblogs.com/madfrog/archive/2010/06/25/1765243.html http://blog.csdn.net/xiangyunl/article/details/7933549 如果你在Windows平台下开发OpenGL程序,那么系统中自带的OpenGL库就是1.1的,如果想使用1.2或者更高版本的OpenGL库,那么只能使用OpenGL扩展.由于d3d的关系,windows对于opengl支持不是很

Opencv 导入图片 Opengl 显示纹理(含用例代码)

本篇主要是讲使用Opencv导入一副图片,然后讲该副图片当成纹理显示在opengl当中. 首先说如何配置Opencv 我的硬件环境是: Windows10+Visual Studio 2015+opencv3.0 先在此网站下载opencv,下载之后,它是长这样的,点击它,会自动解压缩成名字为"opencv"的文件夹 接下来进行环境配置:从控制面板开始,按着这个路径  Control Panel\System and Security\System 来到高级系统设置(advanced

Android OpenGL ES(八)----纹理编程框架

1.把纹理加载进OpenGL中 我们的第一个任务就是把一个图像文件的数据加载到一个OpenGL的纹理中. 作为开始,让我们重新舍弃第二篇的框架,重新创建一个程序,新建一个util工具包,在该包下创建一个新类TextureHelper,我们将以下面的方法签名开始: public static int loadTexture(Context context,int resourceId){} 这个方法会把Android上下文,和资源ID作为输入参数,并返回加载图像的OpenGL纹理的ID.开始时,我

Android OpenGL ES(七)----理解纹理与纹理过滤

1.理解纹理 OpenGL中的纹理可以用来表示图像,照片,甚至由一个数学算法生成的分形数据.每个二维的纹理都由许多小的纹理元素组成,它们是小块的数据,类似于我们前面讨论过的片段和像素.要使用纹理,最常用的方式是直接从一个图像文件加载数据. 每个二维纹理都有其自己的坐标空间,其范围是从一个拐角的(0,0)到另一个拐角的(1,1).按照惯例,一个维度叫做S,而另一个称为T.当我们想要把一个纹理应用于一个三角形或一组三角形的时候,我们要为每个顶点指定一组ST纹理坐标,以便OpenGL知道需要用那个纹理