不支持的OpenGL函数和常量

时间:2013-01-21 07:28:07

标签: android c++ android-ndk opengl-es-2.0

我的程序在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>

我错过了什么,或者我真的不能使用这些常量和功能?

1 个答案:

答案 0 :(得分:1)

这是因为您在桌面计算机上使用立即或Opengl桌面功能,这些功能与任何版本的OpenGL兼容,但它们不适用于ES版本的OpenGL。例如,许多人在立即模式下实现他们的第一个引擎,然后他们尝试移植OpenGL ES 2.0设备。

OpenGL ES 2.0有自己的功能集,可以在官方文档中找到。 http://www.khronos.org/opengles/sdk/docs/man/

要获取其中一个报告的函数,OpenGL ES 2.0不支持glpointsize,因为您控制着色器中的点的大小而不是像在立即模式中那样在主代码中控制。 在这个非常特殊的大小中,点精灵(非常粗略)在顶点着色器中使用如下函数控制:

gl_PointSize = 10.0;

这是一个典型案例,您意识到移植到OpenGL ES 2.0有时需要完全重写您的引擎。