diff options
author | Sam Lantinga <slouken@libsdl.org> | 2017-12-12 12:52:17 -0800 |
---|---|---|
committer | Sam Lantinga <slouken@libsdl.org> | 2017-12-12 12:52:17 -0800 |
commit | 2847b1d85bb7da260acf3c95a782732ead2b2688 (patch) | |
tree | b38bddb5737c869b2d4e116004243cdfa2b306f4 /src/render/opengles2/SDL_shaders_gles2.c | |
parent | 2006b1f102b0a482f361704ef82b8b4e54d0632d (diff) |
Added support for Android video textures
Diffstat (limited to 'src/render/opengles2/SDL_shaders_gles2.c')
-rw-r--r-- | src/render/opengles2/SDL_shaders_gles2.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c index 8b3306b66c..9fe583dbdf 100644 --- a/src/render/opengles2/SDL_shaders_gles2.c +++ b/src/render/opengles2/SDL_shaders_gles2.c @@ -275,6 +275,21 @@ static const Uint8 GLES2_FragmentSrc_TextureNV21BT709Src_[] = \ NV21_SHADER_BODY \ ; +/* Custom Android video format texture */ +static const Uint8 GLES2_FragmentSrc_TextureExternalOESSrc_[] = " \ + #extension GL_OES_EGL_image_external : require\n\ + precision mediump float; \ + uniform samplerExternalOES u_texture; \ + uniform vec4 u_modulation; \ + varying vec2 v_texCoord; \ + \ + void main() \ + { \ + gl_FragColor = texture2D(u_texture, v_texCoord); \ + gl_FragColor *= u_modulation; \ + } \ +"; + static const GLES2_ShaderInstance GLES2_VertexSrc_Default = { GL_VERTEX_SHADER, GLES2_SOURCE_SHADER, @@ -380,6 +395,13 @@ static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureNV12BT709Src = { GLES2_FragmentSrc_TextureNV12BT709Src_ }; +static const GLES2_ShaderInstance GLES2_FragmentSrc_TextureExternalOESSrc = { + GL_FRAGMENT_SHADER, + GLES2_SOURCE_SHADER, + sizeof(GLES2_FragmentSrc_TextureExternalOESSrc_), + GLES2_FragmentSrc_TextureExternalOESSrc_ +}; + /************************************************************************************************* * Vertex/fragment shader definitions * @@ -490,6 +512,13 @@ static GLES2_Shader GLES2_FragmentShader_TextureNV21BT709Src = { } }; +static GLES2_Shader GLES2_FragmentShader_TextureExternalOESSrc = { + 1, + { + &GLES2_FragmentSrc_TextureExternalOESSrc + } +}; + /************************************************************************************************* * Shader selector * @@ -528,6 +557,8 @@ const GLES2_Shader *GLES2_GetShader(GLES2_ShaderType type) return &GLES2_FragmentShader_TextureNV21BT601Src; case GLES2_SHADER_FRAGMENT_TEXTURE_NV21_BT709_SRC: return &GLES2_FragmentShader_TextureNV21BT709Src; + case GLES2_SHADER_FRAGMENT_TEXTURE_EXTERNAL_OES_SRC: + return &GLES2_FragmentShader_TextureExternalOESSrc; default: return NULL; } |