TerraForge3D  2.3.1
3D Terrain And Landscape Generator

◆ Shader() [2/2]

Shader::Shader ( std::string  vertexStc,
std::string  fragmentSrc 
)

Definition at line 42 of file Shader.cpp.

43{
44 GLuint vertShader = CompileShader(vertexSrc, GL_VERTEX_SHADER, "Vertex");
45 GLuint fragShader = CompileShader(fragmentSrc, GL_FRAGMENT_SHADER, "Fragment");
46 m_Shader = CreateProgram();
47 glAttachShader(m_Shader, vertShader);
48 glAttachShader(m_Shader, fragShader);
49 glLinkProgram(m_Shader);
50 GLint isLinked = 0;
51 glGetProgramiv(m_Shader, GL_LINK_STATUS, (int *)&isLinked);
52
53 if (isLinked == GL_FALSE)
54 {
55 GLint maxLength = 0;
56 glGetProgramiv(m_Shader, GL_INFO_LOG_LENGTH, &maxLength);
57 char *errorLog = (char *)malloc(maxLength);
58 memset(errorLog, 0, maxLength);
59 glGetProgramInfoLog(m_Shader, maxLength, &maxLength, errorLog);
60 glDeleteProgram(m_Shader);
61 glDeleteShader(vertShader);
62 glDeleteShader(fragShader);
63 Log(errorLog);
64 return;
65 }
66
67 glDetachShader(m_Shader, vertShader);
68 glDetachShader(m_Shader, fragShader);
69 glDeleteShader(vertShader);
70 glDeleteShader(fragShader);
71}