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);

 

转载于:https://www.cnblogs.com/wubugui/p/4299816.html

Qt OpenGL中实现Mipmap纹理高级指南 Mipmap是一种纹理过滤技术,其设计目的是提高纹理映射的性能,并减少图像渲染时的锯齿现象。当一个纹理映射到一个多边形上时,如果映射比例变化较大,比如从远处看一个纹理很大的表面,或从近处看一个很小的表面时,普通的纹理映射会产生视觉失真。Mipmap通过为不同的映射比例预先计算一系列不同分辨率的纹理图像,使系统能够在渲染过程中选择最合适的纹理级别进行绘制,从而有效避免了这些失真。纹理过滤器是决定纹理如何映射到屏幕上像素的算法。 阅读详情

相关推荐

OpenGL编程指南》 笔记六 纹理(一)

文章目录第六章 纹理6.1 纹理映射6.2 基本纹理类型6.3 创建和初始化纹理6.3.1 纹理格式内部格式外部格式6.4 代理纹理6.5 设置纹理数据6.5.1 显示设置纹理数据6.5.2 使用Pixel Unpack缓存6.5.3缓存拷贝数据6.5.4 从文件加载图像6.5.5 查询纹理数据6.5.6 纹理数据布局6.6 采样器对象6.6.1 采样器参数6.7 使用纹理6.7.1 纹理坐...

wwhx27的博客 1615

OpenGL函数思考-glTexImage2D

OpenGL函数思考-glTexImage2D 函数原型: void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width, glsizei height,GLint border,GLenum format,GLenum type, const GLvoid *pixels); 函数说明: 定义一个二纹理...

v5qqcom 521

C#+OpenGL编程之OpenGL 纹理载入

本文基础:C#+OpenGL编程之环境搭建 载入一个模型,光秃秃的可不好,这课开始学习纹理载入,纹理载入需要注意的地方就是最好只载入一次纹理,否则容易影响性能。 C# 载入纹理要比C方便多了,问题在于C# 的GDI+不支持TGA载入,我就网上找了个类,这里请大家去原作者那里看了。 如需素材或C代码请参考原书资料下载http://down.51cto.com/data/201697

大师的资源 7209

OpenGL超级宝典笔记——纹理映射(一)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34406086的博客 649

OpenGL学习(四)给图案添加纹理

参考官方文档https://learnopengl-cn.github.io/ 文章目录纹理环绕方式纹理过滤多级渐远纹理加载与创建纹理生成纹理应用纹理纹理单元练习: 纹理是一个2D图片,它可以用来添加物体的细节。 为了能把纹理映射到三角形上,我们要指定三角形的每个顶点各自对应纹理的哪个部分。这样每个顶i点就会关联一个纹理坐标,用来标明该从纹理图像的哪个部分采样,然后在图形的其他片段上进行插值。用纹理坐标获取纹理颜色叫做采样。纹理坐标如下: float texCoords[]={ 0.0f,0.0f,

xhh22900的博客 3253

OpenGL ES 高级进阶:纹理数组

大家好,这是我的OpenGL ES 高级进阶系列文章,在我的github上有一个与本系列文章对应的项目,欢迎关注,链接:github.com/kenneycode/… 今天给大家介绍一下纹理数组,它是OpenGL ES 3.0引入的一个新特性,它能让我们以数组的方式往shader中传递纹理,我们先来看看一个普通的fragment shader: #version 300 es precision ...

weixin_34290096的博客 1510

第十一章《OpenGL 高级纹理技术》

MipMap 是一组从原始纹理逐级缩小(每级为上一级的一半)的一系列纹理,用于提高渲染效率和避免远距离模糊/闪烁。技术作用核心类型/函数MipMap多级细节控制,防止闪烁多纹理混合、光照贴图等Cube Map环境映射、天空盒3D Texture体积数据、医学渲染多层纹理,统一采样HDR 渲染,高精度数据GL_RGBA16FGL_FLOAT阴影贴图、Z 数据缓存Compressed降低显存,提升加载效率更灵活的纹理参数绑定方式。

yumeiguo的博客 631

高级 OpenGL 纹理贴图 Advanced OpenGL Texture Mapping

Advanced OpenGL Texture Mapping by Nate Miller (03 April 2000)  Return to The Archives Introduction  As we all know texture mapping is a crucial element i

太阳火神的美丽人生 2693

linux opengl编程指南,OpenGL超级宝典学习笔记——纹理高级(一)

辅助颜色一般情况下,我们设置纹理的环境为GL_MODULATE模式,在这种情况下,受到光照的几何图形会和纹理的颜色进行结合。正常情况下,OpenGL进行光照计算,并根据标准的光照模型进行单个片段的颜色计算。然后,再把片段的颜色乘以纹理的颜色,等到结合后的颜色。但是这样的话会削弱图形的光照效果。因为经过光照计算过后的片段的颜色值最大值是1.0(即最亮的颜色),任何值乘以小于1.0的值,必定小于其本身...

weixin_39554170的博客 513

OpenGL--高级纹理知识

目录(?)[+] 矩形纹理 纹理目标为GL_TEXTURE_RECTANGLE。  首选,矩形纹理不能进行Mip贴图;  然后,矩形纹理不是标准化的(实际上是对像素寻址)  最后,纹理坐标不能重复,并且不支持纹理压缩 加载矩形纹理 bool LoadTGATextureRect(const char *szFileName, GLenum minFilte

WYN的养生之路的博客 575

OpenGL-Examples纹理映射完全指南:从基础到高级应用的3个实用技巧

想要在OpenGL中实现逼真的3D图形渲染吗?纹理映射技术正是让你的场景从单调几何体转变为生动视觉体验的关键!OpenGL-Examples项目提供了简单易懂的示例代码,帮助你快速掌握纹理映射的核心概念。这篇完整指南将带你从纹理基础概念出发,逐步深入到高级应用技巧,无论你是OpenGL新手还是有经验的开发者,都能从中获得实用的纹理映射知识。 ## 📋 什么是纹理映射?为什么它如此重要? 纹理

gitblog_01173的博客 353

07 高级纹理 opengl 超级宝典

多重纹理 glActiveTexture(GL_TEXTURE0) glBindTextrue(GL_TEXTURE_2D, textrue0) glActiveTextrue(GL_TEXTURE1) glBindTextrue(GL_TEXTURE_2D, textrue1) 点精灵的核心代码 glEnable(GL_PROGRAM_POINT_SIZE) fragColor = textrue(pointImage, gl_PointCoord) glPointParameteri(G

wqs880527的博客 301

OpenGL】蓝宝书第七章——纹理高级知识

矩形纹理 GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D是我们所了解到的纹理目标,而矩形纹理是GL_TEXTURE_RECTANGLE,它与GL_TEXTURE_2D类似,区别在于不能进行Mip贴图,glTexImage2D只能加载第0层,而且纹理坐标并不是在[0,1]范围内的,而是对像素寻址,如(5,19)则代表从左边数起第六列,从上面数起第20行的像素,纹理坐标不能重复且不支持纹理压缩。此种纹理效率更高、支持更好。 加载矩形纹理 bool LoadTGATex

两水先木示的博客 1176

OpenGL 超级宝典笔记 —— 纹理高级(一)

OpenGL 超级宝典笔记 —— 纹理高级(一)纹理篇:glTexGeni纹理坐标生成方式控制,以及压缩格式,灯光与纹理的作用

whl0071的专栏 1296

OpenGL 超级宝典笔记 —— 纹理高级(三)

OpenGL 超级宝典笔记 —— 纹理高级(三)纹理篇:多重纹理组合器:glTexEnvi的用法和参数说明

whl0071的专栏 1015

[OpenGL] 纹理高级篇 - flowmap的原理

flowmap简单来说就是一种特殊的uv纹理动画,我们把运动向量记录在纹理中,并让纹理uv向特定方向运动。 它的原理非常简单,但如果你直接将运动向量乘以时间,叠加到原始纹理坐标上,那么你不会得到正确的结果: vec2 motionvector = texture(flowmap, uv).xy * 2 - 1; // decode motion vector uv = uv + time * motionvector; vec3 color = textu...

(ง •̀_•́)ง 7277

OpenGL 超级宝典笔记 —— 纹理高级(二)

OpenGL 超级宝典笔记 —— 纹理高级(二)纹理篇:两种纹理坐标生成模式GL_REFLECTION_MAP 和 GL_NORMAL_MAP,以及cubemap的使用过程和方法

whl0071的专栏 815

OpenGL超级宝典笔记——纹理高级(三)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33862993的博客 154
上一篇: 央视春晚摇一摇最有可能颠覆哪些行业?
下一篇: 高性能mysql主存架构
weixin_30895603
博客等级 码龄11年 76粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值