Even though glGetString (GL_EXTENSIONS)
call says the extension is present
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
it seems the shader ignores level
parameter in textureLod
call. The visual result is the same as with texture
. I checked it with renderdoc and the texture has generated mipmaps. The mag filtering mod also uses LINEAR_MIPMAP_LINEAR
. Also, I'm sure the level
parameter is correct.
Also, shader compilation fails when I insert this statement in the beginning #extension GL_EXT_shader_texture_lod : require
(with #version 300 es
). With #version 100
and with the extension compilation succeeded.
I did not try switching to #version 100
completely, I'm not sure if it works.
My question is why I can't compile 300 es shader with the texture_lod extension even though it is present on the device?