2012-01-03 60 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