OpenGL纹理贴图

本文介绍了OpenGL中的纹理类型,包括常规纹理和缓存纹理。详细阐述了纹理加载的步骤,如使用glTexStorage2D分配纹理存储,通过glTexSubImage2D或glTexBuffer提交数据。还讨论了纹理坐标、纹理过滤(GL_LINEAR和GL_NEAREST)以及纹理贴图的填充方式。同时提到了在着色器中激活和绑定纹理的方法。
摘要由CSDN通过智能技术生成

OGL中纹理分为两种类型,一种是常规的纹理,另一种是缓存纹理。前者和特定的纹理类型相关联,而后者则仅仅作为输出的缓存区域,和Frame buffer object粘合的纹理就是缓存纹理。不过这两者的创建过程很相似,都是利用glGenTexture函数实现纹理ID的创建,然后利用glBindTexture将ID号绑定到指定的纹理对象上。常规纹理绑定的纹理对象是指定的纹理类型,而纹理缓存则绑定到GL_TEXTURE_BUFFER类型的纹理。绑定之后,就可以向纹理存储传递初始化数据。前者通过glTexSubImage1D函数向指定的纹理类型提交数据,而后者则通过glTexBuffer向缓存纹理中提交数据,主要是通过GL_ARRAY_BUFFER为对应的缓存纹理提供存储支持。

Load Texture

上面简单的介绍了纹理的类型,下面主要介绍特定的纹理类型进行纹理加载的步骤。第一步需要为纹理分配指定大小的存储空间。纹理内存的空间并不一定和需要加载的纹理的大小是对应的,主要是为了渲染的时候能够有效的对图片进行放缩处理。因此,在分配内存时需要根据需要创建的纹理的尺寸以及需要创建的纹理的放缩的层次分配足够的存储,一般会比最大的纹理层次所占用的存储空间大1/3。glTexStorage2D函数的第一个参数指定所需要分配的纹理类型,在这里特定是GL_TEXTURE_2D,第二个参数levels指定所需要创建的纹理图像的层次数目,主要是用空间换时间。internalformat参数则用于指定纹理的具体类型,用以控制纹理的内存大小,接下来两个参数指定最顶层的纹理的宽度和高度。需要注意的是这里会默认下一层纹理的大小相对于上一层原来的宽度和高度缩小一半,当然也可以利用glTexSubStorage2D为每一个层次指定纹理的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值