Browse Source

ps3: add support for resolution selection.

legacy
Sam Hocevar sam 12 years ago
parent
commit
456f5e8892
1 changed files with 46 additions and 5 deletions
  1. +46
    -5
      src/platform/ps3/ps3app.cpp

+ 46
- 5
src/platform/ps3/ps3app.cpp View File

@@ -1,7 +1,7 @@
// //
// Lol Engine // Lol Engine
// //
// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
// This program is free software; you can redistribute it and/or // This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To // modify it under the terms of the Do What The Fuck You Want To
// Public License, Version 2, as published by Sam Hocevar. See // Public License, Version 2, as published by Sam Hocevar. See
@@ -87,11 +87,52 @@ Ps3App::Ps3App(char const *title, ivec2 res, float fps) :
(uint8_t *)stack.pst_addr + stack.pst_size); (uint8_t *)stack.pst_addr + stack.pst_size);
#endif #endif


PSGLdevice* psgl = psglCreateDeviceAuto(GL_ARGB_SCE, GL_DEPTH_COMPONENT24,
GL_MULTISAMPLING_4X_SQUARE_ROTATED_SCE);
PSGLdeviceParameters psgldp =
{
enable: PSGL_DEVICE_PARAMETERS_COLOR_FORMAT
| PSGL_DEVICE_PARAMETERS_DEPTH_FORMAT
| PSGL_DEVICE_PARAMETERS_MULTISAMPLING_MODE
| PSGL_DEVICE_PARAMETERS_WIDTH_HEIGHT,
colorFormat: GL_ARGB_SCE, /* can also be GL_RGBA16F_ARB */
depthFormat: GL_DEPTH_COMPONENT16, /* can also be 24-bit */
multisamplingMode: GL_MULTISAMPLING_4X_SQUARE_ROTATED_SCE,
width: 720,
height: 480,
};

/* Find closest valid resolution */
ivec2 const valid_resolutions[8] =
{
ivec2( 720, 480),
ivec2( 720, 576),
ivec2(1280, 720),
ivec2(1920, 1080),
ivec2( 960, 1080),
ivec2(1280, 1080),
ivec2(1440, 1080),
ivec2(1600, 1080),
};

for (int i = 0; i < 8; ++i)
{
ivec2 cur(psgldp.width, psgldp.height);
if (sqlength(valid_resolutions[i] - res) < sqlength(cur - res))
{
psgldp.width = valid_resolutions[i].x;
psgldp.height = valid_resolutions[i].y;
}
}

/* Create graphics device */
PSGLdevice* psgl = psglCreateDeviceExtended(&psgldp);
if (!psgl)
Log::Error("could not create PSGL device; expect imminent crash\n");

GLuint w, h; GLuint w, h;
psglGetDeviceDimensions(psgl, &w, &h); psglGetDeviceDimensions(psgl, &w, &h);
res = ivec2(w, h);
ivec2 newres(w, h);
Log::Debug("resolution asked %d×%d, closest valid %d×%d, final %d×%d\n",
res.x, res.y, psgldp.width, psgldp.height, newres.x, newres.y);


PSGLcontext *ctx = psglCreateContext(); PSGLcontext *ctx = psglCreateContext();
psglMakeCurrent(ctx, psgl); psglMakeCurrent(ctx, psgl);
@@ -101,7 +142,7 @@ Ps3App::Ps3App(char const *title, ivec2 res, float fps) :


/* Initialise everything */ /* Initialise everything */
Ticker::Setup(fps); Ticker::Setup(fps);
Video::Setup(res);
Video::Setup(newres);
Audio::Setup(2); Audio::Setup(2);


/* Autoreleased objects */ /* Autoreleased objects */


Loading…
Cancel
Save