我试图将glMapBuffer与QOpenGLWidget一起使用,但我无法找到它。以下是我收录的文件:
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QOpenGLBuffer>
#include <QDebug>
#include <QOpenGLTexture>
#include <GL/gl.h>
#include <GL/glext.h>
#include <QGLFunctions>
#include <QOpenGLShader>
#include <QOpenGLShaderProgram>
答案 0 :(得分:0)
你不应该混合使用QOpenGL和QGL(删除QGLFunctions,以及项目配置中旧的,不推荐使用的OpenGL模块)。您不需要包含gl.h和glext.h。
您包含了QOpenGLBuffer。方法map()封装了glMapBuffer:
// creation
QOpenGLBuffer buffer = new QOpenGLBuffer(QOpenGLBuffer::VertexBuffer);
buffer->create();
// allocation
buffer->bind();
buffer->allocate(size_of_the_buffer);
buffer->release();
// update
buffer->bind();
void* buffer_data = buffer->map(QOpenGLBuffer::WriteOnly);
memcpy(buffer_data, your_data_to_copy, size_of_your_data_to_copy);
buffer->unmap();
buffer->release();