ارسم النقاط في OpenGL باستخدام QVector3D
سؤال
لدي قائمة QVector3D
, وهي عبارة عن قائمة من النقاط التي أريد أن أرسم بها قائمة من النقاط glDrawArrays
.
initializeGLFunctions();
glGenBuffers(2, vbo);
//the vertices
QVector3D *vertices = &data[0];
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), vertices, GL_STATIC_DRAW);
glDrawArrays(GL_POINTS,??);
أو ما هي الطريقة الأخرى التي يمكنني استخدامها للتعامل مع هذا؟
المحلول
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), القمم, GL_STATIC_DRAW);
هذا صحيح، لكنني أقترح استخدام حاويات أكثر ذكاءً مثل QVector خارج constData كما يلي:
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(QVector3D), myVector.constData(), GL_STATIC_DRAW);
هنا مثال رسمي آخر لكيفية الاستخدام glBufferData
في سياق QVector3D
:
يمكنك هنا العثور على مثال آخر لجهة خارجية يتبع المثال الرسمي:
وبعد ذلك يمكنك أن تكتب:
glDrawArrays(GL_POINTS, 0, data.size());
لا تنتمي إلى StackOverflow