0

这些行是什么意思,我用谷歌搜索但找不到可以理解的答案,因为他们假设了一些我没有的先验知识。我在 OpenGL-ES 方面没有经验,但我在 Android 应用程序开发方面有很好的经验:

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,GL10.GL_REPEAT);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,GL10.GL_REPEAT);
4

2 回答 2

4

这是相当简单的。

前两行告诉 GL 在调整大小时如何处理纹理。在您的情况下,纹理在缩小(GL_TEXTURE_MIN_FILTER)时不应该使用过滤(GL_NEAREST),在放大(GL_TEXTURE_MAX_FILTER)时应该使用线性过滤(GL_LINEAR)。那里可以使用其他几个选项,例如三线过滤等。

后两行告诉 GL 如果遇到超出 (0..1) 范围的纹理坐标该怎么办。在您的情况下,这将导致 X(S) 和 Y(T) 轴上的纹理重复 (GL_REPEAT),因此如果纹理坐标超出正常范围,您将在图元上获得平铺纹理。

于 2012-12-29T10:18:44.030 回答
2

前两行告诉 GL 在缩小或放大纹理时如何处理纹理。

在这种情况下,当纹理被缩小(渲染到一个非常小的多边形上,使用的像素少于纹理包含的像素)时,它将为每个屏幕像素从纹理中选择最近的像素,而不进行过滤。这将保持图像清晰,但可能会产生一些视觉噪音。

第二行表示当纹理被放大(渲染到一个大的多边形上,纹理中的每个像素被拉伸到许多屏幕像素上)时,应该线性插值纹理。这将模糊纹理中的​​像素,创建平滑的图像,而不是能够看到单个纹理像素。

另外两行告诉 GL,如果纹理坐标超出 0 到 1 的范围,则应该重复纹理。另一个常见的选择是“夹住”纹理,使边缘在 tex 坐标超出范围的区域上延伸。

于 2012-12-29T10:16:11.240 回答