Rumah >pembangunan bahagian belakang >Golang >Mengapa Perenderan Segitiga OpenGL Saya Tidak dalam Go, Tetapi Ia Berfungsi dalam C?
OpenGL Vertex Buffer Not Rendering Triangle in Go
Walaupun mengikut arahan daripada tutorial, pengguna telah menghadapi masalah apabila versi Go gagal untuk memaparkan segi tiga manakala rakan sejawatannya C berjaya melakukannya. Percanggahan ini dikaitkan dengan potensi percanggahan dalam menyediakan argumen kepada kaedah vertexAttrib.AttribPointer().
Dalam kod Go, argumen berikut dihantar kepada kaedah:
<code class="go">vertexAttrib.AttribPointer( 3, // Size 0, // Normalized? 0, // Stride nil, // Array buffer offset )</code>
Walau bagaimanapun , dalam kod C, kaedah yang setara dipanggil dengan set hujah yang berbeza:
<code class="c">glVertexAttribPointer( 0, 3, // Size GL_FLOAT, // Type GL_FALSE, // Normalized? 0, // Stride (void*)0 // Array buffer offset )</code>
Argumen yang sepadan dengan ofset penimbal tatasusunan adalah mudah dilihat dengan ketiadaannya dalam kod Go. Argumen ini menentukan offset dalam bait dari permulaan penimbal hingga permulaan data puncak untuk atribut tertentu. Dengan meninggalkan hujah ini dalam kod Go, data bucu mungkin tidak dapat diambil dengan betul.
Untuk menyelesaikan isu ini, cabang kerja pengikatan banthar hendaklah digunakan dan hujah berikut hendaklah dihantar ke vertexAttrib Kaedah .AttribPointer():
<code class="go">vertexAttrib.AttribPointer( 3, // Size gl.FLOAT, // Type false, // Normalized? 0, // Stride nil // Array buffer offset )</code>
Selain itu, data yang dihantar ke pelayan hendaklah didarabkan dengan 4 untuk mewakili bilangan bait yang mewakili data. Sebagai contoh, jika data diterangkan sebagai:
<code class="go">data := []float32{0, 1, 0, -1, -1, 0, 1, -1, 0}</code>
ia hendaklah digunakan sebagai:
<code class="go">gl.BufferData(gl.ARRAY_BUFFER, len(data) * 4, data, gl.STATIC_DRAW)</code>
Atas ialah kandungan terperinci Mengapa Perenderan Segitiga OpenGL Saya Tidak dalam Go, Tetapi Ia Berfungsi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!