c ++ opengl仅绘制1个点而不是网格
c++ opengl drawing only 1 point instead of grid
我正在为正在计算某个数组的 DLL 解决一些绘图包装器问题。
在这段代码中我需要它来绘制,但我不明白,为什么当我只绑定一次时,它只绘制 1 点。但是当我绑定它时(据我所知,我不应该因为记忆而这样做)每个绘画事件,它都会按照我的预期绘制我的网格。
这里是 bindData 的初始状态。
bool mBindData = true;
然后在我的绘制函数中:
GLuint vbo;
if(mBindData){
mBindData = false;
glGenBuffers(1, &vbo);
//getting size of my array of vertexes
int size = this->mModel->GetVboSize() * sizeof(float);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, s2, this->mModel->GetVbo(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableVertexAttribArray(0);
glVertexAttribPointer(
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
}
glDrawArrays(GL_POINTS, 0,this->mModel->GetVboSize());
如果没有
if(mBindData){}
它运作良好。但正如我所说,我确定不是这样。
我很感激你能给我的每一个建议。
非常感谢。
EDIT1: 我的问题是,当我只绑定一次 vbo 时,为什么它只绘制 1 个点而不是 NxN 个点网格。我错过了什么?
不好意思提问。我只是愚蠢,没有阅读整个 QT 组件。我不得不在 paintGL() 之后调用 update()。现在可以使用了。
我正在为正在计算某个数组的 DLL 解决一些绘图包装器问题。 在这段代码中我需要它来绘制,但我不明白,为什么当我只绑定一次时,它只绘制 1 点。但是当我绑定它时(据我所知,我不应该因为记忆而这样做)每个绘画事件,它都会按照我的预期绘制我的网格。
这里是 bindData 的初始状态。
bool mBindData = true;
然后在我的绘制函数中:
GLuint vbo;
if(mBindData){
mBindData = false;
glGenBuffers(1, &vbo);
//getting size of my array of vertexes
int size = this->mModel->GetVboSize() * sizeof(float);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, s2, this->mModel->GetVbo(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableVertexAttribArray(0);
glVertexAttribPointer(
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
}
glDrawArrays(GL_POINTS, 0,this->mModel->GetVboSize());
如果没有
if(mBindData){}
它运作良好。但正如我所说,我确定不是这样。
我很感激你能给我的每一个建议。
非常感谢。
EDIT1: 我的问题是,当我只绑定一次 vbo 时,为什么它只绘制 1 个点而不是 NxN 个点网格。我错过了什么?
不好意思提问。我只是愚蠢,没有阅读整个 QT 组件。我不得不在 paintGL() 之后调用 update()。现在可以使用了。