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; }
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 ); }