Преглед изворни кода

GL: Fixed GLSL version when texelFetch is used. Issue #725.

Branimir Karadžić пре 9 година
родитељ
комит
6484b283dc
1 измењених фајлова са 14 додато и 6 уклоњено
  1. 14 6
      src/renderer_gl.cpp

+ 14 - 6
src/renderer_gl.cpp

@@ -901,6 +901,13 @@ namespace bgfx { namespace gl
 		NULL
 	};
 
+	static const char* s_texelFetch[] =
+	{
+		"texelFetch",
+		"texelFetchOffset",
+		NULL
+	};
+
 	static void GL_APIENTRY stubVertexAttribDivisor(GLuint /*_index*/, GLuint /*_divisor*/)
 	{
 	}
@@ -4821,16 +4828,17 @@ namespace bgfx { namespace gl
 				else if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL)
 					 &&  BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGL <= 21) )
 				{
-					bool usesTextureLod = true
+					const bool usesTextureLod = true
 						&& s_extension[Extension::ARB_shader_texture_lod].m_supported
 						&& bx::findIdentifierMatch(code, s_ARB_shader_texture_lod)
 						;
+					const bool usesIUsamplers = !!bx::findIdentifierMatch(code, s_uisamplers);
+					const bool usesTexelFetch = !!bx::findIdentifierMatch(code, s_texelFetch);
 
-					bool usesIUsamplers = !!bx::findIdentifierMatch(code, s_uisamplers);
-
-					uint32_t version = usesIUsamplers
-						? 130
-						: (usesTextureLod ? 120 : 0)
+					uint32_t version =
+						  usesTexelFetch || usesIUsamplers ? 130
+						: usesTextureLod ? 120
+						: 0
 						;
 
 					if (0 != version)