VulkanExampleBase::VulkanExampleBase(bool enableValidation) { // Check for validation command line flag #if defined(_WIN32) for (int32_t i = 0; i < __argc; i++) { if (__argv[i] == std::string("-validation")) { enableValidation = true; } } #elif defined(__ANDROID__) // Vulkan library is loaded dynamically on Android bool libLoaded = loadVulkanLibrary(); assert(libLoaded); #elif defined(__linux__) initxcbConnection(); #endif #if !defined(__ANDROID__) // Android Vulkan initialization is handled in APP_CMD_INIT_WINDOW event initVulkan(enableValidation); #endif #if defined(_WIN32) // Enable console if validation is active // Debug message callback will output to it if (enableValidation) { setupConsole("VulkanExample"); } #endif }
VulkanBase::VulkanBase(bool enableValidation) { for (int32_t i = 0; i < __argc; i++) if (__argv[i] == std::string("-validation")) enableValidation = true; initVulkan(enableValidation); if (enableValidation) setupConsole("VulkanTerrain"); }
void run() { initWindow(); initVulkan(); mainLoop(); }
void op3d::Engine::run() { initWindow(); initVulkan(); mainLoop(); }
//============================================================================== // エントリーポイント //============================================================================== int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HWND hwnd; MSG msg; WNDCLASS winc; winc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; winc.lpfnWndProc = WndProc; // ウィンドウプロシージャ winc.cbClsExtra = 0; winc.cbWndExtra = 0; winc.hInstance = hInstance; winc.hIcon = LoadIcon(NULL, IDI_APPLICATION); winc.hCursor = LoadCursor(NULL, IDC_ARROW); winc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); winc.lpszMenuName = NULL; winc.lpszClassName = CLASS_NAME; // ウィンドウクラス登録 if(RegisterClass(&winc) == false) { return 1; } // ウィンドウ作成 hwnd = CreateWindow( CLASS_NAME, CLASS_NAME, WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0, 0, SCREEN_WIDTH + GetSystemMetrics(SM_CXFRAME) * 2, SCREEN_HEIGHT + GetSystemMetrics(SM_CYFRAME) * 2 + GetSystemMetrics(SM_CYCAPTION), NULL, NULL, hInstance, NULL); if(hwnd == NULL) { return 1; } // Vulkan初期化 if(initVulkan(hInstance, hwnd) == false) { return 1; } // ウィンドウ表示 ShowWindow(hwnd, nCmdShow); FPSCounter fpsCounter; // FPSカウンター // メッセージループ do { fpsCounter.beginCount(); if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { // メイン Render(); } fpsCounter.endCount(); std::string windowTitle = std::string(APPLICATION_NAME) + " - " + std::to_string(fpsCounter.getLastFPS()) + " FPS"; SetWindowText(hwnd, windowTitle.c_str()); } while(msg.message != WM_QUIT); // Vulkan破棄 destroyVulkan(); // 登録したクラスを解除 UnregisterClass(CLASS_NAME, hInstance); return 0; }