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