summaryrefslogtreecommitdiff
path: root/application.cpp
diff options
context:
space:
mode:
authorVegard Storheil Eriksen <zyp@jvnv.net>2010-05-21 18:00:25 +0200
committerVegard Storheil Eriksen <zyp@jvnv.net>2010-05-21 18:00:25 +0200
commit88b1e9e505dad78fd2c3ff927495d322b11491ca (patch)
treebc1a13c3204a6fea70a56344f949c56d2efbd854 /application.cpp
parent2626d880a58b99ff70e43f36575517c3fbb2c7b9 (diff)
Added support for multiple resolutions.
Diffstat (limited to 'application.cpp')
-rw-r--r--application.cpp40
1 files changed, 23 insertions, 17 deletions
diff --git a/application.cpp b/application.cpp
index ebf412d..2ef8e79 100644
--- a/application.cpp
+++ b/application.cpp
@@ -203,25 +203,26 @@ void Application::main_loop(unsigned int tick, unsigned int step) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
- glOrtho(0, Config::window_w, 0, Config::window_h, 0, 10);
+ float xo = float(Config::window_w)/float(Config::window_h)/2.5 - 0.5;
+ glOrtho(-xo, 1 + xo, 0, 0.8, 0, 10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D, background->tex());
glBegin(GL_QUADS);
- glTexCoord2f(0, 0);
- glVertex2i(0, 0);
glTexCoord2f(0, 1);
- glVertex2i(0, Config::window_h);
- glTexCoord2f(1, 1);
- glVertex2i(Config::window_w, Config::window_h);
+ glVertex2f(-1.9/9.0, 0);
+ glTexCoord2f(0, 0);
+ glVertex2f(-1.9/9.0, 0.8);
glTexCoord2f(1, 0);
- glVertex2i(Config::window_w, 0);
+ glVertex2f(10.9/9.0, 0.8);
+ glTexCoord2f(1, 1);
+ glVertex2f(10.9/9.0, 0);
glEnd();
glDisable(GL_TEXTURE_2D);
- glColor4f(0, 0, 0, 1);
+ glColor4f(1, 1, 0, 1);
char s[0xff];
@@ -236,12 +237,17 @@ void Application::main_loop(unsigned int tick, unsigned int step) {
glRasterPos2f(Config::fps_x, Config::fps_y);
font->Render(s);
+ float v_x = Config::window_w * (Config::viewport_x + xo) / (1 + 2 * xo);
+ float v_y = Config::window_h * Config::viewport_y;
+ float v_w = Config::window_h * Config::viewport_w;
+ float v_h = Config::window_h * Config::viewport_h;
+
glViewport(
- Config::viewport_x - Config::viewport_overscan,
- Config::viewport_y - Config::viewport_overscan,
- Config::viewport_w + Config::viewport_overscan * 2,
- Config::viewport_h + Config::viewport_overscan * 2);
- glScissor(Config::viewport_x, Config::viewport_y, Config::viewport_w, Config::viewport_h);
+ v_x - Config::viewport_overscan,
+ v_y - Config::viewport_overscan,
+ v_w + Config::viewport_overscan * 2,
+ v_h + Config::viewport_overscan * 2);
+ glScissor(v_x, v_y, v_w, v_h);
glEnable(GL_SCISSOR_TEST);
glClearColor(0.2, 0.2, 0.2, 0);
@@ -277,10 +283,10 @@ void Application::main_loop(unsigned int tick, unsigned int step) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(
- -float(Config::viewport_overscan) / float(Config::viewport_w),
- 1.0 + float(Config::viewport_overscan) / float(Config::viewport_w),
- -float(Config::viewport_overscan) / float(Config::viewport_w),
- Config::viewport_aspect + float(Config::viewport_overscan) / float(Config::viewport_w),
+ -float(Config::viewport_overscan) / float(v_w),
+ 1.0 + float(Config::viewport_overscan) / float(v_w),
+ -float(Config::viewport_overscan) / float(v_w),
+ Config::viewport_aspect + float(Config::viewport_overscan) / float(v_w),
0, 10);
glMatrixMode(GL_MODELVIEW);