Exemple #1
0
          ResourceBufferSharedPtr ResourceBuffer::get( const dp::sg::core::BufferSharedPtr &buffer, const ResourceManagerSharedPtr& resourceManager )
          {
            assert( buffer );
            assert( !!resourceManager );
    
            ResourceBufferSharedPtr resourceBuffer = resourceManager->getResource<ResourceBuffer>( reinterpret_cast<size_t>(buffer.operator->()) );   // Big Hack !!
            if ( !resourceBuffer )
            {
              resourceBuffer = std::shared_ptr<ResourceBuffer>( new ResourceBuffer( buffer, resourceManager ) );
              if ( buffer.isPtrTo<dp::sg::gl::BufferGL>() )
              {
                dp::sg::gl::BufferGLSharedPtr const& buffergl = buffer.staticCast<dp::sg::gl::BufferGL>();
                dp::rix::gl::BufferDescriptionGL bufferDescription( dp::rix::gl::UsageHint::STATIC_DRAW, buffergl->getBuffer() );

                resourceBuffer->m_bufferHandle = resourceManager->getRenderer()->bufferCreate( bufferDescription );
                resourceBuffer->m_isNativeBuffer = true;
              }
              else
              {
                resourceBuffer->m_bufferHandle = resourceManager->getRenderer()->bufferCreate();
              }
              resourceBuffer->update();
            }
    
            return resourceBuffer;
          }
Exemple #2
0
 ResourceBuffer::ResourceBuffer( const dp::sg::core::BufferSharedPtr &buffer, const ResourceManagerSharedPtr& resourceManager )
   : ResourceManager::Resource( reinterpret_cast<size_t>( buffer.operator->() ), resourceManager )   // Big Hack !!
   , m_buffer( buffer )
   , m_isNativeBuffer( false )
   , m_bufferSize( 0 )
 {
   resourceManager->subscribe( this );
 }
          ResourceParameterGroupDataRiXFx::ResourceParameterGroupDataRiXFx( const dp::sg::core::ParameterGroupDataSharedPtr& parameterGroupData, const dp::rix::fx::ManagerSharedPtr& rixFx, const ResourceManagerSharedPtr& resourceManager )
            : ResourceManager::Resource( reinterpret_cast<size_t>( parameterGroupData.operator->() ), resourceManager )   // Big Hack !!
            , m_parameterGroupData( parameterGroupData )
            , m_rixFx( rixFx )
          {
            DP_ASSERT( parameterGroupData );

            resourceManager->subscribe( this );

            m_groupData = m_rixFx->groupDataCreate( parameterGroupData->getParameterGroupSpec() );
          }
          ResourceVertexAttributeSetSharedPtr ResourceVertexAttributeSet::get( const dp::sg::core::VertexAttributeSetSharedPtr &vertexAttributeSet, const ResourceManagerSharedPtr& resourceManager )
          {
            assert( vertexAttributeSet );
            assert( resourceManager );

            ResourceVertexAttributeSetSharedPtr resourceVertexAttributeSet = resourceManager->getResource<ResourceVertexAttributeSet>( reinterpret_cast<size_t>(vertexAttributeSet.operator->()) );   // Big Hack !!
            if ( !resourceVertexAttributeSet )
            {
              resourceVertexAttributeSet = std::shared_ptr<ResourceVertexAttributeSet>( new ResourceVertexAttributeSet( vertexAttributeSet, resourceManager ) );
              resourceVertexAttributeSet->m_vertexAttributesHandle = resourceManager->getRenderer()->vertexAttributesCreate();
              resourceVertexAttributeSet->update();
            }
            return resourceVertexAttributeSet;
          }
 ResourceVertexAttributeSet::ResourceVertexAttributeSet( const dp::sg::core::VertexAttributeSetSharedPtr &vertexAttributeSet, const ResourceManagerSharedPtr& resourceManager )
   : ResourceManager::Resource( reinterpret_cast<size_t>( vertexAttributeSet.operator->() ), resourceManager )   // Big Hack !!
   , m_vertexAttributeSet( vertexAttributeSet )
 {
   resourceManager->subscribe( this );
 }
 ResourceIndexSet::ResourceIndexSet( const dp::sg::core::IndexSetSharedPtr &indexSet, const ResourceManagerSharedPtr& resourceManager )
   : ResourceManager::Resource( reinterpret_cast<size_t>( indexSet.operator->() ), resourceManager )   // Big Hack !!
   , m_indexSet( indexSet )
 {
   resourceManager->subscribe( this );
 }