//--------------------------------------------------------------------------- // 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; }
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 ); }
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; }
ViewPtr ViewServiceNull::get3DView(int group, int index) { printWarning(); return ViewPtr(); }