64 lines
1.5 KiB
C++
64 lines
1.5 KiB
C++
#include <glew/glew.h>
|
|
#include "myglwidget.h"
|
|
#include "sparrowrenderer.h"
|
|
#include "glassert.h"
|
|
#include <iostream>
|
|
#include <glm/glm.hpp>
|
|
|
|
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();
|
|
}
|