首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGLBuffer和VBO

QGLBuffer和VBO
EN

Stack Overflow用户
提问于 2011-04-26 10:23:53
回答 1查看 2.5K关注 0票数 2

我对QGLBuffer有个问题。我正在尝试用QT + Opengl实现一个动态的VBO。

在.h文件中

代码语言:javascript
复制
struct CVert {
   float x;                                                 
   float y;                                                 
};
...

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

在.cpp中

构造函数。

代码语言:javascript
复制
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值

代码语言:javascript
复制
m_data[pos].x = X1
m_data[pos].y = y1

在draw方法中。

代码语言:javascript
复制
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不是null,并且m_bufferData->bind()返回true。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-26 20:53:31

我想我已经解决了。每次我都要编辑VBO。我不得不做

代码语言:javascript
复制
m_data = (CVert*)data->map (QGLBuffer::ReadWrite); 
m_data[pos].x = X1;
m_data[pos].y = y1 
data->unmap (); 

如果我在构造函数中只映射一次,它就不起作用

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5785272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档