Penskalaan dan Lukisan Garisan dalam OpenGL
Dalam usaha mencipta permainan seni piksel 2D, anda mungkin menghadapi masalah dengan penskalaan dan saiz piksel apabila memberikan kepada tetingkap dengan resolusi yang lebih tinggi. Artikel ini membincangkan masalah biasa dan menyediakan penyelesaian untuk mengekalkan grafik berpiksel.
Pendekatan yang diterangkan adalah untuk mewujudkan resolusi dalaman menggunakan glOrtho() sambil meningkatkan resolusi output untuk paparan pada skrin. Sebagai contoh, peleraian dalaman 320x240 boleh diskalakan kepada 960x720 pada skrin.
Walau bagaimanapun, apabila melukis garisan dengan GL_LINE_LOOP, anda mungkin perasan bahawa garisan kelihatan nipis dan berpiksel daripada mengekalkan saiz piksel asal. Ini berlaku kerana garisan dilukis pada kanvas penuh 960x720, menghasilkan lebar garisan 1px dalam dunia piksel 3px.
Untuk menyelesaikan isu ini, adalah penting untuk memahami bahawa tiada "320x240" yang berasingan glOrtho canvas" dalam resolusi sebenar tetingkap. OpenGL menskalakan semua primitif yang dilukis berdasarkan peleraian tetingkap, termasuk titik akhir baris. Walau bagaimanapun, rasterisasi garisan antara titik akhir kekal berdasarkan resolusi pemaparan sebenar, membawa kepada garis pepenjuru bukan piksel.
Penyelesaian yang betul melibatkan pemaparan kepada imej 320x240 yang tulen dan kemudian melukis imej itu ke tingkap pada resolusi yang lebih tinggi. Ini memerlukan mencipta tekstur 320x240, melampirkannya pada objek framebuffer (FBO), dan memberikannya dengan port pandangan yang ditetapkan kepada saiz imej. Sebaik sahaja imej diberikan kepada tekstur, FBO boleh ditanggalkan dan tekstur boleh dilukis ke tetingkap dengan port pandangan ditetapkan kepada resolusi tetingkap.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Garis Piksel Apabila Menskalakan Grafik dalam OpenGL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!