gpt4 book ai didi

c++ - QGLBuffer 和 VBO

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:43 27 4
gpt4 key购买 nike

我对 QGLBuffer 有疑问。我正在尝试使用 QT + Opengl 实现动态 VBO。

在.h文件中

struct CVert {
float x;
float y;
};
...

typedef struct CVert CVert;
CVert* m_data;
QGLBuffer* m_bufferData;
int m_size;

在 .cpp 中

构造函数。

m_size = numberOfVertex;
m_bufferData = new QGLBuffer(QGLBuffer::VertexBuffer);
m_bufferData->create();
m_bufferData->bind();
m_bufferData->setUsagePattern(QGLBuffer::DynamicDraw);
m_bufferData->allocate(2*sizeof(float)* p_size);
m_data = (CVert*)m_bufferData->map (QGLBuffer::ReadWrite);

在程序执行中我改变了一些m_data值

m_data[pos].x = X1
m_data[pos].y = y1

在绘制方法中。

glEnableClientState(GL_VERTEX_ARRAY);
if (m_bufferData->bind ()) {
glVertexPointer( 2, GL_FLOAT, 0, (char *) NULL );;
glDrawArrays( GL_LINES, 0,m_size );
glDisableClientState(GL_VERTEX_ARRAY);
}

但没有绘制它。我检查过 m_data 不为空,并且 m_bufferData->bind() 返回 true。我做错了什么?

最佳答案

我想我已经解决了。每次我必须编辑 VBO。我必须

m_data = (CVert*)data->map (QGLBuffer::ReadWrite); 
m_data[pos].x = X1;
m_data[pos].y = y1
data->unmap ();

如果我在构造函数中只映射一次,这是行不通的

关于c++ - QGLBuffer 和 VBO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5785272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com