glTexParameter和glTextureParameter两个系列的函数(都分为i和f,还有iv,fv等)。

void glTexParameteri( GLenum target, GLenum pname, GLint param);

glTexParameter是用来处理Active Texture的。要先用Active Texture来激活它。当然,也可以在Texture刚刚创建之后就设置它的属性。其中target可以是GL_TEXTURE_2DGL_TEXTURE_3DGL_TEXTURE_2D_ARRAYGL_TEXTURE_2D_MULTISAMPLEGL_TEXTURE_2D_MULTISAMPLE_ARRAYGL_TEXTURE_CUBE_MAP,   GL_TEXTURE_CUBE_MAP_ARRAY 之一。

可见它也是隐喻,同一个Vao,只能有一套这类Texture,所以才能用target来标志要操作哪个Texture。

glTextureParameter,则是用来处理用ID表示的Texture。这种方式,无疑更加合理,更加清晰。但是可惜,只有opengl 4.5以后才有。opengl es则没有。

用glTexParameter,基本也就无法在创建后改变Texture参数了,找起来很麻烦。好在也没多少这种需求。

然后,带v的函数,大多是是用来处理一个四元数的。一个是颜色,GL_TEXTURE_BORDER_COLOR, 还有一个GL_TEXTURE_SWIZZLE_RGBA,用来表示颜色的重新排序。

对于border的颜色,glTexparameterIiv版本函数和glTexParameterfv函数,操作的是同一个颜色。f版的颜色,取值范围是0到1之间,i版就把这个颜色值分布到0和Int的最大值之间。比如,f版设定的颜色是(0.1,0.2,0.3,0,4),I版的颜色值就是int的最大值乘以这四个数。

注意,glTexParameterIv函数(一个i),是特殊的。它是用特殊方式表示的浮点数。转换公式是f=(2c+1)/(2^b-1)。这个函数就专门用于设置GL_TEXTURE_BORDER_COLOR,实际上也不需要用到它,很麻烦,跟另外两个函数功能一样的,属于画蛇添足的东西。