我已經加載了紋理,並將其顯示在立方體和平面上。在飛機和立方體相交的地方,有一些醜陋的視覺工件。OpenGL在紋理inteinter處失敗
這裏有兩張圖片展示了這個問題:
圖片1 - 這是什麼:
圖片2 - 相同的情況下,其他的觀點:
這裏是我如何加載圖像:
static const GLenum gl_format[4] = { GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_BGR, GL_BGRA };
GLuint LoadTGATexture(const char* filename)
{
//image is already loaded in --- unsigned char[] data - int width - int height - int components
unsigned int handle;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_anisotropy);
glGenTextures(1, &handle);
glBindTexture(GL_TEXTURE_2D, handle);
glTexImage2D(GL_TEXTURE_2D, 0, components, width, height, 0, gl_format[components - 1], GL_UNSIGNED_BYTE, data);
gluBuild2DMipmaps(GL_TEXTURE_2D, components, width, height, gl_format[components - 1], GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy);
glBindTexture(GL_TEXTURE_2D, 0);
delete [] data;
return handle;
}
但我該如何解決這個問題,以及我的錯誤是什麼?
只是一個猜測,但是你有沒有機會擁有一個遠近矩陣和遠近剪裁平面之間的**巨大差異? – antonijn 2013-03-03 15:35:55
是的,我有0.00001和10000.0 - >太大 - 但如果飛機與另一個完全重疊,仍然有一些條紋(接近0.01和遠遠100.0) – bricklore 2013-03-03 16:43:00
「遠」真的不是什麼大問題,真正的問題是「接近」 - 如果將近平面設置爲0.01,則即使您的遠平面非常接近,您的z緩衝區範圍的約50%也在0.01和0.02之間。 – JasonD 2013-03-03 16:54:56