2012-01-03 29 views
2

什么造成了我的立方体面孔之间的撕裂?

看起来有点难,但看起来这两张脸之间有黑点和白点。我怀疑这是OpenGL的质量设置之一,但我不知道是哪一个。或者它会是纹理min/mag过滤器(我把它们都设置为线性)?或者我需要使用mipmap来解决这个问题?不太清楚我应该找什么。


想出了如何做mimapping ....但这似乎使问题变得更糟。

下面是我的一些设置(这是在C#中,但它只是在C API的一个瘦包装)

VSync = VSyncMode.On; 

GL.Enable(EnableCap.DepthTest); 
GL.DepthFunc(DepthFunction.Less); 

GL.Enable(EnableCap.CullFace); 
GL.CullFace(CullFaceMode.Back); 
GL.FrontFace(FrontFaceDirection.Ccw); 

GL.ClearColor(Color.MidnightBlue); 
GL.Enable(EnableCap.Texture2D); 

GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest); 


texture = new Texture(TextureTarget.Texture2D); 
texture.LoadImage2D("checkers.jpg"); 

GL.GenerateMipmap(GenerateMipmapTarget.Texture2D); 

Texture.SetParameter(TextureTarget.Texture2D, TextureMinFilter.LinearMipmapLinear); 
Texture.SetParameter(TextureTarget.Texture2D, TextureMagFilter.Linear); 
Texture.SetParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, TextureWrapMode.ClampToEdge); 
Texture.SetParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, TextureWrapMode.ClampToEdge); 

Texture.SelectActive(TextureUnit.Texture0); 

我不能与其他纹理注意到它:

所以,也许我就不会担心关于它......我们去照明吧!

回答

3

你可能需要设置纹理包装:

glTexParameterf (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameterf (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

如果它当前设置为重复,你会得到你所看到的文物。

+0

我依稀记得从几年前的设置!它解决了我的问题,然后......但不是这次:(http://i.imgur.com/IdPFw.png – mpen 2012-01-03 02:42:37

+0

如何绘制棋盘?它只是一个纹理,或者它是片段着色器吗? – user1118321 2012-01-03 02:45:35

+0

另外,你是在剔除背部脸吗?立方体背面的脸部背面是否可以显示? – user1118321 2012-01-03 02:46:34