根据官方文档扩展名,在OpenGL ES 2.0下不可用,这不是秘密。不过,NDK平台包含目录中的glext.h文件使我认为扩展确实可用。我知道在NDK下使用OpenGL与使用独立OpenGL没什么不同。因此,如果我在Java引擎接口和这些扩展之间建立类似JNI的桥梁,则可以使用它们。

所以问题是:如果我要使用可用的OpenGL,应该使用哪种体系结构解决方案ES2.0设备上的ES扩展?

评论

只是要注意,我肯定已经在Android上(以及本机代码中)通过GLES 2.0使用了扩展,因此您在解决方案的那部分应该没有任何问题。

我们是否正在考虑像这样的非常具体的编程问题?这是一个非常特定于API的编程问题,甚至不涉及与渲染技术或使用API​​来实现它们有关的任何内容。

@yuriks是的,我想我们绝对应该除非它们是与计算机图形学有关的非常具体的编程问题。实际上,我认为到目前为止,我们最缺乏具体的编程问题(可能是因为,如果您当时和那里都没有遇到这些问题,很难解决这些问题)。

#1 楼

我遇到了通过glGetString(GL_EXTENSIONS)公布某些扩展名的设备,并且没有公开入口点。我也遇到了相反的情况,扩展名不在扩展字符串中,但是入口点在那里并且可以正常工作。这取决于供应商是否已从GPU提供商禁用了驱动程序中的任何功能。

您将需要同时检查扩展字符串和通过eglGetProcAddress检查入口点是否为NULL。

除此之外,每个扩展都应符合Khronos扩展注册表,因此,如果需要,您可以直接在其中包含gl2ext.h。