iPad отсутствует строка расширения OpenGL GL_APPLE_texture_2D_limited_npot

В моей iOS-игре я хочу использовать расширение GL_APPLE_texture_2D_limited_npot, когда доступно для сохранения памяти (в игре есть текстуры NPOT, и в моей текущей реализации я добавляю несколько дополнений, чтобы сделать их двумя).

Я тестирую свой iPad (первое поколение). Все, что я прочитал до сих пор, говорит о том, что все устройства iOS, поддерживающие OpenGLES2 (включая 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):

Если wt и ht – заданная ширина и высота изображения, а если wt или ht меньше нуля, то генерируется ошибка INVALID_VALUE. Максимально допустимая ширина и высота двумерного текстурного изображения должна быть не менее 2 k-lod для массивов изображений с нулевым уровнем нуля через k, где k – это логарифмическая база 2 MAX_TEXTURE_SIZE. и lod – это уровень детализации массива изображений. Он может быть равен нулю для массивов изображений любого уровня детализации, большего, чем k. Ошибка INVALID_VALUE генерируется, если указанное изображение слишком велико для хранения в любых условиях.

Ни слова о силе двух ограничений (то есть в стандарте OpenGL ES 1.x).

И если вы прочтете спецификацию расширения – http://www.khronos.org/registry/gles/extensions/APPLE/APPLE_texture_2D_limited_npot.txt , то вы заметите, что она снова написана в спецификации OpenGL ES 1.1.

  • Может ли «Uninitialized Buffer Data» быть ложным положительным в OpenGL ES Analyzer?
  • Более быстрая альтернатива glReadPixels в iPhone OpenGL ES 2.0
  • Является ли OpenGL потоком для нескольких потоков с различными контекстами?
  • Определенные размеры фреймбуферов выходят из строя на устройствах iOS (GL_FRAMEBUFFER_UNSUPPORTED)
  • GPUImage shader crashing с «ERROR: один или несколько прикрепленных шейдеров, которые не были успешно скомпилированы»
  • Каков наиболее эффективный способ отображения CVImageBufferRef на iOS
  • Как динамически изменять скорость воспроизведения видео в iOS?
  • Как применить правильную перспективу к этой текстуре OpenGL ES?
  • Где я могу найти iPhone OpenGL ES Пример, который реагирует на касание?
  • Декодирование видеокадров на iPhone GPU
  • Синхронизация макета UIView с кадрами OpenGL
  • Давайте будем гением компьютера.