- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的 iOS 游戏中,我想在可用时使用 GL_APPLE_texture_2D_limited_npot 扩展来节省内存(游戏有 NPOT 纹理,在我当前的实现中,我添加了一些填充来使它们成为 2 的幂)。
我正在我的 iPad(第一代)上进行测试。到目前为止我读到的所有内容都表明所有支持 OpenGLES2 的 iOS 设备(包括 iPad)也支持 GL_APPLE_texture_2D_limited_npot(这非常好,因为我的游戏使用 OpenGLES2)。我已经在我的 iPad 上进行了测试,它确实支持(如果我将 wrap 设置为 GL_CLAMP_TO_EDGE,我删除了填充并且图像可以工作),但是当我调用 glGetString(GL_EXTENSIONS) 时扩展没有显示。代码:
const char *extensions = (const char *)glGetString(GL_EXTENSIONS);
std::cout << extensions << "\n";
结果:
GL_OES_depth_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_float GL_OES_texture_half_float GL_OES_vertex_array_object GL_EXT_blend_minmax GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_shader_texture_lod GL_EXT_texture_filter_anisotropic GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level GL_IMG_read_format GL_IMG_texture_compression_pvrtc
为什么这个扩展没有用 glGetString(GL_EXTENSIONS) 显示?检查它的正确方法是什么?所有 OpenGLES2 iOS 设备真的都支持它吗?
最佳答案
OpenGL ES 2.0 在规范中支持非 2 次方纹理。无需扩展。这是规范:http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.25.pdf (第 69 页):
If wt and ht are the specified image width and height, and if either wt or ht are less than zero, then the error INVALID_VALUE is generated. The maximum allowable width and height of a two-dimensional texture image must be at least 2k-lod for image arrays of level zero through k, where k is the log base 2 of MAX_TEXTURE_SIZE. and lod is the level-of-detail of the image array. It may be zero for image arrays of any level-of-detail greater than k. The error INVALID_VALUE is generated if the specified image is too large to be stored under any conditions.
没有关于二次幂限制的字眼(在 OpenGL ES 1.x 标准中)。
如果您阅读扩展规范 - http://www.khronos.org/registry/gles/extensions/APPLE/APPLE_texture_2D_limited_npot.txt ,然后您会注意到它是根据 OpenGL ES 1.1 规范编写的。
关于ios - iPad 缺少 OpenGL 扩展字符串 GL_APPLE_texture_2D_limited_npot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10265978/
我是一名优秀的程序员,十分优秀!