-1
我正在解决一些绘图包装为我的DLL计算某些数组。 在这段代码中,我需要它来绘制,但我不明白,为什么当我只绑定一次,它只绘制1点。但当我约束它(因为我知道,我不应该那样做是因为记忆)每个绘画事件,它正在绘制我的网格,正如我所期望的那样。C++ opengl绘制只有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:我的问题是,为什么它绘制只有1点,而不是点N×N个网格,当我绑定VBO只有一次。我错过了什么?
我不确定你的问题是什么。你可以说得更详细点吗? –
我不能完全肯定,但我的猜测是,那是因为你生成'glGenBuffers只有一个缓冲区(1,VBO)',在那里你会想为N×N点 –
我有float数组,创建一个网格 浮子*阵列= {0.0F,0,0f,0.0F,1.0F,0.0F,0,0f,0.0F,1.0F,0,0f,1.0F,1.0F,0.0F} ,其是2×2的网格。 –