Rumah >pembangunan bahagian belakang >Golang >Mengapa Segitiga Saya Tidak Dipaparkan dalam OpenGL dengan Go?
Dalam percubaan untuk menggunakan tutorial yang menunjukkan pelaksanaan segi tiga asas pada platform OpenGL dalam Go, pengguna telah menemui kesukaran membuat segi tiga dengan berkesan. Walaupun berjaya membuka tetingkap dan mewujudkan latar belakang biru, segi tiga itu kekal tidak kelihatan.
Membandingkan kod Go dengan versi C tutorial yang berfungsi, ternyata wujud percanggahan dalam penggunaan vertexAttrib.AttribPointer fungsi. Dalam versi C, hujah (void*)0 disediakan sebagai ofset penimbal tatasusunan, manakala dalam pelaksanaan Go, nil atau &gVertexBufferData[0] telah terbukti tidak berjaya.
Peperiksaan lanjut mendedahkan bahawa menggunakan glGetError tidak menghasilkan sebarang ralat, menunjukkan bahawa masalah asas adalah salah konfigurasi dan bukannya ralat masa jalan.
Isunya terletak pada hujah yang dihantar kepada fungsi vertexAttrib.AttribPointer. Sintaks yang betul untuk pelaksanaan Go ialah:
<code class="go">vertexAttrib.AttribPointer( 3, // size gl.FLOAT, // type false, // normalized? 0, // stride nil) // array buffer offset</code>
Selain itu, saiz yang dihantar kepada fungsi gl.BufferData hendaklah dinyatakan dalam bait dan bukannya bilangan elemen:
<code class="go">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 menyepadukan pelarasan ini, segi tiga boleh dipaparkan dengan jayanya menggunakan OpenGL dalam Go, membolehkan pengguna meneruskan tugas pembangunan selanjutnya.
Atas ialah kandungan terperinci Mengapa Segitiga Saya Tidak Dipaparkan dalam OpenGL dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!