Пример #1
0
//---------------------------------------------------------------------------
// View::View
//---------------------------------------------------------------------------
View::View(const cdma::IViewPtr& view)
{
//  CDMA_FUNCTION_TRACE("View::View");
  m_rank = view->getRank();
  
  // Create new ranges
#ifdef CDMA_STD_SMART_PTR
  std::vector<Range> ranges = (std::dynamic_pointer_cast<View>(view))->m_ranges;
#else
  std::vector<Range> ranges = ViewPtr(view)->m_ranges;
#endif

  m_ranges.resize( ranges.size() );
  for( yat::uint16 i = 0; i < ranges.size(); i++ )
  {
    m_ranges[i].set(
      ranges[i].getName(),
      ranges[i].first(),
      ranges[i].last(),
      ranges[i].stride(),
      ranges[i].reduce()
    );
  }
  
  m_upToDate = false;
}
Пример #2
0
	SpaceShooter::SpaceShooter()
	{
		Renderer::Get().Initialize();

		// Create the player's view.
		Quaternion viewRotation( Vector3::Right, Pi / 2.f );
		mCamera = ViewPtr( new View( Vector3( 0.f, 60.f, 0.f ), viewRotation, 1.04719755f, 1920.0f / 1080.0f, 0.1f, 100.f, false ) );
		Renderer::Get().SetCamera( mCamera );

		// Create the background.
		MaterialPtr backgroundMaterial = MaterialPtr( new Material( L"Resources\\Shaders\\tangent.hlsl", L"Resources\\Textures\\starfield.dds" ) );
		RawMeshPtr backgroundMesh = RawMeshPtr( new RawMesh() );
		GenerateQuadVerticies( *backgroundMesh.get(), 90.f, 45.f );
		MeshPrimitivePtr background = MeshPrimitivePtr( new MeshPrimitive( backgroundMesh, backgroundMaterial, GetTangentSpaceVertexSource() ) );
		mBackground = GameObjectPtr( new GameObject( background ) );
		Matrix4 backgroundOffset;
		backgroundOffset.CreateFromQuaternion( Quaternion( Vector3::Right, Pi / 2.f ) );
		mBackground->SetOffset( backgroundOffset );
		mBackground->SetTranslation( Vector3( 0.f, -10.f, 0.f ) );
		mBackground->Attach();

		// Load the player's ship.
		MaterialPtr playerShipMaterial = MaterialPtr( new Material( L"Resources\\Shaders\\tangent.hlsl", L"Resources\\Textures\\frigate.dds" ) );
		RawMeshPtr shipMesh = RawMeshPtr( new RawMesh() );
		LoadMeshFromObjFile( "Resources\\Meshes\\frigate_normal.obj", *shipMesh.get() );
		CalculateTangents( *shipMesh.get() );
		MeshPrimitivePtr player = MeshPrimitivePtr( new MeshPrimitive( shipMesh, playerShipMaterial, GetTangentSpaceVertexSource() ) );
		mPlayerObject = PlayerShipPtr( new PlayerShip( player ) );
		mPlayerObject->SetScale( 0.3f );
		mPlayerObject->SetBounds( 6.5f );
		Matrix4 playerOffset;
		playerOffset.CreateFromQuaternion( Quaternion( Vector3::Up, Pi / 2.f ) );
		mPlayerObject->SetOffset( playerOffset );
		mPlayerObject->SetFrictionFactor( 0.5f );
		mPlayerObject->Attach();

		// Load asteroids
		MaterialPtr asteroidMaterial = MaterialPtr( new Material( L"Resources\\Shaders\\tangent.hlsl", L"Resources\\Textures\\asteroid.dds" ) );
		RawMeshPtr asteroidMesh = RawMeshPtr( new RawMesh() );
		LoadMeshFromObjFile( "Resources\\Meshes\\asteroid1.obj", *asteroidMesh.get() );
		CalculateTangents( *asteroidMesh.get() );
		for ( int i = 0; i < 5; i++ )
		{
			MeshPrimitivePtr asteroid = MeshPrimitivePtr( new MeshPrimitive( asteroidMesh, asteroidMaterial, GetTangentSpaceVertexSource() ) );
			GameObjectPtr newAsteroid = GameObjectPtr( new Asteroid( asteroid ) );
			newAsteroid->SetScale( 1.f );
			newAsteroid->SetBounds( 4.f );
			newAsteroid->SetTranslation( Vector3( RandomFloat( -40.f, 40.f ), 0.f, RandomFloat( -40.f, 40.f ) ) );
			mAsteroids.push_back( newAsteroid );
			newAsteroid->Attach();
		}

		// Load the player's jet particles.
		playerJetParticles = ParticleSystemPtr( new ParticleSystem() );
		ParticleSystemLoader loader;
		loader.LoadFromFile( "Resources\\ParticleSystems\\jet_fuel.part", playerJetParticles );
		playerJetParticles->SetEmitterState( false );	// turn the particles off to start with
		Renderer::Get().AddTranslucentPrimitive( playerJetParticles );
	}
Пример #3
0
int main ()
{
  printf ("Results of render_targets1_test:\n");
  
  try
  {
    ViewPtr view [4];
    
    {    
      Test           test (L"OpenGL device test first window (render_targets1)");
      syslib::Window window (syslib::WindowStyle_Overlapped, 400, 200);
      
      window.SetTitle (L"OpenGL device test second window (render_targets1)");
      
      SwapChainDesc swap_chain_desc;
      
      test.swap_chain->GetDesc (swap_chain_desc);
      
      swap_chain_desc.window_handle = window.Handle ();
      
      IAdapter* adapter = test.swap_chain->GetAdapter ();
      IDriver*  driver  = DriverManager::FindDriver ("DX11");
      
      if (!driver || !adapter)
      {
        printf ("Wrong DX11 driver configuration\n");
        return 0;
      }      

      SwapChainPtr swap_chain (driver->CreateSwapChain (test.device.get (), swap_chain_desc), false);
      
      TexturePtr texture [4] = {
        TexturePtr (test.device->CreateRenderTargetTexture (test.swap_chain.get (), 0), false),
        TexturePtr (test.device->CreateDepthStencilTexture (test.swap_chain.get ()), false),
        TexturePtr (test.device->CreateRenderTargetTexture (swap_chain.get (), 0), false),
        TexturePtr (test.device->CreateDepthStencilTexture (swap_chain.get ()), false)
      };    
      
      ViewDesc view_desc;

      memset (&view_desc, 0, sizeof (view_desc));

      view_desc.layer     = 0;
      view_desc.mip_level = 0;

      for (int i=0; i<4; i++)
        view [i] = ViewPtr (test.device->CreateView (texture [i].get (), view_desc), false);

      test.device->GetImmediateContext ()->OSSetRenderTargetView (0, view [Window1_RenderTarget].get ());
      test.device->GetImmediateContext ()->OSSetDepthStencilView (view [Window2_DepthStencil].get ());

      Color4f clear_color;
      
      clear_color.red   = 0;
      clear_color.green = 0.7f;
      clear_color.blue  = 0.7f;
      clear_color.alpha = 0;

      size_t rt_index = 0;

      test.device->GetImmediateContext ()->ClearViews (ClearFlag_All, 1, &rt_index, &clear_color, 0.5f, 12);
      test.device->GetImmediateContext ()->Draw (PrimitiveType_PointList, 0, 0);

      test.swap_chain->Present ();      
      swap_chain->Present ();
    }
  }
  catch (std::exception& exception)
  {
    printf ("exception: %s\n", exception.what ());
  }
  
  return 0;
}
Пример #4
0
ViewPtr ViewServiceNull::get3DView(int group, int index)
{
	printWarning();
	return ViewPtr();
}