2017-02-01 23 views
1

Даже если glGetString (GL_EXTENSIONS) вызова говорит расширение присутствуетРасширение EXT_shader_texture_lod не работает на OpenGL ES 3.0 прошивке

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, и текстура сгенерировала mipmaps. Модификационный фильтр также использует LINEAR_MIPMAP_LINEAR. Кроме того, я уверен, что параметр level верен.

Кроме того, компиляция шейдера не выполняется, когда я вставляю этот оператор в начале #extension GL_EXT_shader_texture_lod : require#version 300 es). С #version 100 и с расширением компиляции удалось.

Я не пытался полностью переключиться на #version 100, я не уверен, что он работает.

Мой вопрос: почему я не могу скомпилировать 300 es shader с расширением texture_lod, даже если он присутствует на устройстве?

+0

может быть, вы должны показать свой шейдер? – MuertoExcobito

ответ

1

Мой вопрос: почему я не могу скомпилировать 300 es shader с расширением texture_lod , хотя он присутствует на устройстве?

... потому что это расширение, специально предназначенное для OpenGL ES ES 2.x шейдеров (#version 100).

Поддержка textureLod() является основной профиль в OpenGL ES 3.x ESSL #version 300 так что вам не нужно расширение ...