SDL: Center GB screen

This commit is contained in:
Jeffrey Pfau 2016-01-26 20:59:15 -08:00
parent 3c8cf83083
commit efe1611614
1 changed files with 7 additions and 3 deletions

View File

@ -13,6 +13,8 @@
#endif #endif
#include "platform/opengl/gl.h" #include "platform/opengl/gl.h"
#define GB_GBA_CENTER ((VIDEO_HORIZONTAL_PIXELS - GB_VIDEO_HORIZONTAL_PIXELS + VIDEO_HORIZONTAL_PIXELS * (VIDEO_VERTICAL_PIXELS - GB_VIDEO_VERTICAL_PIXELS)) / 2)
static void _doViewport(int w, int h, struct VideoBackend* v) { static void _doViewport(int w, int h, struct VideoBackend* v) {
v->resized(v, w, h); v->resized(v, w, h);
v->clear(v); v->clear(v);
@ -104,7 +106,9 @@ bool mSDLGLInitGB(struct mSDLRenderer* renderer) {
mSDLGLCommonInit(renderer); mSDLGLCommonInit(renderer);
// TODO: Pass texture size along // TODO: Pass texture size along
renderer->gb.outputBuffer = malloc(VIDEO_HORIZONTAL_PIXELS * VIDEO_VERTICAL_PIXELS * BYTES_PER_PIXEL); color_t* buf = malloc(VIDEO_HORIZONTAL_PIXELS * VIDEO_VERTICAL_PIXELS * BYTES_PER_PIXEL);
memset(buf, 0, VIDEO_HORIZONTAL_PIXELS * VIDEO_VERTICAL_PIXELS * BYTES_PER_PIXEL);
renderer->gb.outputBuffer = buf + GB_GBA_CENTER;
renderer->gb.outputBufferStride = VIDEO_HORIZONTAL_PIXELS; renderer->gb.outputBufferStride = VIDEO_HORIZONTAL_PIXELS;
GBAGLContextCreate(&renderer->gl); GBAGLContextCreate(&renderer->gl);
@ -161,7 +165,7 @@ void mSDLGLRunloopGB(struct mSDLRenderer* renderer, void* user) {
#endif #endif
} }
v->postFrame(v, renderer->gb.outputBuffer); v->postFrame(v, renderer->gb.outputBuffer - GB_GBA_CENTER);
v->drawFrame(v); v->drawFrame(v);
v->swap(v); v->swap(v);
} }
@ -171,7 +175,7 @@ void mSDLGLDeinitGB(struct mSDLRenderer* renderer) {
if (renderer->gl.d.deinit) { if (renderer->gl.d.deinit) {
renderer->gl.d.deinit(&renderer->gl.d); renderer->gl.d.deinit(&renderer->gl.d);
} }
free(renderer->gb.outputBuffer); free(renderer->gb.outputBuffer - GB_GBA_CENTER);
#if SDL_VERSION_ATLEAST(2, 0, 0) #if SDL_VERSION_ATLEAST(2, 0, 0)
SDL_GL_DeleteContext(renderer->glCtx); SDL_GL_DeleteContext(renderer->glCtx);
#endif #endif