مشكلة المخزن المؤقت لـ OpenGL Vertex في Go
في محاولة لعرض مثلث باستخدام OpenGL في Go، واجه المستخدم مشكلة في قمة الرأس فشل المخزن المؤقت في تقديم الشكل. تم اشتقاق كود Go من برنامج تعليمي، ولكن على عكس نظيره في لغة C، لم ينتج عنه أي مخرجات.
سبب المشكلة
السبب الجذري للمشكلة تكمن في الوسائط التي تم تمريرها إلى vertexAttrib.AttribPointer(). وعلى وجه الخصوص، قام المستخدم بتحديد (void*)0 بشكل غير صحيح كإزاحة المخزن المؤقت للصفيف. أدى ذلك إلى فشل التطبيق في العثور على بيانات قمة الرأس.
الحل
لتصحيح المشكلة، قام المستخدم بالتبديل إلى فرع العمل لروابط البانثار وقام بإجراء التعديلات التالية:
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)
[...]
ملاحظات إضافية
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3