diff --git a/src/main/cpp/gl/glsl/glsl_for_es.cpp b/src/main/cpp/gl/glsl/glsl_for_es.cpp index fb3e700..6548bf4 100644 --- a/src/main/cpp/gl/glsl/glsl_for_es.cpp +++ b/src/main/cpp/gl/glsl/glsl_for_es.cpp @@ -326,11 +326,21 @@ char* GLSLtoGLSLES_2(char* glsl_code, GLenum glsl_type, uint essl_version) { case GL_COMPUTE_SHADER: shader_language = EShLanguage::EShLangCompute; break; + case GL_TESS_CONTROL_SHADER: + shader_language = EShLanguage::EShLangTessControl; + break; + case GL_TESS_EVALUATION_SHADER: + shader_language = EShLanguage::EShLangTessEvaluation; + break; + case GL_GEOMETRY_SHADER: + shader_language = EShLanguage::EShLangGeometry; + break; default: LOG_D("GLSL type not supported!"); return nullptr; } + glslang::TShader shader(shader_language); char* correct_glsl = glsl_code; diff --git a/src/main/cpp/gl/shader.c b/src/main/cpp/gl/shader.c index acd71ac..54b4e92 100644 --- a/src/main/cpp/gl/shader.c +++ b/src/main/cpp/gl/shader.c @@ -78,8 +78,10 @@ void glShaderSource(GLuint shader, GLsizei count, const GLchar *const* string, c converted = glsl_version<140?GLSLtoGLSLES_1(source, shaderType):GLSLtoGLSLES_2(source,shaderType,320); LOG_D("\n[INFO] [Shader] Converted Shader source: \n%s", converted); } - - gles_glShaderSource(shader, count, (const GLchar * const*)&converted, length); + if (converted) + gles_glShaderSource(shader, count, (const GLchar * const*)&converted, NULL); + else + LOG_E("Failed to convert glsl.") CHECK_GL_ERROR } else { LOG_E("No gles_glShaderSource") diff --git a/src/main/cpp/gl/texture.c b/src/main/cpp/gl/texture.c index 2d10143..4c88718 100644 --- a/src/main/cpp/gl/texture.c +++ b/src/main/cpp/gl/texture.c @@ -39,13 +39,14 @@ void internal_convert(GLenum* internal_format, GLenum* type) { } else if (*type == GL_FLOAT) { *internal_format = GL_DEPTH_COMPONENT32F; } else if (*type == GL_DOUBLE) { - *internal_format = GL_DEPTH_COMPONENT32; + *internal_format = GL_DEPTH_COMPONENT32F; + *type = GL_FLOAT; } break; case GL_DEPTH_STENCIL: - *internal_format = GL_DEPTH24_STENCIL8; - *type = GL_UNSIGNED_INT_24_8; + *internal_format = GL_DEPTH32F_STENCIL8; + *type = GL_FLOAT_32_UNSIGNED_INT_24_8_REV; break; case GL_RGB10_A2: @@ -53,7 +54,7 @@ void internal_convert(GLenum* internal_format, GLenum* type) { break; case GL_RGB5_A1: - *type = GL_UNSIGNED_SHORT_5_5_5_1; + *type = GL_UNSIGNED_INT_2_10_10_10_REV; break; case GL_COMPRESSED_RED_RGTC1: @@ -92,7 +93,8 @@ void internal_convert(GLenum* internal_format, GLenum* type) { break; case GL_RGBA16: - *type = GL_UNSIGNED_SHORT; + *internal_format = GL_RGBA16F; + *type = GL_FLOAT; break; case GL_RGBA8: @@ -107,9 +109,6 @@ void internal_convert(GLenum* internal_format, GLenum* type) { if (*internal_format == GL_RGB8 && *type != GL_UNSIGNED_BYTE) { *type = GL_UNSIGNED_BYTE; } - else if (*internal_format == GL_RGBA16F && *type != GL_HALF_FLOAT) { - *type = GL_HALF_FLOAT; - } else if (*internal_format == GL_RGBA16_SNORM && *type != GL_SHORT) { *type = GL_SHORT; }