gpt4 book ai didi

c++ - glmapbufferOES 和 glunmapbuffer 在 opengl-es 2.0 中未声明

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:01 26 4
gpt4 key购买 nike

我正在使用 kronos header 在 ubuntu 10.10 中进行编码,但我被卡住了,因为每当我尝试编译代码时,它们都会出现错误:

glmapbuffer 未声明glunmapbuffer 未声明

我的头文件中有 gl2.h 和 gl2ext.h。谁能告诉我

如果我这样做我还能做什么:

    glBindBuffer(GL_ARRAY_BUFFER, uiVBO[surfnum]);
glBufferData(GL_ARRAY_BUFFER, 9*sizeof(GLfloat)*triNum[surfnum], NULL, GL_STATIC_DRAW);
GLfloat *pData = glMapBufferOES (GL_ARRAY_BUFFER, GL_WRITE_ONLY_OES);
for(i=0; i<triNum[surfnum]; ++i,pData+=9)
{
memcpy(pData, triArray[surfnum][i].pt1, 3*sizeof(GLfloat));
memcpy(pData+3, triArray[surfnum][i].pt2, 3*sizeof(GLfloat));
memcpy(pData+6, triArray[surfnum][i].pt3, 3*sizeof(GLfloat));
}
glUnmapBufferOES (GL_ARRAY_BUFFER);//clean up behind us

最佳答案

后缀 …OES 表示这些函数不是核心 OpenGL-ES 规范的一部分,但被认为是可选功能,非常类似于 …ARB 中提到的扩展标准 OpenGL 规范。与标准 OpenGL 一样,访问扩展的方法(如果可用)取决于目标平台。

但是在您的情况下,由于您尝试在标准桌面 Linux 上编译它,如果您坚持映射缓冲区,我建议采用以下解决方法。

/* before using glMapBufferOES */
#ifdef SYSTEM_HAS_STD_OPENGL
#define glMapBufferOES glMapBuffer
#define glUnmapBufferOES glUnmapBuffer
#endif

当然,您可以只用数据填充代理数组,将其提供给 glBufferData 而根本不映射:

glBindBuffer(GL_ARRAY_BUFFER, uiVBO[surfnum]);
size_t buf_size = 9*sizeof(GLfloat)*triNum[surfnum];
GLfloat * const pData = malloc(buf_size);
for(i=0; i<triNum[surfnum]; ++i) {
memcpy(pData+i*9, triArray[surfnum][i].pt1, 3*sizeof(GLfloat));
memcpy(pData+i*9+3, triArray[surfnum][i].pt2, 3*sizeof(GLfloat));
memcpy(pData+i*9+6, triArray[surfnum][i].pt3, 3*sizeof(GLfloat));
}
glBufferData(GL_ARRAY_BUFFER, buf_size, pData, GL_STATIC_DRAW);
free(pData);

关于c++ - glmapbufferOES 和 glunmapbuffer 在 opengl-es 2.0 中未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6569255/

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