Benim oyunumda küplerden yapılmış Minecraft benzeri bir arazi var. Voksel verilerinden bir köşe tamponu üretiyorum ve farklı blokların görünümleri için bir doku atlası kullanıyorum:
Sorun, uzak küplerin dokusunun, doku atlasındaki bitişik çinilerle karışmasıdır. Bu, küpler arasında yanlış renkte çizgiler oluşmasına neden olur (grafik kusurlarını görmek için aşağıdaki ekran görüntüsünü tam boyutunda görmeniz gerekebilir):
Şimdilik bu enterpolasyon ayarlarını kullanıyorum ancak her kombinasyonu denedim ve GL_NEAREST
mipmaplama olmadan bile daha iyi sonuçlar vermiyor.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Ayrıca çininin biraz daha küçük bir alanını seçmek için doku koordinatlarında bir dengeleme eklemeye çalıştım, ancak istenmeyen etki kamera ile olan mesafeye bağlı olduğundan sorunu tamamen çözemez. Uzak mesafelerde şeritler yine de ortaya çıkar.
Bu doku kanamasını nasıl çözebilirim? Doku atlası kullanmak popüler bir teknik olduğundan, ortak bir yaklaşım olabilir. Ne yazık ki, yorumlarda açıklanan bazı nedenlerden dolayı, farklı dokulara veya doku dizilerine değiştiremiyorum.
GL_LINEAR
, benzer sonuç veren doğrusal enterpolasyon yapacaktır veya GL_NEAREST
bloklar arasında şeritler halinde sonuçlanan en yakın pikseli seçecektir. Son sözü edilen seçenek azalır ancak piksel kusurunu ortadan kaldırmaz.