mirror of
https://github.com/MobileGL-Dev/MobileGlues.git
synced 2025-09-22 18:53:35 -04:00
[Feat] (...): Process more internal_format. Process more glsl types.
Signed-off-by: BZLZHH <admin@bzlzhh.top>
This commit is contained in:
parent
206c0c0921
commit
ac7ff18ca7
@ -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;
|
||||
|
@ -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")
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user