bool CorePlatformAndroid::InitializeEngine() { if(davaWasInitialized) { // RenderResource::InvalidateAllResources(); } else { davaWasInitialized = true; FrameworkDidLaunched(); KeyedArchive * options = Core::Instance()->GetOptions(); RenderManager::Create(Core::RENDERER_OPENGL_ES_2_0); RenderManager::Instance()->DetectRenderingCapabilities(); RenderManager::Instance()->InitFBO(renderer->GetColorRenderbuffer(), renderer->GetDefaultFramebuffer()); RenderManager::Instance()->Init(Core::Instance()->GetPhysicalScreenWidth(), Core::Instance()->GetPhysicalScreenHeight()); Core::Instance()->SystemAppStarted(); } return true; }
int Core::RunCmdTool(int argc, char * argv[], AppHandle handle) { CoreWin32Platform * core = new CoreWin32Platform(); //core->CreateWin32Window(handle); //core->Run(); core->EnableConsoleMode(); core->CreateSingletons(); core->InitArgs(); Logger::Instance()->EnableConsoleMode(); FrameworkDidLaunched(); FrameworkWillTerminate(); core->ReleaseSingletons(); #ifdef ENABLE_MEMORY_MANAGER if (DAVA::MemoryManager::Instance() != 0) { DAVA::MemoryManager::Instance()->FinalLog(); } #endif return 0; }
void QtLayerWin32::SetWindow(HINSTANCE hInstance, HWND hWindow, int32 width, int32 height) { CoreWin32Platform *core = dynamic_cast<CoreWin32Platform *>(CoreWin32Platform::Instance()); if (NULL != core) { core->SetupWindow(hInstance, hWindow); RenderManager::Create(Core::RENDERER_OPENGL); RenderManager::Instance()->Create(hInstance, hWindow); FrameworkDidLaunched(); Resize(width, height); // DisplayMode currentMode = DisplayMode(width, height, 16, 0); // // KeyedArchive * options = Core::Instance()->GetOptions(); // if (options) // { // currentMode.bpp = options->GetInt32("bpp"); // } // // RenderManager::Instance()->ChangeDisplayMode(currentMode, false); // RenderManager::Instance()->Init(currentMode.width, currentMode.height); // UIControlSystem::Instance()->SetInputScreenAreaSize(currentMode.width, currentMode.height); // Core::Instance()->SetPhysicalScreenSize(currentMode.width, currentMode.height); AppStarted(); } }
void QtLayerMacOS::WidgetCreated() { // DisplayMode fullscreenMode = Core::Instance()->GetCurrentDisplayMode(); // // launch framework and setup all preferences //TODO: maybe we need reorder calls FrameworkDidLaunched(); RenderManager::Create(Core::RENDERER_OPENGL); }
void QtLayerWin32::SetWindow(HINSTANCE hInstance, HWND hWindow, int32 width, int32 height) { CoreWin32Platform *core = dynamic_cast<CoreWin32Platform *>(CoreWin32Platform::Instance()); if (NULL != core) { core->SetupWindow(hInstance, hWindow); RenderManager::Create(Core::RENDERER_OPENGL); RenderManager::Instance()->Create(hInstance, hWindow); FrameworkDidLaunched(); Resize(width, height); AppStarted(); } }
void CorePlatformAndroid::RenderRecreated(int32 w, int32 h) { Logger::Debug("[CorePlatformAndroid::RenderRecreated] start"); renderIsActive = true; Thread::InitMainThread(); if(wasCreated) { RenderManager::Instance()->Lost(); RenderResource::SaveAllResourcesToSystemMem(); RenderResource::LostAllResources(); ResizeView(w, h); RenderManager::Instance()->Invalidate(); RenderResource::InvalidateAllResources(); } else { wasCreated = true; Logger::Debug("[CorePlatformAndroid::] before create renderer"); RenderManager::Create(Core::RENDERER_OPENGL_ES_2_0); RenderManager::Instance()->InitFBO(androidDelegate->RenderBuffer(), androidDelegate->FrameBuffer()); Logger::Debug("[CorePlatformAndroid::] after create renderer"); ResizeView(w, h); FrameworkDidLaunched(); RenderManager::Instance()->SetFPS(60); ////////////////////////////////////////////////////////////////////////// Core::Instance()->SystemAppStarted(); StartForeground(); } Logger::Debug("[CorePlatformAndroid::RenderRecreated] end"); }
int Core::RunCmdTool(int argc, char *argv[], AppHandle handle) { DAVA::CoreMacOSPlatform * core = new DAVA::CoreMacOSPlatform(); core->SetCommandLine(argc, argv); core->EnableConsoleMode(); core->CreateSingletons(); FrameworkDidLaunched(); FrameworkWillTerminate(); core->ReleaseSingletons(); #ifdef ENABLE_MEMORY_MANAGER if (DAVA::MemoryManager::Instance() != 0) { DAVA::MemoryManager::Instance()->FinalLog(); } #endif return 0; }
void CorePlatformAndroid::RenderRecreated(int32 w, int32 h) { Logger::Debug("[CorePlatformAndroid::RenderRecreated] start"); renderIsActive = true; Thread::InitMainThread(); if(wasCreated) { ResizeView(w, h); RenderResource::InvalidateAllResources(); } else { wasCreated = true; Logger::Debug("[CorePlatformAndroid::] before create renderer"); RenderManager::Create(Core::RENDERER_OPENGL_ES_2_0); RenderManager::Instance()->InitFBO(androidDelegate->RenderBuffer(), androidDelegate->FrameBuffer()); Logger::Debug("[CorePlatformAndroid::] after create renderer"); ResizeView(w, h); FrameworkDidLaunched(); screenOrientation = Core::SCREEN_ORIENTATION_PORTRAIT; //no need rotate GL for Android RenderManager::Instance()->SetFPS(60); ////////////////////////////////////////////////////////////////////////// Core::Instance()->SystemAppStarted(); StartForeground(); } Logger::Debug("[CorePlatformAndroid::RenderRecreated] end"); }
bool CoreWin32Platform::CreateWin32Window(HINSTANCE hInstance) { this->hInstance = hInstance; //single instance check TCHAR fileName[MAX_PATH]; GetModuleFileName(NULL, fileName, MAX_PATH); fileName[MAX_PATH-1] = 0; //string can be not null-terminated on winXP for(int32 i = 0; i < MAX_PATH; ++i) { if(fileName[i] == L'\\') //symbol \ is not allowed in CreateMutex mutex name { fileName[i] = ' '; } } hMutex = CreateMutex(NULL, FALSE, fileName); if(ERROR_ALREADY_EXISTS == GetLastError()) { return false; } windowedMode = DisplayMode(800, 600, 16, 0); fullscreenMode = DisplayMode(800, 600, 16, 0); currentMode = windowedMode; isFullscreen = false; // create the window, only if we do not use the null device LPCWSTR className = L"DavaFrameworkWindowsDevice"; // Register Class WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_BYTEALIGNCLIENT | CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = 0; wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = 0; wcex.lpszClassName = className; wcex.hIconSm = 0; RegisterClassEx(&wcex); // calculate client size RECT clientSize; clientSize.top = 0; clientSize.left = 0; clientSize.right = currentMode.width; clientSize.bottom = currentMode.height; ULONG style = WINDOWED_STYLE | WS_CLIPCHILDREN; // Create the rendering window if (isFullscreen) { style = WS_VISIBLE | WS_POPUP; } // End if Fullscreen AdjustWindowRect(&clientSize, style, FALSE); int32 realWidth = clientSize.right - clientSize.left; int32 realHeight = clientSize.bottom - clientSize.top; int32 windowLeft = -10000;//(GetSystemMetrics(SM_CXSCREEN) - realWidth) / 2; int32 windowTop = -10000;//(GetSystemMetrics(SM_CYSCREEN) - realHeight) / 2; if (isFullscreen) { windowLeft = 0; windowTop = 0; } // create window hWindow = CreateWindow( className, L"", style, windowLeft, windowTop, realWidth, realHeight, NULL, NULL, hInstance, NULL); ShowWindow(hWindow, SW_SHOW); UpdateWindow(hWindow); // fix ugly ATI driver bugs. Thanks to ariaci (Taken from Irrlight). MoveWindow(hWindow, windowLeft, windowTop, realWidth, realHeight, TRUE); #if defined(__DAVAENGINE_DIRECTX9__) RenderManager::Create(Core::RENDERER_DIRECTX9); #elif defined(__DAVAENGINE_OPENGL__) RenderManager::Create(Core::RENDERER_OPENGL); #endif RenderManager::Instance()->Create(hInstance, hWindow); FrameworkDidLaunched(); KeyedArchive * options = Core::GetOptions(); //fullscreenMode = GetCurrentDisplayMode(); fullscreenMode = GetCurrentDisplayMode();//FindBestMode(fullscreenMode); if (options) { windowedMode.width = options->GetInt32("width"); windowedMode.height = options->GetInt32("height"); windowedMode.bpp = options->GetInt32("bpp"); // get values from config in case if they are available fullscreenMode.width = options->GetInt32("fullscreen.width", fullscreenMode.width); fullscreenMode.height = options->GetInt32("fullscreen.height", fullscreenMode.height); fullscreenMode.bpp = windowedMode.bpp; fullscreenMode = FindBestMode(fullscreenMode); isFullscreen = (0 != options->GetInt32("fullscreen")); String title = options->GetString("title", "[set application title using core options property 'title']"); WideString titleW = StringToWString(title); SetWindowText(hWindow, titleW.c_str()); } Logger::FrameworkDebug("[PlatformWin32] best display fullscreen mode matched: %d x %d x %d refreshRate: %d", fullscreenMode.width, fullscreenMode.height, fullscreenMode.bpp, fullscreenMode.refreshRate); currentMode = windowedMode; if (isFullscreen) { currentMode = fullscreenMode; } clientSize.top = 0; clientSize.left = 0; clientSize.right = currentMode.width; clientSize.bottom = currentMode.height; AdjustWindowRect(&clientSize, style, FALSE); realWidth = clientSize.right - clientSize.left; realHeight = clientSize.bottom - clientSize.top; windowLeft = (GetSystemMetrics(SM_CXSCREEN) - realWidth) / 2; windowTop = (GetSystemMetrics(SM_CYSCREEN) - realHeight) / 2; MoveWindow(hWindow, windowLeft, windowTop, realWidth, realHeight, TRUE); RAWINPUTDEVICE Rid; Rid.usUsagePage = 0x01; Rid.usUsage = 0x02; Rid.dwFlags = 0; Rid.hwndTarget = 0; RegisterRawInputDevices(&Rid, 1, sizeof(Rid)); RenderManager::Instance()->ChangeDisplayMode(currentMode, isFullscreen); RenderManager::Instance()->Init(currentMode.width, currentMode.height); UIControlSystem::Instance()->SetInputScreenAreaSize(currentMode.width, currentMode.height); Core::Instance()->SetPhysicalScreenSize(currentMode.width, currentMode.height); return true; }