-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的網格。 –