什么是glTexParameterIiv和glTexParameterIuiv的用例?

时间:2015-01-05 20:32:05

标签: opengl opengl-es

OpenGL documentation对这两个功能的说法很少。何时使用glTexParameterIiv代替glTexParameteriv甚至glTexParameterfv是有意义的?

  

如果使用glTexParameterIiv或glTexParameterIuiv指定GL_TEXTURE_BORDER_COLOR的值,则值将以未修改的方式存储,内部数据类型为整数。如果使用glTexParameteriv指定,则使用以下等式将它们转换为浮点: f =(2c + 1)/(2 b -1)。如果使用glTexParameterfv指定,它们将不加修改地存储为浮点值。

1 个答案:

答案 0 :(得分:2)

您使用粘贴的代码段回答了自己的问题。传统纹理是定点的(无符号标准化,其中 255 之类的值通过标准化转换为 1.0 ),但GL 3.0引入了整数(有符号/无符号整数)纹理类型(其中整数值保持整数)。

如果你有一个整数纹理并想要分配一个边框颜色(用于GL_CLAMP_TO_BORDER环绕模式),你可以使用这两个函数的一个变体(取决于你是想要签名还是无符号)。

您无法过滤整数纹理,但仍可以使用纹理坐标换行行为。由于所述纹理是整数并且glTexParameteriv (...)规范化它传递的颜色值,因此必须创建一个额外的函数来保持颜色数据的整数。

你会发现glVertexAttribIPointer (...)等同样的事情;添加对整数数据的支持(而不是简单地将整数数据转换为浮点数)到GL管道需要很多新命令。