gpt4 book ai didi

opengl - glMapBuffer 不断返回 0x00000000

转载 作者:行者123 更新时间:2023-12-02 06:17:49 26 4
gpt4 key购买 nike

我已经初始化了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 );

这就是我创建缓冲区对象的方式,我做了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 );

我的 buffer1 中总是得到 0x00000000。为什么是这样?我发现的唯一两个原因是我没有正确初始化 glewInit (我已经完成了)并且我没有至少调用一次 glBindBufferData。

最佳答案

glBufferData( GL_ARRAY_BUFFER, 0, 0, GL_READ_WRITE );

GL_READ_WRITEnot a valid usage for buffer objects 。您将其用于映射,而不是缓冲区对象的使用。使用参数类似于 GL_STATIC_DRAW,或更适合您的“读/写”情况,GL_DYNAMIC_READ

由于您传递了无效的枚举,OpenGL 给您一个 GL_INVALID_ENUM 错误,并且无法执行此命令。此外,0 长度的缓冲区对象对于缓冲区的存储来说不是合理的大小。有时尝试 new int[0]malloc(0) 看看会发生什么。

请停止allocating miniscule or non-existent sizes of data.如果你真的想测试这个,请分配 4096 字节或其他东西。

关于opengl - glMapBuffer 不断返回 0x00000000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com