| 53 | |
| 54 | |
| 55 | void Shader::createAndLinkProgram() |
| 56 | { |
| 57 | m_program = glCreateProgram (); |
| 58 | for (unsigned char i = 0; i < 3; i++) |
| 59 | { |
| 60 | if (m_shaders[i] != 0) |
| 61 | glAttachShader(m_program, m_shaders[i]); |
| 62 | } |
| 63 | |
| 64 | GLint status; |
| 65 | glLinkProgram (m_program); |
| 66 | glGetProgramiv (m_program, GL_LINK_STATUS, &status); |
| 67 | if (status == GL_TRUE) |
| 68 | m_initialized = true; |
| 69 | else |
| 70 | { |
| 71 | GLint infoLogLength; |
| 72 | |
| 73 | glGetProgramiv (m_program, GL_INFO_LOG_LENGTH, &infoLogLength); |
| 74 | GLchar *infoLog= new GLchar[infoLogLength]; |
| 75 | glGetProgramInfoLog (m_program, infoLogLength, NULL, infoLog); |
| 76 | std::cerr << "Link log: " << infoLog << std::endl; |
| 77 | delete [] infoLog; |
| 78 | } |
| 79 | |
| 80 | for (unsigned char i = 0; i < 3; i++) |
| 81 | glDeleteShader(m_shaders[i]); |
| 82 | } |
| 83 | |
| 84 | void Shader::destroy() |
| 85 | { |
no outgoing calls
no test coverage detected