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); }
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; }