Masalah dengan secara naif merender tekstur garis pemindaian kecil ke quad layar penuh yang besar adalah bahwa tekstur akan meningkat, membuat apa yang menjadi satu set garis pemindaian piksel tunggal dalam tekstur menjadi lebih tebal, blurrier (tergantung pada metode interpolasi Anda), dan umumnya lebih buruk.
Anda seharusnya memasang ubintekstur melintasi quad sedemikian rupa untuk mempertahankan rasio 1: 1 pixel-to-texel. Ini melibatkan menyesuaikan koordinat tekstur quad sehingga mereka lebih besar dari 1 pada tingkat terjauh, dan juga mengatur parameter pembungkus tekstur Anda untuk mengulang bukannya penjepit. Jika tekstur Anda 64x64 piksel, dan layar Anda 1024x768 piksel, Anda dapat mengetahui bahwa dalam sumbu X Anda harus memasang tekstur 16 kali (1024/64). Demikian pula, pada sumbu Y Anda harus memasang 12 kali (768/64). Anda dapat menyesuaikan matematika ini untuk batas tekstur dan layar Anda yang sebenarnya. Gunakan angka-angka itu (16 dan 12) sebagai luasan maksimum koordinat tekstur quad Anda, dan Anda akan mendapatkan hasil yang jauh lebih baik. Bergantung pada bagaimana proyeksi ortografis Anda saat ini diatur untuk ubin, Anda bahkan mungkin tidak perlu mengubahnya untuk membuat ini.
Sebagai alternatif, Anda dapat mengambil pendekatan shader: render adegan biasa menjadi tekstur, lalu render tekstur itu sebagai quad layar penuh, tetapi abaikan setiap garis piksel yang aneh. Jika Anda tahu batas-batas layar dalam shader, Anda dapat melakukan ini dengan cukup mudah (ini adalah pseudo-code , samar-samar HLSL-ish, tetapi harus menerjemahkan dengan mudah):
float2 screenSize;
sampler2D textureSampler;
float2 textureCoordinate;
float4 main () {
// Interpolation of texture coordinates means that we don't get nice
// integer boundaries we could take the modulus of.
float half_y = textureCoordinate.y * screenSize.y * 0.5;
float delta = round(half_y) - half_y;
float delta_squared = delta * delta;
if (delta_squared < 0.1) {
return texture2D(textureSampler, textureCoordinate);
}
return float4(0,0,0,0);
}