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>

我是否遗漏了什么,或者我真的不能使用这些常量和函数?

4

1 回答 1

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 有时需要完全重写您的引擎。

于 2013-01-22T08:44:17.383 回答