浏览代码

Validate GPUProgram before use

Daniele Bartolini 12 年之前
父节点
当前提交
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(glAttachShader(m_id, pixel.m_id));
 
 
 		GL_CHECK(glLinkProgram(m_id));
 		GL_CHECK(glLinkProgram(m_id));
-
 		GLint success;
 		GLint success;
 		GL_CHECK(glGetProgramiv(m_id, GL_LINK_STATUS, &success));
 		GL_CHECK(glGetProgramiv(m_id, GL_LINK_STATUS, &success));
-
 		if (!success)
 		if (!success)
 		{
 		{
 			GLchar info_log[2048];
 			GLchar info_log[2048];
@@ -322,6 +320,16 @@ struct GPUProgram
 			CE_ASSERT(false, "GPU program compilation failed:\n%s", info_log);
 			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
 		// Find active attribs/uniforms
 		GLint num_active_attribs;
 		GLint num_active_attribs;
 		GLint num_active_uniforms;
 		GLint num_active_uniforms;