Просмотр исходного кода

Validate GPUProgram before use

Daniele Bartolini 12 лет назад
Родитель
Сommit
3b771dc01d
1 измененных файлов с 10 добавлено и 2 удалено
  1. 10 2
      engine/renderers/gl/GLRenderer.h

+ 10 - 2
engine/renderers/gl/GLRenderer.h

@@ -311,10 +311,8 @@ struct GPUProgram
 		GL_CHECK(glAttachShader(m_id, pixel.m_id));
 
 		GL_CHECK(glLinkProgram(m_id));
-
 		GLint success;
 		GL_CHECK(glGetProgramiv(m_id, GL_LINK_STATUS, &success));
-
 		if (!success)
 		{
 			GLchar info_log[2048];
@@ -322,6 +320,16 @@ struct GPUProgram
 			CE_ASSERT(false, "GPU program compilation failed:\n%s", info_log);
 		}
 
+		GL_CHECK(glValidateProgram(m_id));
+		GLint valid;
+		GL_CHECK(glGetProgramiv(m_id, GL_VALIDATE_STATUS, &valid));
+		if (!valid)
+		{
+			GLchar info_log[2048];
+			GL_CHECK(glGetProgramInfoLog(m_id, 2048, NULL, info_log));
+			CE_ASSERT(false, "GPU program validation failed:\n%s", info_log);
+		}
+
 		// Find active attribs/uniforms
 		GLint num_active_attribs;
 		GLint num_active_uniforms;