2016-03-21 5 views
-1

私はOpenGLを使いこなしています。私は現在、単純なキューブを描画しています。私はVBO/IBO/CBOをキューブクラスに格納していますか?VBOをC++クラスに保存することはできますか?

同様:

class Cube { 
    private: 
     GLuint vBO; 
     GLuint cBO; 
     GLuint iBO; 

そして、私が呼ぶでしょう:

void Cube::setupDataBuffer() { 
    glGenBuffers(1, &vBO); 
    glBindBuffer(GL_ARRAY_BUFFER, vBO); 
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertexBufferData), vertexBufferData, GL_STATIC_DRAW); 

    glGenBuffers(1, &iBO); 
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, iBO); 
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indexBufferData), indexBufferData, GL_STATIC_DRAW); 

    glGenBuffers(1, &cBO); 
    glBindBuffer(GL_ARRAY_BUFFER, cBO); 
    glBufferData(GL_ARRAY_BUFFER, sizeof(colorBufferData), colorBufferData, GL_STATIC_DRAW); 
} 

しかし、私はその後、私のmain.cppには何もしてキューブを描画したい場合は、私はVBOを置くがあれば、表示されます/ CBO/IBOを私のメインに入れ、そこに他のコードを実行してキューブも表示されます。

私の質問は次のようなものです:クラス内でバッファオブジェクトを生成してバインドするにはどうすればよいですか?これは、あなたがオブジェクトごとに必要なすべてのコンテキストの設定を行います

void Cube::draw() { 
    glBindBuffer(GL_ARRAY_BUFFER, vBO); 
    glEnableVertexAttribArray(...); 
    glVertexAttribPointer(...); 

    glBindBuffer(GL_ARRAY_BUFFER, cBO); 
    glEnableVertexAttribArray(...); 
    glVertexAttribPointer(...); 

    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, iBO); 
    glDrawElements(...); 
} 

:私はあなたが好きな何かができる方法

+0

"クラス内でバッファオブジェクトを生成してバインドするにはどうすればいいですか?*"コードは自分のクラス内にあるという理由だけで変更されません。だから、バッファオブジェクトを使う方法が分かっているならば、クラスの中からそれらを使うことができるはずです。 –

答えて

0

で3.3 OpenGLと働いています。

関連する問題