Суффикс …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);