Przeglądaj źródła

feat: 修改几何着色器数据绑定作物

NiceTry12138 9 miesięcy temu
rodzic
commit
6823ace68f

+ 5 - 1
图形学/OpenGL学习/src/OpenGLDemo/OpenGLDemo/res/shader/GeoShader/line.gs

@@ -8,7 +8,11 @@ in VS_OUT {
 
 const float MAGNITUDE = 1.0f;
 
-uniform mat4 projection;
+// 添加与顶点着色器一致的 UBO 声明
+layout (std140) uniform Matrices {
+    mat4 view;
+    mat4 projection;
+};
 
 void GenerateLine(int index)
 {

+ 14 - 0
图形学/OpenGL学习/src/OpenGLDemo/OpenGLDemo/src/Util/Shader.cpp

@@ -249,6 +249,7 @@ bool Shader::IsValid()
 void Shader::DeleteShader()
 {
 	GL_CALL(glDeleteShader(m_ShaderID));
+	m_ShaderID = GL_ZERO;
 }
 
 GLint Shader::GetShaderLocation(const std::string& inName)
@@ -306,6 +307,19 @@ GLuint Shader::CompileShader(const std::string& inSource, GLenum inType)
 	GL_CALL(glShaderSource(shaderId, 1, &source, nullptr));			// 传入 nullptr 表示读取整个字符串数组
 	GL_CALL(glCompileShader(shaderId));
 
+	switch (inType)
+	{
+	case GL_VERTEX_SHADER:
+		checkCompileErrors(shaderId, "VERTEX");
+		break;
+	case GL_FRAGMENT_SHADER:
+		checkCompileErrors(shaderId, "FRAGMENT");
+		break;
+	case GL_GEOMETRY_SHADER:
+		checkCompileErrors(shaderId, "GEOMETRY");
+		break;
+	}
+
 	GLint errorId;
 	GL_CALL(glGetShaderiv(shaderId, GL_COMPILE_STATUS, &errorId));
 	if (errorId == GL_FALSE)

+ 4 - 4
图形学/OpenGL学习/src/OpenGLDemo/OpenGLDemo/src/testModule/TestGeoShader.cpp

@@ -56,10 +56,10 @@ void TestGeoShader::Render(GLFWwindow* window)
 	auto model = glm::mat4(1.0f);
 	model = glm::rotate(model, glm::radians(-90.0f), glm::vec3(1, 0, 0));
 
-	//m_ModelShader.Bind();
-	//m_ModelShader.SetUniformMat4f("model", model);
-	//m_ModelShader.BindUBO("Matrices", UBOSLOT);
-	//m_packageModel.Draw(m_ModelShader);
+	m_ModelShader.Bind();
+	m_ModelShader.SetUniformMat4f("model", model);
+	m_ModelShader.BindUBO("Matrices", UBOSLOT);
+	m_packageModel.Draw(m_ModelShader);
 
 	m_GeoShader.Bind();
 	m_GeoShader.SetUniformMat4f("model", model);