glewInit( ) とその他の openGL のものを初期化しました。これらの呼び出しを行う前にすべて。
glGenBuffers( 1, &m_uiVertBufferHandle );
glBindBuffer( GL_ARRAY_BUFFER, m_uiVertBufferHandle );
glBufferData( GL_ARRAY_BUFFER, 0, 0, GL_READ_WRITE );
glBindBuffer( GL_ARRAY_BUFFER, 0 );
これは、バッファオブジェクトを作成する方法です。iiは、glMapBufferが常に0x00000000を与えるようになる少なくとも1回呼び出さないと、ストレージスペースがまったくないopenGLの記事を読んだため、glBufferDataを実行しました。
後で glMapBuffer を呼び出して、glMapBuffer を使用するときにデータの保存を開始するストレージの場所を取得します。このように呼び出します
void* buffer1;
glBindBuffer( GL_ARRAY_BUFFER, m_uiVertBufferHandle );
//make sure our buffer excists
buffer1 = glMapBuffer( GL_ARRAY_BUFFER, GL_READ_WRITE );
buffer1 には常に 0x00000000 が入ります。どうしてこれなの?私が見つけた唯一の2つの原因は、glewInitを適切に初期化しなかったことと、少なくとも1回はglBindBufferDataを呼び出していなかったことです。