在尝试运行我的游戏时,我正在处理我的Xperia Play手机上的一些兼容性问题,因此我必须找到所有使用的OpenGL ES扩展的引用 在我的应用程序内这引出了我的问题:除了通过eglGetProcAddress()函数之外,还有其他方法可以使用扩展吗?
祝你好运, 比于克。
答案 0 :(得分:0)
答案是肯定的。使用扩展的常规方法是直接通过名称调用它们,名称将包含以下字符串之一:
OES, ARB, IMG, PVR, EXT, AMD, VIV or NV
名称在这些头文件中定义:
#include <EGL/eglext.h>
#include <GLES2/gl2ext.h>
查询返回的名称不同。它们通常看起来像这样:
GL_AMD_compressed_3DC_texture GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_AMD_tiled_rendering GL_EXT_texture_filter_anisotropic GL_EXT_texture_type_2_10_10_10_REV GL_EXT_bgra GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_NV_fence
答案 1 :(得分:0)
不,并非所有扩展都定义了新的api调用,因此不会对所有扩展使用eglGetProcAddress。 好的例子是http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt - 看到这里有新的令牌(枚举),但没有新的功能。
然而,在没有* gl * ext.h标头的情况下编译,在ESSL中追踪eglGetProcAddress和“#extension”字符串将至少为您提供有关已使用的非核心功能的一些信息。