OpenGL:如何在Qt中使用glMapBuffer?

时间:2016-07-26 09:39:40

标签: c++ qt opengl qt5

我试图将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>

1 个答案:

答案 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();