ฉันมีปัญหาแปลก ๆ กับการวาดลวดลายบน skybox บน Mac ทุกอย่างใน iPhone เป็นไปด้วยดี ฉันพยายามเปลี่ยนมูลค่าเครื่องบินใกล้และไกลโดยไม่ประสบความสำเร็จ
มันเป็นสกายบ็อกซ์ของหกพื้นผิวและสำหรับทุกพื้นผิวฉันตั้งค่านี้:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
มีปัญหาอะไร
ภาพหน้าจอ:
แก้ไข:
ฉันได้ลองตั้งค่าสีพื้นหลังเป็นสีแดงเพื่อให้แน่ใจว่ามีเลือดไหลออกมาผ่านพื้นผิวหรือไม่
ฉันได้ลองเปลี่ยน coords ของ texture เป็น:
float err_corr = 0.5 / TEXTURE_SIZE;
GLfloat vertices[24] = {
-1.0f - err_corr, -1.0f - err_corr, 1.0f + err_corr,
1.0f + err_corr, -1.0f - err_corr, 1.0f + err_corr,
-1.0f - err_corr, 1.0f + err_corr, 1.0f + err_corr,
1.0f + err_corr, 1.0f + err_corr, 1.0f + err_corr,
-1.0f - err_corr, -1.0f - err_corr, -1.0f - err_corr,
1.0f + err_corr, -1.0f - err_corr, -1.0f - err_corr,
-1.0f - err_corr, 1.0f + err_corr, -1.0f - err_corr,
1.0f + err_corr, 1.0f + err_corr, -1.0f - err_corr,
};
และกล่องถูกวาดตามคำสั่งนี้:
GLubyte indices[14] = {0, 1, 2, 3, 7, 1, 5, 4, 7, 6, 2, 4, 0, 1};
วิธีการแก้:
วิธีแก้ไขคือตั้งGL_CLAMP_TO_EDGEสำหรับ cubemap เอง!
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
และglTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);