Esempio n. 1
0
bool $CLASS_NAME::resize (const ResizeInput &input)
{
    _viewport->set_bounds(AlignedBox<2>(ZERO, input.new_size()));

    glViewport(0, 0, (GLsizei)input.new_size()[WIDTH], (GLsizei)input.new_size()[HEIGHT]);
    check_graphics_error();

    return Scene::resize(input);
}
Esempio n. 2
0
			GLenum ShaderManager::compile(GLenum type, const Buffer * buffer)
			{
				GLuint shader = glCreateShader(type);

				const GLchar * source = (GLchar*)buffer->begin();
				GLint length = (GLint)buffer->size();
				glShaderSource(shader, 1, &source, &length);
				check_graphics_error();

				glCompileShader(shader);
				check_graphics_error();

				GLint log_length;
				glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length);
				if (log_length > 0) {
					Shared<MutableBuffer> buffer = PackedBuffer::new_buffer(log_length);

					glGetShaderInfoLog(shader, (GLsizei)buffer->size(), (GLsizei*)&log_length, (GLchar*)buffer->begin());

					LogBuffer log_buffer;
					log_buffer << "Error compiling shader:" << std::endl;
					log_buffer << buffer->begin() << std::endl;
					logger()->log(LOG_ERROR, log_buffer);
				}

				GLint status;
				glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
				if (status == 0) {
					logger()->log(LOG_ERROR, "Shader compilation failed!");

					glDeleteShader(shader);

					return 0;
				}

				check_graphics_error();

				return shader;
			}