Моя программа прекрасно работает в среде Windows, но при попытке скомпилировать ее на Android, я получаю ошибки о не объявленных функций и констант. Они включают:
GL_DEPTH24_STENCIL8,
GL_DEPTH_STENCIL,
GL_UNSIGNED_INT_24_8,
GL_DRAW_FRAMEBUFFER,
glPointSize()
Другие методы работают нормально.
Я включаю эти заголовки для графики:
#include <EGL/egl.h>
#include <GLES2/gl2.h>
Я что-то упустил, или я действительно не могу использовать эти константы и функции?
Это связано с тем, что на вашем настольном компьютере вы используете непосредственные функции или функции рабочего стола Opengl, которые совместимы с любой версией OpenGL, хотя они не работают в ES-версии OpenGL. Например, многие люди внедряют свои первые движки в непосредственном режиме, а затем пытаются портировать на устройства OpenGL ES 2.0.
OpenGL ES 2.0 имеет собственный набор функций, который вы можете найти в официальной документации. http://www.khronos.org/opengles/sdk/docs/man/
Чтобы использовать одну из представленных функций, glpointsize не поддерживается в OpenGL ES 2.0, поскольку вы управляете размером точки в своих шейдерах, а не в основном коде, как в непосредственном режиме.
В этом очень конкретном размере точечный спрайт (очень грубо) контролируется в вашем вершинном шейдере с помощью функции, подобной:
gl_PointSize = 10,0;
Это типичный случай, когда вы понимаете, что портирование на OpenGL ES 2.0 иногда требует полного переписывания вашего движка.
Других решений пока нет …