2012-12-29 81 views
0

这些代表什么意思,我谷歌搜索,但无法找到可以理解的答案,因为他们假设我有一些事先知道的知识。我在OpenGL-ES没有经验,但我已经在Android应用开发的好经验:Open GL Es1.0纹理参数?

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); 
+1

http://msdn.microsoft.com/en-us/library/windows/desktop/dd368640(v=vs.85).aspx –

+0

thnx为您提供帮助 – RE60K

回答

2

前两行告诉GL做什么用你的纹理时,它正在缩小或者向下,或者放大。

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

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

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

4

这很简单。

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

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