打开GL Es1.0纹理参数?

时间:2012-12-29 10:03:58

标签: android opengl-es

这些线是什么意思,我用谷歌搜索但找不到可理解的答案,因为他们假设一些我没有的先前知识。我没有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);

2 个答案:

答案 0 :(得分:4)

这很简单。

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

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

答案 1 :(得分:2)

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

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

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

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