Bagaimana untuk membuat bulatan dalam OpenGL

Pengarang: Florence Bailey
Tarikh Penciptaan: 26 Mac 2021
Tarikh Kemas Kini: 27 Jun 2024
Anonim
Tutorial Menggambar Lingkaran di OpenGL
Video.: Tutorial Menggambar Lingkaran di OpenGL

Kandungan

OpenGL, atau Open Graphics Library, adalah API grafik (Interface Programming Application) untuk menulis aplikasi 2D dan 3D dalam pelbagai bahasa dan platform pengaturcaraan. Ia boleh digunakan untuk membuat apa-apa dari objek mudah dan primitif kepada adegan 3D kompleks. Open GL digunakan secara meluas dalam reka bentuk berkomputer, visualisasi saintifik, simulasi penerbangan dan permainan video. Walaupun OpenGl tidak mempunyai kaedah untuk melukis bulatan secara langsung, ia mungkin untuk membina satu menggunakan satu siri baris. Anda perlu mempunyai pengetahuan asas tentang OpenGL untuk menarik bulatan.


Arahan

Tidak ada kaedah langsung untuk membuat bulatan dalam OpenGL, tetapi masih mungkin untuk mengarang satu dengan baris kod yang betul (Creatas / Creatas / Getty Images)
  1. Buat program asas dengan tetingkap viewport OpenGL. Jika anda tidak biasa dengan proses ini, terdapat tutorial pada halaman OpenGL.

  2. Tambahkan fail math.h.header ke program anda dengan memasukkan kod berikut pada permulaan program: #include . Ini akan memberi anda kos cos () dan sin () (sinus dan kosinus) yang diperlukan untuk mengira bulatan.

  3. Mulakan kaedah bulatan dengan menambah kod berikut sebelum memaparkan fungsi panggil balik:

    void drawCircle (GLint x, GLint y, GLint ray, int num_lines) {}

    Pembolehubah "x" dan "y" akan digunakan untuk menentukan pusat bulatan di tetingkap anda, manakala "ray" menetapkan jejari bulatan. Integer "num_lines" ialah bilangan baris yang digunakan untuk mengarang bulatan. Semakin besar angka ini, semakin halus lingkaran akan terlihat.


  4. Tambah kod konfigurasi berikut di dalam kekunci:

    float angle GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO.

    Variabel "sudut" akan mengandungi sudut garisan yang digunakan untuk membina bulatan. Panggilan fungsi glColor3f () menetapkan warna garis kepada hitam, di mana siri tiga 0 bersesuaian dengan keamatan merah, hijau dan biru pada skala 0 hingga 1.

  5. Tambah kod berikut di bawah fungsi glColor3f () dari langkah 4:

    glBegin (GL_LINE_LOOP) GO

    Ini memberitahu OpenGL bahawa mana-mana baris berikutnya melibatkan garis lukisan. Khususnya, ia akan melukis "GL_LINE_LOOP", iaitu satu siri garisan yang bersambung.

  6. Masukkan kod berikut dari satu ke gelung selepas panggilan glBegin ():

    untuk (int i = 0; i <num_lines; i ++) {angle = i * 2 * M_PI / num_lines; glVertex2f (jejari x (radius cos (sudut)), dan jejari (tanpa (sudut) *); }

    Ikatan ini melakukan tiga perkara. Pertama, ia melintang mengikut nilai "num_lines", di mana num_lines adalah integer, melukis garis pada setiap lelaran dan menghasilkan bulatan yang terdiri daripada num_lines garis lurus. Kedua, hitungkan sudut garisan berbanding dengan pusat bulatan dalam radian. "M_P" adalah tetap ditetapkan dalam math.h yang mewakili pi. Akhirnya, glVertex2f () panggilan mengira koordinat titik akhir baris.


  7. Selepas gelung ke, masukkan baris berikut:

    glEnd () GO

    Ini akan memberitahu OpenGL bahawa anda telah selesai melukis garis.

  8. Untuk menarik bulatan di tempat kejadian, tambahkan panggilan dari kaedah drawCircle () untuk fungsi panggil balik program, yang mesti disediakan pada langkah 1. Tentukan nilai x, y, radius, dan a_line, di mana x dan y mewakili titik dalam adegannya, jejari adalah jejari bulatan, dan num_lines adalah bilangan garisan yang membentuk bulatan. Sekali lagi, jika anda tidak biasa dengan OpenGL dan paparan panggil balik, lihat tutorial OpenGL.

  9. Menyusun dan menjalankan program anda. Sekiranya anda memasukkan fungsi dengan betul, ia perlu dikompil tanpa ralat. Jika anda telah menetapkan nilai x, y, dan jejari, anda harus melihat bulatan hitam dipaparkan pada latar belakang putih.

Apa yang anda perlukan

  • Komputer dengan sokongan OpenGL
  • Penyunting teks dan alat penyusun bahasa C atau persekitaran pembangunan C