[Change] Some tweaks to GL rendering. - I should point out, It wasn't me whom broke the textures. :P

This commit is contained in:
Allanis 2013-02-17 22:45:19 +00:00
parent 811fc0b92a
commit ba4b7239d4
2 changed files with 42 additions and 46 deletions

View File

@ -154,7 +154,7 @@ int main(int argc, char** argv) {
glClear(GL_COLOR_BUFFER_BIT);
fps_control(); // Who doesn't love FPS control?
if(!paused) update_space(); // Update the game.
if(!paused && !toolkit) update_space(); // Update the game.
render_space();
if(toolkit) toolkit_render();

View File

@ -358,65 +358,64 @@ void gl_blitSprite(const glTexture* sprite, const Vec2* pos, const int sx, const
fabs(VY(*pos) -VY(*gl_camera)+gui_yoff) > gl_screen.h / 2 + sprite->sh / 2)
return;
glEnable(GL_TEXTURE_2D);
glMatrixMode(GL_TEXTURE);
glPushMatrix();
glTranslated(sprite->sw * (double)(sx)/sprite->rw,
sprite->sh*(sprite->sy-(double)sy-1)/sprite->rh, 0.);
double x, y, tx, ty;
glMatrixMode(GL_PROJECTION);
glPushMatrix(); // Projection translation matrix.
glTranslated(VX(*pos) - VX(*gl_camera) - sprite->sw/2. + gui_xoff,
VY(*pos) -VY(*gl_camera) - sprite->sh/2. + gui_yoff, 0.);
//glScalef((double)gl_screen.w/SCREEN_W, (double)gl_screen.h/SCREEN_H, 0.);
x = VX(*pos) - VX(*gl_camera) - sprite->sw/2. + gui_xoff;
y = VY(*pos) - VY(*gl_camera) - sprite->sh/2. + gui_yoff;
tx = sprite->sw * (double)(sx)/sprite->rw;
ty = sprite->sh * (sprite->sy-(double)sy-1)/sprite->rh;
// Actual blitting....
glBindTexture(GL_TEXTURE_2D, sprite->texture);
glBegin(GL_TRIANGLE_STRIP);
glBegin(GL_QUADS);
if(c == NULL) glColor4d(1., 1., 1., 1.);
else COLOUR(*c);
glTexCoord2d(0., 0.);
glVertex2d(0., 0.);
glTexCoord2d(sprite->sw/sprite->rw, 0.);
glVertex2d(sprite->sw, 0.);
glTexCoord2d(0., sprite->sh/sprite->rh);
glVertex2d(0., sprite->sh);
glTexCoord2d(sprite->sw/sprite->rw, sprite->sh/sprite->rh);
glVertex2d(sprite->sw, sprite->sh);
glTexCoord2d(tx, ty);
glVertex2d(x, y);
glTexCoord2d(tx + sprite->sw/sprite->rw, ty);
glVertex2d(x + sprite->sw, y);
glTexCoord2d(tx + sprite->sw/sprite->rw, ty + sprite->sh/sprite->rh);
glVertex2d(x + sprite->sw, y + sprite->sh);
glTexCoord2d(tx, ty + sprite->sh/sprite->rh);
glVertex2d(x, y + sprite->sh);
glEnd();
glPopMatrix(); // Projection translation matrix.
glMatrixMode(GL_TEXTURE);
glPopMatrix(); // Sprite translation matrix.
glDisable(GL_TEXTURE_2D);
}
// Just straight out blit the thing at position.
void gl_blitStatic(const glTexture* texture, const Vec2* pos, const glColour* c) {
double x, y;
glEnable(GL_TEXTURE_2D);
glMatrixMode(GL_PROJECTION);
glPushMatrix(); // Set up translation matrix.
glTranslated(VX(*pos) - (double)gl_screen.w/2., VY(*pos) - (double)gl_screen.h/2., 0);
//glScaled((double)gl_screen.w/SCREEN_W, (double)gl_screen.h/SCREEN_H, 0.);
x = VX(*pos) - (double)gl_screen.w/2.;
y = VY(*pos) - (double)gl_screen.h/2.;
// Actual blitting..
glBindTexture(GL_TEXTURE_2D, texture->texture);
glBegin(GL_TRIANGLE_STRIP);
glBegin(GL_QUADS);
if(c == NULL) glColor4d(1., 1., 1., 1.);
else COLOUR(*c);
glTexCoord2d(0., 0.);
glVertex2d(0., 0.);
glTexCoord2d(texture->sw/texture->rw, 0.);
glVertex2d(texture->sw, 0.);
glTexCoord2d(0., texture->sh/texture->rh);
glVertex2d(0., texture->sh);
glTexCoord2d(texture->sw/texture->rw, texture->sh/texture->rh);
glVertex2d(texture->sw, texture->h);
glEnd();
glPopMatrix(); // Pop the translation matrix.
glTexCoord2d(0., 0.);
glVertex2d(x, y);
glTexCoord2d(texture->sw/texture->rw, 0.);
glVertex2d(x + texture->sw, y);
glTexCoord2d(texture->sw/texture->rw, texture->sh/texture->rh);
glVertex2d(x + texture->sw, y + texture->sh);
glTexCoord2d(0., texture->sh/texture->rh);
glVertex2d(x, y + texture->sh);
glEnd();
glDisable(GL_TEXTURE_2D);
}
@ -448,8 +447,7 @@ void gl_print(const glFont* ft_font, const double x, const double y,
glListBase(ft_font->list_base);
glMatrixMode(GL_PROJECTION);
glMatrixMode(GL_MODELVIEW);
glPushMatrix(); // Translation matrix.
glTranslated(x - (double)gl_screen.w/2., y - (double)gl_screen.h/2., 0);
@ -704,7 +702,8 @@ int gl_init(void) {
glDisable(GL_DEPTH_TEST); // Set for doing 2D shidazles.
//glEnable(GL_TEXTURE_2D); // Don't enable globally, it will break non-texture blits.
glDisable(GL_LIGHTING); // No lighting, it is done when rendered.
glMatrixMode(GL_PROJECTION);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-SCREEN_W /2, // Left edge.
@ -713,10 +712,7 @@ int gl_init(void) {
SCREEN_H /2, // Top edge.
-1., // Near.
1.); // Far.
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Alpha.
glEnable(GL_BLEND);
glPointSize(1.); // Default is 1.
glClear(GL_COLOR_BUFFER_BIT);
return 0;