/
glwrenderer.cpp
76 lines (62 loc) · 1.75 KB
/
glwrenderer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "glwrenderer.h"
#include <QMouseEvent>
#include "demoscene1.h"
#include "scenemanager.h"
#include <QGLContext>
#include "renderer.h"
#include "log.h"
GLWRenderer::GLWRenderer(QGLFormat &format, QWidget *parent) :
QGLWidget(format,parent)
{
renderer = Renderer::create(context(),this);
scnManager = new SceneManager(this);
}
GLWRenderer::~GLWRenderer()
{
// deleteTexture(texture);
}
bool GLWRenderer::event(QEvent *e)
{
if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonRelease || e->type() == QEvent::Timer)
{
scnManager->event(e);
}
return QGLWidget::event(e);
}
static DemoScene1 *scene;
void GLWRenderer::initializeGL()
{
renderer->initialize();
// Use QBasicTimer because its faster than QTimer
timer.start(12, this);
scene = scnManager->createScene<DemoScene1>();
scene->onCreate();
scnManager->setActiveScene(scene);
}
void GLWRenderer::initTextures()
{
return;
/*
// Load cube.png image
glEnable(GL_TEXTURE_2D);
texture = bindTexture(QImage(":/cube.png"));
// Set nearest filtering mode for texture minification
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
// Set bilinear filtering mode for texture magnification
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Wrap texture coordinates by repeating
// f.ex. texture coordinate (1.1, 1.2) is same as (0.1, 0.2)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
*/
}
void GLWRenderer::resizeGL(int w, int h)
{
renderer->setSize(w,h);
scnManager->resize(w,h);
}
void GLWRenderer::paintGL()
{
scnManager->Render(renderer);
update();
}