void ESVideo::Initialize () { //Init PSGL PSGLinitOptions initOpts = {PSGL_INIT_MAX_SPUS | PSGL_INIT_HOST_MEMORY_SIZE, 1, false, 0, 0, 0, 0, 32 * 1024 * 1024}; psglInit(&initOpts); Device = psglCreateDeviceAuto(GL_ARGB_SCE, GL_NONE, GL_MULTISAMPLING_NONE_SCE); Context = psglCreateContext(); psglMakeCurrent(Context, Device); psglResetCurrentContext(); //Get Screen Info psglGetRenderBufferDimensions(Device, &ScreenWidth, &ScreenHeight); WideScreen = psglGetDeviceAspectRatio(Device) > 1.5f; glViewport(0, 0, GetScreenWidth(), GetScreenHeight()); //Some settings OpenGLHelp::InitializeState(); glEnable(GL_VSYNC_SCE); // Setup vertex buffer VertexBuffer = (GLfloat*)memalign(128, VertexBufferCount * VertexSize * sizeof(GLfloat)); GLShader::ApplyVertexBuffer(VertexBuffer); //Texture for FillRectangle FillerTexture = new Texture(2, 2); FillerTexture->Clear(0xFFFFFFFF); }
void ESVideoPlatform::SetMode (uint32_t aIndex) { if(VideoMode != aIndex) { //Kill old device psglMakeCurrent(0, 0); psglDestroyDevice(Device); //Create new device static const uint32_t width[] = {0, 1920, 1280, 0, 720, 720}; static const uint32_t height[] = {0, 1080, 720, 0, 480, 576}; PSGLdeviceParameters params; memset(¶ms, 0, sizeof(params)); params.enable = PSGL_DEVICE_PARAMETERS_DEPTH_FORMAT | PSGL_DEVICE_PARAMETERS_WIDTH_HEIGHT; params.depthFormat = GL_NONE; params.width = (aIndex == 0) ? DefaultWidth : width[aIndex]; params.height = (aIndex == 0) ? DefaultHeight : height[aIndex]; Device = psglCreateDeviceExtended(¶ms); psglMakeCurrent(Context, Device); //Get parameters uint32_t renderWidth, renderHeight; psglGetRenderBufferDimensions(Device, &renderWidth, &renderHeight); ESVideo::SetScreenSize(renderWidth, renderHeight); } VideoMode = aIndex; }
void ESVideoPlatform::Initialize (uint32_t& aWidth, uint32_t& aHeight) { //Init PSGL PSGLinitOptions initOpts = {PSGL_INIT_MAX_SPUS | PSGL_INIT_HOST_MEMORY_SIZE, 1, false, 0, 0, 0, 0, 32 * 1024 * 1024}; psglInit(&initOpts); Device = psglCreateDeviceAuto(GL_ARGB_SCE, GL_NONE, GL_MULTISAMPLING_NONE_SCE); Context = psglCreateContext(); psglMakeCurrent(Context, Device); psglResetCurrentContext(); //Get Screen Info psglGetRenderBufferDimensions(Device, &aWidth, &aHeight); psglGetDeviceDimensions(Device, &DefaultWidth, &DefaultHeight); // WideScreen = psglGetDeviceAspectRatio(Device) > 1.5f; //Some settings glEnable(GL_VSYNC_SCE); VSyncOn = true; //Init shaders cgRTCgcInit(); LibESGL::Presenter::Initialize(); }
bool CapApp::onInit(int argc, char* argv[]) { (void)argc; (void)argv; // ---------------------------------------------- // FTP cellSysmoduleLoadModule(CELL_SYSMODULE_NET); cellNetCtlInit(); cellSysmoduleLoadModule(CELL_SYSMODULE_HTTP); sys_net_initialize_network(); ftp_on(); // Load settings... if(!iniRead()) { iniWrite(); // create settings file... } cellSysmoduleLoadModule(CELL_SYSMODULE_FS); cellSysmoduleLoadModule(CELL_SYSMODULE_SYSUTIL_SCREENSHOT); cellScreenShotEnable(); InputInit(); while(!videoOutIsReady()) { // ... } PSGLinitOptions options = { enable: PSGL_INIT_MAX_SPUS | PSGL_INIT_INITIALIZE_SPUS, maxSPUs: 1, initializeSPUs: GL_FALSE, persistentMemorySize: 0, transientMemorySize: 0, errorConsole: 0, fifoSize: 0, hostMemorySize: 128* 1024*1024, // 128 mbs for host memory }; #if CELL_SDK_VERSION < 0x340000 options.enable |= PSGL_INIT_HOST_MEMORY_SIZE; #endif // Initialize 6 SPUs but reserve 1 SPU as a raw SPU for PSGL sys_spu_initialize(6, 1); psglInit(&options); const unsigned int resolutions[] = { CELL_VIDEO_OUT_RESOLUTION_1080, CELL_VIDEO_OUT_RESOLUTION_960x1080, CELL_VIDEO_OUT_RESOLUTION_720, CELL_VIDEO_OUT_RESOLUTION_480 }; const int numResolutions = sizeof(resolutions) / sizeof(resolutions[0]); int bestResolution = chooseBestResolution(resolutions,numResolutions); getResolutionWidthHeight(bestResolution, deviceWidth, deviceHeight); if(bestResolution) { PSGLdeviceParameters params; params.enable = PSGL_DEVICE_PARAMETERS_COLOR_FORMAT | PSGL_DEVICE_PARAMETERS_DEPTH_FORMAT | PSGL_DEVICE_PARAMETERS_MULTISAMPLING_MODE; params.colorFormat = GL_ARGB_SCE; params.depthFormat = GL_NONE; params.multisamplingMode = GL_MULTISAMPLING_NONE_SCE; params.enable |= PSGL_DEVICE_PARAMETERS_WIDTH_HEIGHT; params.width = deviceWidth; params.height = deviceHeight; device = psglCreateDeviceExtended(¶ms); context = psglCreateContext(); psglMakeCurrent(context, device); psglResetCurrentContext(); initGraphics(); if( cellSysutilRegisterCallback( 0, callback_sysutil_exit, NULL ) < 0 ) { //... } dbgFontInit(); fbaRL = new c_fbaRL(); while(bRun) { onRender(); onUpdate(); cellSysutilCheckCallback(); } } else { // resolution error... } ftp_off(); onShutdown(); return false; } void CapApp::onRender() { if(fbaRL) { fbaRL->DlgDisplayFrame(); } // get render target buffer dimensions and set viewport psglGetRenderBufferDimensions(device,&app.renderWidth,&app.renderHeight); glViewport(0, 0, app.renderWidth, app.renderHeight); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if(fbaRL) { fbaRL->RenderBackground(); } if(fbaRL) { fbaRL->nFrameStep = 0; fbaRL->DisplayFrame(); } if(fbaRL) { fbaRL->nFrameStep = 1; fbaRL->DisplayFrame(); } dbgFontDraw(); psglSwap(); } bool CapApp::onUpdate() { if(!mFrame) mFrame = 0; mFrame++; InputFrameStart(); if(fbaRL) fbaRL->InputFrame(); InputFrameEnd(); return true; } void CapApp::onShutdown() { iniWrite(); // save settings if(context) psglDestroyContext(context); if(device) psglDestroyDevice(device); InputExit(); psglExit(); }