#include #include "myglwidget.h" #include "sparrowrenderer.h" #include "glassert.h" #include #include MyGLWidget::MyGLWidget(QWidget *parent) : QGLWidget(parent), renderer(NULL) { } MyGLWidget::~MyGLWidget() { if(renderer != NULL) delete(renderer); } void MyGLWidget::initializeGL() { makeCurrent(); GLenum err = glewInit(); // init and check glew if (GLEW_OK != err) { std::cerr << "Warning: glewInit failed!" << std::endl; } if (!GLEW_ARB_vertex_program || !GLEW_ARB_fragment_program || !GLEW_ARB_texture_float || !GLEW_ARB_draw_buffers || !GLEW_ARB_framebuffer_object) { std::cerr << "Warning: Shaders not supported!" << std::endl; } std::cout << "OpenGL version " << glGetString(GL_VERSION) << std::endl; std::cout << "GLSL version " << glGetString(GL_SHADING_LANGUAGE_VERSION) << std::endl; std::cout.flush(); glAssert(glEnable(GL_DEPTH_TEST)); glAssert(glEnable(GL_CULL_FACE)); glAssert(glEnable(GL_TEXTURE_2D)); glAssert(glViewport(0, 0, width(), height())); renderer = new SparrowRenderer(width(), height()); } void MyGLWidget::resizeGL(int width, int height) { glAssert(glViewport(0, 0, width, height)); renderer->resize(width, height); updateGL(); } void MyGLWidget::paintGL() { glAssert(glClearColor(0.60, 0.65, 0.75, 1.0)); glAssert(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); renderer->render(); }