Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Segitiga OpenGL Go Saya Kekal Tidak Kelihatan?

Mengapa Segitiga OpenGL Go Saya Kekal Tidak Kelihatan?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 05:55:30381semak imbas

 Why Does My Go OpenGL Triangle Remain Invisible?

Penimbal Vertex OpenGL Gagal Memaparkan Segitiga dalam Go

Dalam percubaan untuk meniru tutorial tentang mencipta segi tiga mudah menggunakan OpenGL dalam Go, seseorang individu menghadapi kesukaran untuk mendapatkan penimbal bucu untuk memaparkan bentuk. Semasa tetingkap dibuka dan latar belakang menjadi biru, segi tiga kekal tidak kelihatan.

Coretan kod yang disediakan melibatkan mencipta penimbal bucu dan kemudian melukis segi tiga menggunakan glDrawArrays. Walau bagaimanapun, dalam versi c kod yang berfungsi, fungsi AttribPointer mengambil parameter (void*)0 untuk menentukan ofset penimbal tatasusunan, manakala dalam versi Go, hujah offset yang disediakan merosakkan aplikasi dan tiada ' t nampaknya berfungsi sama ada.

Penyelesaian yang dikemas kini melibatkan penggunaan cabang kerja pengikatan banthar dan mengubah panggilan ke AttribPointer dan BufferData seperti berikut:

<code class="go">vertexAttrib.AttribPointer(
    3,     // size
    gl.FLOAT, //type
    false, // normalized?
    0,     // stride
    nil) // array buffer offset

data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}
[...]
gl.BufferData(gl.ARRAY_BUFFER, len(data)*4, data, gl.STATIC_DRAW)</code>

Dengan menghantar saiz dalam bait kepada BufferData dan menetapkan penampan tatasusunan mengimbangi kepada sifar dalam AttribPointer, masalah telah diselesaikan dan segi tiga telah berjaya dipaparkan.

Atas ialah kandungan terperinci Mengapa Segitiga OpenGL Go Saya Kekal Tidak Kelihatan?. 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