Mercurial > projects > mde
view mde/gl/draw.d @ 48:a98ffb64f066
Implemented font rendering (grayscale only; i.e. non-LCD).
FontTexture creates a texture and caches glyphs.
Font supports multiple styles/faces, loaded from config file (should probably be loaded via Options instead).
TextBlock cache for glyph placement within a string.
committer: Diggory Hardy <diggory.hardy@gmail.com>
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 31 May 2008 12:40:26 +0100 |
parents | 0fd51d2c6c8a |
children | bca7e2342d77 |
line wrap: on
line source
/* LICENSE BLOCK Part of mde: a Modular D game-oriented Engine Copyright © 2007-2008 Diggory Hardy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /** The OpenGL draw loop. * * Everything here is really intended as makeshift code to enable GUI development. */ module mde.gl.draw; import mde.gui.Gui; import derelict.sdl.sdl; import derelict.opengl.gl; import tango.time.Time; // TimeSpan (type only; unused) import tango.util.log.Log : Log, Logger; import mde.resource.font; private Logger logger; static this () { logger = Log.getLogger ("mde.gl.draw"); } //BEGIN Drawing loop // Temporary draw function void draw (TimeSpan) { glClear(GL_COLOR_BUFFER_BIT); gui.draw (); FontStyle.drawTexture; GLenum err = glGetError(); if (err != GL_NO_ERROR) { char[128] tmp; logger.error (logger.format (tmp, "GL error: {}", err)); } glFinish(); // Use Finish rather than Flush to make sure gl is ready to swap buffers SDL_GL_SwapBuffers(); } //END Drawing loop