Ignore:
Timestamp:
06/15/16 18:34:37 (9 years ago)
Author:
epyon
Message:
  • particle engine updates
  • device/context redesign
  • caching of GL state - texture bindings and programs
  • camera view_perspective and view_perspective_inv
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/interface/context.hh

    r500 r501  
    157157                virtual void release( framebuffer ) = 0;
    158158
     159                virtual void release( program p ) { m_device->release( p ); }
     160                virtual void release( texture t ) { m_device->release( t ); }
     161                virtual void release( buffer b ) { m_device->release( b ); }
     162
     163                virtual texture create_texture( texture_type type, ivec2 size, image_format aformat, sampler asampler, const void* data = nullptr ) = 0;
     164                virtual texture create_texture( texture_type type, ivec3 size, image_format aformat, sampler asampler, const void* data = nullptr ) = 0;
     165                virtual texture create_texture( texture_type type, pixel_format format ) { return m_device->create_texture( type, format ); }
     166                // TODO: remove?
     167                virtual texture create_texture( ivec2 size, image_format aformat, sampler asampler, const void* data = nullptr )
     168                {
     169                        return create_texture( TEXTURE_2D, size, aformat, asampler, data );
     170                }
     171                virtual texture create_texture( const image_data* data, sampler asampler )
     172                {
     173                        return create_texture( data->get_size(), data->get_format(), asampler, data->get_data() );
     174                }
     175
     176
     177                virtual program create_program( string_view vs_source, string_view fs_source ) { return m_device->create_program( vs_source, fs_source ); }
     178                virtual buffer create_buffer( buffer_type type, buffer_hint hint, size_t size, const void* source = nullptr ) = 0;
     179                virtual void   create_buffer( buffer, size_t, const void* = nullptr ) = 0;
     180
     181
    159182                virtual const framebuffer_info* get_framebuffer_info( framebuffer ) const = 0;
    160183
     
    219242                vertex_array create_vertex_array( const VTX* v, size_t count, buffer_hint hint )
    220243                {
    221                         buffer       vb = m_device->create_buffer( VERTEX_BUFFER, hint, count * sizeof( VTX ), v );
     244                        buffer       vb = create_buffer( VERTEX_BUFFER, hint, count * sizeof( VTX ), v );
    222245                        vertex_array_desc desc;
    223246                        desc.add_vertex_buffers< VTX >( vb, true );
     
    228251                vertex_array create_vertex_array( const VTX* v, size_t vcount, const IDX* i, size_t icount, buffer_hint hint )
    229252                {
    230                         buffer       vb = m_device->create_buffer( VERTEX_BUFFER, hint, count * sizeof( VTX ), v );
    231                         buffer       ib = m_device->create_buffer( INDEX_BUFFER, hint, icount * sizeof( IDX ), i );
     253                        buffer       vb = create_buffer( VERTEX_BUFFER, hint, count * sizeof( VTX ), v );
     254                        buffer       ib = create_buffer( INDEX_BUFFER, hint, icount * sizeof( IDX ), i );
    232255                        vertex_array_desc desc;
    233256                        desc.add_vertex_buffers< VTX >( vb, true );
     
    248271                                        if ( desc[0].vslot == slot::INDEX )
    249272                                        {
    250                                                 buffer b = m_device->create_buffer( INDEX_BUFFER, hint, channel.raw_size(), channel.raw_data() );
     273                                                buffer b = create_buffer( INDEX_BUFFER, hint, channel.raw_size(), channel.raw_data() );
    251274                                                va_desc.set_index_buffer( b, desc[0].etype, true );
    252275                                        }
    253276                                        else
    254277                                        {
    255                                                 buffer b = m_device->create_buffer( VERTEX_BUFFER, hint, channel.raw_size(), channel.raw_data() );
     278                                                buffer b = create_buffer( VERTEX_BUFFER, hint, channel.raw_size(), channel.raw_data() );
    256279                                                va_desc.add_vertex_buffers( b, desc );
    257280                                        }
Note: See TracChangeset for help on using the changeset viewer.