Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melukis Garisan 1px dalam OpenGL dengan Penskalaan Resolusi Dalaman?

Bagaimana untuk Melukis Garisan 1px dalam OpenGL dengan Penskalaan Resolusi Dalaman?

DDD
DDDasal
2024-11-04 00:25:30393semak imbas

How to Draw 1px Lines in OpenGL with Internal Resolution Scaling?

Menskalakan Garis 1px dalam OpenGL

Masalah:

Permainan dengan resolusi dalaman 320x240 diskalakan untuk dipaparkan pada peleraian yang lebih tinggi (cth., 960x720). Walaupun grafik berpiksel dipaparkan dengan betul, garisan yang dilukis dengan GL_LINE_LOOP diskalakan sehingga 3px, mengakibatkan seni piksel yang salah.

Soalan:

Bagaimana garis boleh dilukis ke paparan dalaman 320x240 dan bukannya paparan paparan 960x720?

Jawapan:

Salah tanggapan ialah kewujudan "kanvas 320x240 glOrtho." OpenGL hanya memaparkan kepada resolusi tetingkap sebenar (cth., 960x720). Koordinat penskalaan hanya mengubah titik akhir primitif tetapi tidak menjejaskan rasterisasi.

Untuk melukis garisan 1px dengan betul:

  1. Buat tekstur 320x240 dan pasangkannya pada objek framebuffer (FBO).
  2. Ikat FBO dan tetapkan port pandangan kepada saiz tekstur (320x240).
  3. Render kepada tekstur menggunakan glOrtho(0, 320, 240, 0, 0, 1).
  4. Lepaskan FBO.
  5. Ikat tekstur dan lukiskannya ke tetingkap, tetapkan port pandangan kepada saiz tetingkap (cth., 960x720).

Dengan memaparkan kepada imej luar skrin daripada peleraian sebenar dan kemudian meningkatkannya, rasterisasi garis piksel yang betul boleh dicapai.

Atas ialah kandungan terperinci Bagaimana untuk Melukis Garisan 1px dalam OpenGL dengan Penskalaan Resolusi Dalaman?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn