bool P3DPathName::MakeAbsolute () { std::string CurrentDir; if (IsAbsolute()) { return(true); } CurrentDir = P3DPathInfo::GetCurrentDir(); if (CurrentDir.empty()) { return(false); } P3DPathName WorkingDir(CurrentDir.c_str()); WorkingDir.Normalize(); Path = std::string(WorkingDir.c_str()) + std::string("/") + std::string(Path.c_str()); Normalize(); return(true); }
bool ModelViewerRender::Init(HWND hwnd,CRichEditCtrl *pCtrl) { //init logger m_pLogger=new RichEditLogger(pCtrl); Logger::setCurrentLogger(m_pLogger); //create device SGPCreationParameters param; param.DriverType = SGPDT_OPENGL; param.Vsync = true; param.WindowId = reinterpret_cast<void*>(hwnd); param.plog = m_pLogger; param.MultiThreadResLoading=false; m_pDevice = createDeviceEx(param); if(m_pDevice==NULL) { Logger::setCurrentLogger(nullptr); return false; } m_pDevice->setResizable(true); //get render device m_pRenderDevice = m_pDevice->getRenderDevice(); //set working directory TCHAR path[MAX_PATH]; GetModuleFileName(AfxGetInstanceHandle(),path,MAX_PATH); CString str=path; while(str.Right(4)!=_T("\\Bin")) str=str.Left(str.ReverseFind('\\')); str=str.Left(str.ReverseFind('\\')); str+="\\Data"; WCHAR wPath[MAX_PATH]; wmemset(wPath,0,MAX_PATH); MultiByteToWideChar(CP_ACP,0,(LPCTSTR)str,str.GetLength(),wPath,MAX_PATH); String WorkingDir(wPath); m_pRenderDevice->setWorkingDirection(WorkingDir); //init internal camera mode m_pRenderDevice->setCameraMode(SGPCT_PERSPECTIVE); m_pRenderDevice->setNearFarClipPlane(0.01f, 100.0f); m_pRenderDevice->setFov(45.0f); RECT rc; ::GetWindowRect(hwnd,&rc); m_pRenderDevice->onResize(rc.right-rc.left,rc.bottom-rc.top); SViewPort viewarea; viewarea.Width = m_pRenderDevice->getScreenSize().Width; viewarea.Height = m_pRenderDevice->getScreenSize().Height; m_pRenderDevice->setViewPort(viewarea); //init camera m_pCamera=new ModelViewerCamera; m_pCamera->SetPos(0,100,-100); m_pCamera->SetLookAt(0, 0, 0); m_pCamera->SetRotation(-float_Pi/7, -float_Pi/3, 0); // init Font// could not create selected font. if( !m_pRenderDevice->CreateFontInManager( "font1", String(L"Font\\YaHei_Consolas.ttf"), true, false, 16 ) ) { delete m_pDevice; m_pDevice = NULL; Logger::setCurrentLogger(nullptr); return false; } InitGround(); m_pRenderDevice->GetWorldSystemManager()->createWorldSun(); m_pRenderDevice->GetWorldSystemManager()->setWorldSunPosition(120.0f); m_bInitilized=true; return true; }