7{
8 GLuint vertShader = CompileShader(vertexSrc, GL_VERTEX_SHADER, "Vertex");
9 GLuint geomShader = CompileShader(geometrySource, GL_GEOMETRY_SHADER, "Geometry");
10 GLuint fragShader = CompileShader(fragmentSrc, GL_FRAGMENT_SHADER, "Fragment");
11 m_Shader = CreateProgram();
12 glAttachShader(m_Shader, vertShader);
13 glAttachShader(m_Shader, geomShader);
14 glAttachShader(m_Shader, fragShader);
15 glLinkProgram(m_Shader);
16 GLint isLinked = 0;
17 glGetProgramiv(m_Shader, GL_LINK_STATUS, (int *)&isLinked);
18
19 if (isLinked == GL_FALSE)
20 {
21 GLint maxLength = 0;
22 glGetProgramiv(m_Shader, GL_INFO_LOG_LENGTH, &maxLength);
23 char *errorLog = (char *)malloc(maxLength);
24 memset(errorLog, 0, maxLength);
25 glGetProgramInfoLog(m_Shader, maxLength, &maxLength, errorLog);
26 glDeleteProgram(m_Shader);
27 glDeleteShader(vertShader);
28 glDeleteShader(fragShader);
29 Log(errorLog);
30 return;
31 }
32
33 glDetachShader(m_Shader, vertShader);
34 glDetachShader(m_Shader, fragShader);
35 glDetachShader(m_Shader, geomShader);
36 glDeleteShader(vertShader);
37 glDeleteShader(fragShader);
38 glDeleteShader(geomShader);
39}