いくつかの配列を計算している DLL の描画ラッパーを解決しています。このコードでは、描画する必要がありますが、1回だけバインドすると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 グリッドのポイントではなく 1 つのポイントしか描画されないのはなぜですか。私は何が欠けていますか?