Exemple #1
0
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;
}