Merge branch 'develop' into text-renderer

This commit is contained in:
Brad Davis 2015-02-01 19:47:05 -08:00
commit 8bac67abf9

View file

@ -66,11 +66,8 @@ void main() {
//vFragColor = vec4(fract(vTexCoord), log(vTexCoord.x), 1.0);
})XXXX";
class QTestWindow : public QWindow
{
class QTestWindow : public QWindow {
Q_OBJECT
bool shuttingDown{ false };
QOpenGLContext * m_context;
ProgramPtr shader;
VertexArrayPtr vao;
@ -79,8 +76,17 @@ class QTestWindow : public QWindow
TextRenderer* _textRenderer[4];
public:
QTestWindow();
virtual ~QTestWindow();
void makeCurrent();
void draw();
QTestWindow() {
protected:
void resizeEvent(QResizeEvent * ev) override;
};
QTestWindow::QTestWindow() {
setSurfaceType(QSurface::OpenGLSurface);
QSurfaceFormat format;
@ -120,80 +126,71 @@ public:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
_textRenderer[0] = TextRenderer::getInstance(SANS_FONT_FAMILY, 12);
_textRenderer[1] = TextRenderer::getInstance("Something", 12);
_textRenderer[0] = TextRenderer::getInstance(SANS_FONT_FAMILY, 12, false);
_textRenderer[1] = TextRenderer::getInstance("Times New Roman", 12, TextRenderer::SHADOW_EFFECT);
_textRenderer[2] = TextRenderer::getInstance(MONO_FONT_FAMILY, 48, -1, false, TextRenderer::OUTLINE_EFFECT);
_textRenderer[3] = TextRenderer::getInstance(INCONSOLATA_FONT_FAMILY, 24);
}
}
virtual ~QTestWindow() {
}
QTestWindow::~QTestWindow() {
}
void makeCurrent() {
void QTestWindow::makeCurrent() {
m_context->makeCurrent(this);
}
}
void draw() {
static const char * EXAMPLE_TEXT = "Hello 1.0\nline 2";
static const glm::uvec2 QUAD_OFFSET(10, 20);
static const glm::vec3 COLORS[4] = {
{ 1, 1, 1 },
{ 0.5, 1.0, 0.5 },
{ 1.0, 0.5, 0.5 },
{ 0.5, 0.5, 1.0 },
};
void QTestWindow::draw() {
makeCurrent();
glViewport(0, 0, _size.width(), _size.height());
glClearColor(0.2f, 0.2f, 0.2f, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glColor3f(0.9, 0.9, 0.9);
glBegin(GL_LINES);
glVertex2f(-1, 0);
glVertex2f(1, 0);
glVertex2f(0, -1);
glVertex2f(0, 1);
glEnd();
glOrtho(0, _size.width(), _size.height(), 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
// glLoadIdentity();
static const char * EXAMPLE_TEXT = "Hello 1.0\nline 2";
static const glm::uvec2 offset(10, 20);
const glm::uvec2 size = glm::uvec2(_size.width() / 2, _size.height() / 2);
const glm::uvec2 offsets[4] = {
{ offset.x, offset.y },
{ _size.width() / 2 + offset.x, offset.y },
{ _size.width() / 2 + offset.x, _size.height() / 2 + offset.y },
{ offset.x, _size.height() / 2 + offset.y },
};
static const glm::vec3 colors[4] = {
{ 1, 1, 1 },
{ 0.5, 1.0, 0.5 },
{ 1.0, 0.5, 0.5 },
{ 0.5, 0.5, 1.0 },
{ QUAD_OFFSET.x, QUAD_OFFSET.y },
{ size.x + QUAD_OFFSET.x, QUAD_OFFSET.y },
{ size.x + QUAD_OFFSET.x, size.y + QUAD_OFFSET.y },
{ QUAD_OFFSET.x, size.y + QUAD_OFFSET.y },
};
{
glColor3f(0.9, 0.9, 0.9);
glBegin(GL_LINES);
glVertex2f(0, size.y);
glVertex2f(_size.width(), size.y);
glVertex2f(size.x, 0);
glVertex2f(size.x, _size.height());
glEnd();
}
for (int i = 0; i < 4; ++i) {
_textRenderer[i]->draw(offsets[i].x, offsets[i].y, EXAMPLE_TEXT, glm::vec4(colors[i], 1.0f));
_textRenderer[i]->draw(offsets[i].x, offsets[i].y, EXAMPLE_TEXT, glm::vec4(COLORS[i], 1.0f));
}
m_context->swapBuffers(this);
}
protected:
}
void resizeEvent(QResizeEvent * ev) override {
void QTestWindow::resizeEvent(QResizeEvent * ev) {
QWindow::resizeEvent(ev);
_size = ev->size();
float aspect = (float)_size.width() / (float)_size.height();
glm::vec2 ortho(1.0);
if (aspect > 1.0) {
ortho.y /= aspect;
} else {
ortho.x *= aspect;
}
float x = _size.width() / 2;
float y = _size.height() / 2;
glMatrixMode(GL_PROJECTION);
glOrtho(-100, 100, -100, 100, 1, -1);
//glOrtho(-_size.width() / 2, _size.width() / 2, -_size.height() / 2, _size.height() / 2, 1, -1);
//MatrixStack::projection().top() = glm::ortho(-ortho.x, ortho.x, -ortho.y, ortho.y);
glMatrixMode(GL_MODELVIEW);
}
};
}
int main(int argc, char** argv) {
QApplication app(argc, argv);