有点难以看到,但看起来这两个面之间有黑白点。我怀疑它是OpenGL的质量设置之一,但我不知道哪个。或者它是纹理min / mag滤镜(我将它们都设置为线性)?或者我需要mipmapping来解决这个问题?不太清楚我应该寻找什么。
想出如何进行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);
我无法用其他纹理注意到它:
所以也许我不会担心它......我们去照明吧!
答案 0 :(得分:3)
您可能需要设置纹理包装:
glTexParameterf (target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf (target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
如果它当前设置为重复,您将获得您正在看到的工件。