|
@@ -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 */ |
|
|