Расширение EXT_shader_texture_lod не работает на OpenGL ES 3.0 iOS
Даже если glGetString (GL_EXTENSIONS)
звонок говорит, что расширение присутствует
GL version: OpenGL ES 3.0 Apple A8 GPU - 95.58
GL vendor: Apple Inc.
GL renderer: Apple A8 GPU
GLSL version: OpenGL ES GLSL ES 3.00
GLSL extensions:
1 > GL_OES_standard_derivatives
2 > GL_KHR_texture_compression_astc_ldr
3 > GL_EXT_color_buffer_half_float
4 > GL_EXT_debug_label
5 > GL_EXT_debug_marker
6 > GL_EXT_pvrtc_sRGB
7 > GL_EXT_read_format_bgra
8 > GL_EXT_separate_shader_objects
9 > GL_EXT_shader_framebuffer_fetch
10 > GL_EXT_shader_texture_lod <--------------------
11 > GL_EXT_shadow_samplers
12 > GL_EXT_texture_filter_anisotropic
13 > GL_APPLE_clip_distance
14 > GL_APPLE_color_buffer_packed_float
15 > GL_APPLE_copy_texture_levels
16 > GL_APPLE_rgb_422
17 > GL_APPLE_texture_format_BGRA8888
18 > GL_IMG_read_format
19 > GL_IMG_texture_compression_pvrtc
кажется шейдер игнорирует level
параметр в textureLod
вызов. Визуальный результат такой же, как с texture
, Я проверил это с помощью renderdoc, и текстура создала мипмапы. Мод Mag Filtering также использует LINEAR_MIPMAP_LINEAR
, Кроме того, я уверен, что level
параметр правильный.
Кроме того, шейдерная компиляция завершается неудачно, когда я вставляю этот оператор в начале #extension GL_EXT_shader_texture_lod : require
(с #version 300 es
). С #version 100
и с расширением компиляции удалось.
Я не пробовал переходить на #version 100
полностью, я не уверен, что это работает.
У меня вопрос, почему я не могу скомпилировать шейдер 300 es с расширением texture_lod, даже если он присутствует на устройстве?
2 ответа
У меня вопрос, почему я не могу скомпилировать шейдер 300 es с расширением texture_lod, даже если он присутствует на устройстве?
... потому что это расширение, специально предназначенное для шейдеров OpenGL ES ES 2.x (#version 100
).
Поддержка для textureLod()
основной профиль в OpenGL ES 3.x ESSL #version 300
так что вам не нужно расширение...
Вы можете попробовать поставить
#extension GL_EXT_shader_texture_lod : enable
в шейдере это работает.