// Pop up a message box with specified title/text //----------------------------------------------------------------------------- void CPUT_OGL::DrawLoadingFrame() { DEBUG_PRINT(_L("DrawLoadingFrame()")); // fill first frame with clear values so render order later is ok const float srgbClearColor[] = { 0.0993f, 0.0993f, 0.0993f, 1.0f }; glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); CPUTGuiControllerOGL *pGUIController = CPUTGuiControllerOGL::GetController(); CPUTText *pText = NULL; pGUIController->CreateText(_L("Just a moment, now loading..."), 999, 0, &pText); pGUIController->EnableAutoLayout(false); int textWidth, textHeight; pText->GetDimensions(textWidth, textHeight); int width,height; mpWindow->GetClientDimensions(&width, &height); pText->SetPosition(width/2-textWidth/2, height/2); pGUIController->Draw(); pGUIController->DeleteAllControls(); pGUIController->EnableAutoLayout(true); // present loading screen Present(); }
void MySample::Create() { CPUTAssetLibrary *pAssetLibrary = CPUTAssetLibrary::GetAssetLibrary(); cString ExecutableDirectory; CPUTFileSystem::GetExecutableDirectory(&ExecutableDirectory); ExecutableDirectory.append(_L(ASSET_LOCATION)); pAssetLibrary->SetMediaDirectoryName(ExecutableDirectory); #ifdef ENABLE_GUI CPUTGuiControllerOGL *pGUI = (CPUTGuiControllerOGL*)CPUTGetGuiController(); std::string mediaDirectory = ws2s(pAssetLibrary->GetMediaDirectoryName()); std::string fontDirectory("Font/"); CPUTFont *pFont = CPUTFont::CreateFont(SYSTEM_LOCATION + fontDirectory, "arial_64.fnt"); pGUI->SetFont(pFont); // // Create some controls // CPUTDropdown *pDropdownMethod; pGUI->CreateText(_L("Test Font"), ID_IGNORE_CONTROL_ID, ID_MAIN_PANEL, &pTextMethod); pTextMethod->SetColor(1.0f, 1.0f, 1.0f, 1.0f); CreateInstancingControlButtons(); #endif CPUTFileSystem::GetExecutableDirectory(&ExecutableDirectory); ExecutableDirectory.append(_L(ASSET_LOCATION)); pAssetLibrary->SetMediaDirectoryName(ExecutableDirectory); int width, height; mpWindow->GetClientDimensions(&width, &height); DEBUG_PRINT(_L("Resize Window")); ResizeWindow(width, height); mpScene = new CPUTScene(); DEBUG_PRINT(_L("Load Scene")); // Load the scene if (CPUTFAILED(mpScene->LoadScene(SCENE_FILE))) { LOGI("Failed to Load Scene, try loading asset set individually"); CPUTAssetSet *pAssetSet = NULL; pAssetSet = pAssetLibrary->GetAssetSet( ASSET_SET_FILE ); mpScene->AddAssetSet(pAssetSet); pAssetSet->Release(); } LOGI("Loaded the scene"); // Get the camera. Get the first camera encountered in the scene or // if there are none, create a new one. unsigned int numAssets = mpScene->GetNumAssetSets(); for (unsigned int i = 0; i < numAssets; ++i) { CPUTAssetSet *pAssetSet = mpScene->GetAssetSet(i); if (pAssetSet->GetCameraCount() > 0) { mpCamera = pAssetSet->GetFirstCamera(); break; } } // Create the camera if (mpCamera == NULL) { mpCamera = new CPUTCamera(); pAssetLibrary->AddCamera( _L(""), _L("SampleStart Camera"), _L(""), mpCamera ); mpCamera->SetPosition( 0.0f, cameraY, 100.0f ); // Set the projection matrix for all of the cameras to match our window. // TODO: this should really be a viewport matrix. Otherwise, all cameras will have the same FOV and aspect ratio, etc instead of just viewport dimensions. mpCamera->SetAspectRatio(((float)width)/((float)height)); } mpCamera->SetFov(DegToRad(90.0)); // TODO: Fix converter's FOV bug (Maya generates cameras for which fbx reports garbage for fov) mpCamera->SetFarPlaneDistance(100000.0f); mpCamera->Update(); mpCameraController = new CPUTCameraControllerFPS(); mpCameraController->SetCamera(mpCamera); mpCameraController->SetLookSpeed(0.004f); mpCameraController->SetMoveSpeed(150.0f); // retrieve function pointer glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC) ( eglGetProcAddress( "glDrawElementsInstanced" ) ); if( glDrawElementsInstancedEXT == NULL ) { LOGE( "Failed to load extension pointer" ); } currentRowCount = NUM_ROWS / 1.5; currentColCount = NUM_COLUMNS; LOGI("Getting handles for materials"); // get handles to switch instancing / non instancing pAssetLibrary->PrintAssetLibrary(); supportMaterial = pAssetLibrary->GetMaterialByName("instanceV2/Material/concreteMultiMaterial.mtl"); techMaterial = pAssetLibrary->GetMaterialByName("instanceV2/Material/techALowMultiMataterial.mtl"); isInstanced = true; CPUTModel *pModel = pAssetLibrary->GetModelByName( _L( ".instangeGrptechALow" ) ); pModel->SetDrawModelCallBack((DrawModelCallBackFunc)drawCallback); pModel = pAssetLibrary->GetModelByName( _L( ".instangeGrpconcrete" ) ); pModel->SetDrawModelCallBack((DrawModelCallBackFunc)drawCallback); UINT supportCount = supportMaterial->GetMaterialEffectCount(); UINT techCount = techMaterial->GetMaterialEffectCount(); glFrontFace(GL_CW); UpdateMatrixBuffers(); }