8.10 OpenGL纹理和采样器:纹理参数

本文详细解释了OpenGL中的纹理参数,包括TexParameter函数的用法、纹理对象的绑定、参数设置(如TEXTURE_MIN_LOD、TEXTURE_MAX_LOD等),以及数据转换规则。特别关注了CubeMap纹理参数的全局应用。
摘要由CSDN通过智能技术生成

纹理参数 Texture Parameters

纹理参数用于控制 当指定或更改纹理对象的纹理图像,以及将其应用于片段 时的行为。每个参数都可通过以下命令进行设置:

void glTexParameter{if}( enum target, enum pname, T param );
void glTexParameter{if}v( enum target, enum pname, const T *params );
void glTexParameterI{i ui}v( enum target, enum pname, const T *params );
void glTextureParameter{if}( uint texture, enum pname, T param );
void glTextureParameter{if}v( uint texture, enum pname, const T *params );
void glTextureParameterI{i ui}v( uint texture, enum pname, const T *params );

对于TexParameter*命令,纹理对象是指绑定到target的对象。

对于TextureParameter*命令,texture是纹理对象的名称。

targettexture的有效目标必须是TEXTURE_1DTEXTURE_2DTEXTURE_3DTEXTURE_1D_ARRAYTEXTURE_2D_ARRAYTEXTURE_RECTANGLETEXTURE_CUBE_MAPTEXTURE_CUBE_MAP_ARRAYTEXTURE_2D_MULTISAMPLETEXTURE_2D_MULTISAMPLE_ARRAY

pname是一个符号常量,表示要设置的参数;可能的常量及其对应的参数在Table 8.17中进行了总结。在命令的标量形式中,param是要设置单值参数的一个值;而在向量形式中,params是一个参数数组,其类型取决于被设置的参数。

数据转换按照第2.2.1节中指定的方式进行,但有以下例外:

  • 如果使用TexParameterIivTexParameterIuivTEXTURE_BORDER_COLOR指定值,则它们保持不变,并以整数内部数据类型存储。如果使用TexParameteriv指定,则会使用公式2.2将它们转换为浮点数。否则,这些值保持不变并作为浮点数存储。
  • 如果pnameTEXTURE_SWIZZLE_RGBA,则params是一个包含四个枚举值的数组,分别同时设置TEXTURE_SWIZZLE_RTEXTURE_SWIZZLE_GTEXTURE_SWIZZLE_BTEXTURE_SWIZZLE_A参数。

在第8章剩余部分中,用lodminlodmaxlevelbaselevelmax分别表示纹理参数TEXTURE_MIN_LODTEXTURE_MAX_LODTEXTURE_BASE_LEVELTEXTURE_MAX_LEVEL的值。如果纹理是通过TextureView创建的,则TEXTURE_BASE_LEVELTEXTURE_MAX_LEVEL参数是相对于视图而非原始数据存储区进行解释的。

立方体贴图纹理的纹理参数适用于整个立方体贴图;六个独立的二维纹理图像使用的是立方体贴图本身的纹理参数。


NameTypeLegal Values
DEPTH_STENCIL_TEXTURE_MODEenumDEPTH_COMPONENT, STENCIL_INDEX
TEXTURE_BASE_LEVELintany non-negative integer
TEXTURE_BORDER_COLOR4 floats, ints, or uintsany 4 values
TEXTURE_COMPARE_MODEenumNONE, COMPARE_REF_TO_TEXTURE
TEXTURE_COMPARE_FUNCenumLEQUAL, GEQUAL, LESS, GREATER, EQUAL, NOTEQUAL, ALWAYS, NEVER
TEXTURE_LOD_BIASfloatany value
TEXTURE_MAG_FILTERenumNEAREST, LINEAR
TEXTURE_MAX_ANISOTROPYfloatgreater or equal to 1.0
TEXTURE_MAX_LEVELintany non-negative integer
TEXTURE_MAX_LODfloatany value
TEXTURE_MIN_FILTERenumNEAREST, LINEAR, NEAREST_MIPMAP_NEAREST, NEAREST_MIPMAP_LINEAR, LINEAR_MIPMAP_NEAREST, LINEAR_MIPMAP_LINEAR
TEXTURE_MIN_LODfloatany value
TEXTURE_SWIZZLE_RenumRED, GREEN, BLUE, ALPHA, ZERO, ONE
TEXTURE_SWIZZLE_GenumRED, GREEN, BLUE, ALPHA, ZERO, ONE
TEXTURE_SWIZZLE_BenumRED, GREEN, BLUE, ALPHA, ZERO, ONE
TEXTURE_SWIZZLE_AenumRED, GREEN, BLUE, ALPHA, ZERO, ONE
TEXTURE_SWIZZLE_RGBA4 enumsRED, GREEN, BLUE, ALPHA, ZERO, ONE
TEXTURE_WRAP_SenumCLAMP_TO_EDGE, REPEAT,CLAMP_TO_BORDER, MIRRORED_REPEAT, MIRROR_CLAMP_TO_EDGE
TEXTURE_WRAP_TenumCLAMP_TO_EDGE, REPEAT, CLAMP_TO_BORDER, MIRRORED_REPEAT, MIRROR_CLAMP_TO_EDGE
TEXTURE_WRAP_RenumCLAMP_TO_EDGE, REPEAT, CLAMP_TO_BORDER, MIRRORED_REPEAT, MIRROR_CLAMP_TO_EDGE

Table 8.17: Texture parameters and their values

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值