我已经初始化了 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 执行 glBufferData 是因为我在 openGL 文章中读到,如果您不至少调用一次它,您根本没有任何存储空间,这将使 glMapBuffer 总是给您 0x00000000。
稍后我调用 glMapBuffer 来获取我的存储位置以在我使用 glMapBuffer 时开始保存数据我这样称呼它
void* buffer1;
glBindBuffer( GL_ARRAY_BUFFER, m_uiVertBufferHandle );
//make sure our buffer excists
buffer1 = glMapBuffer( GL_ARRAY_BUFFER, GL_READ_WRITE );
我的缓冲区1中总是得到0x00000000。为什么是这样?我发现的唯一 2 个原因是我没有正确初始化 glewInit 并且我没有调用 glBindBufferData 至少一次。