Changeset 469 for trunk/src


Ignore:
Timestamp:
09/17/15 17:17:20 (10 years ago)
Author:
epyon
Message:
  • stl/short_string - minor fix
  • stl/utility - max for 3 arguments
  • stl/math length_sq
  • interface/context - proper handling of buffer ownage in va's
  • wx/canvas - sleep added
Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gfx/debug_draw.cc

    r395 r469  
    88
    99#include "nv/interface/device.hh"
     10#include "nv/core/logging.hh"
    1011
    1112static const char *nv_debug_draw_vertex_shader = R"(
     
    3435{
    3536        m_program = m_context->get_device()->create_program( nv_debug_draw_vertex_shader, nv_debug_draw_fragment_shader );
     37        m_buffer_size = 0;
    3638}
    3739
    3840void nv::debug_data::update()
    3941{
    40         m_context->release( m_va );
    41         m_va = m_context->create_vertex_array( m_data, nv::STATIC_DRAW );
     42        if ( !m_va.is_valid() || m_data.size() > m_buffer_size )
     43        {
     44                if ( m_va.is_valid() ) m_context->release( m_va );
     45                m_buffer_size = nv::max( m_data.size(), 4096U, m_buffer_size );
     46                m_va = m_context->create_vertex_array();
     47                m_vb = m_context->get_device()->create_buffer( VERTEX_BUFFER, nv::STREAM_DRAW, m_buffer_size * sizeof( debug_vtx ), m_data.data() );
     48                m_context->add_vertex_buffers< debug_vtx >( m_va, m_vb, true );
     49        }
     50        else
     51        {
     52                m_context->update( m_vb, m_data.data(), 0, m_data.size()* sizeof( debug_vtx ) );
     53        }
    4254}
    4355
  • trunk/src/gl/gl_context.cc

    r466 r469  
    4848                for ( uint32 i = 0; i < info->count; ++i )
    4949                {
    50                         if ( info->attr[i].owner ) m_device->release( info->attr[i].vbuffer );
     50                        if ( info->attr[i].owner )
     51                                m_device->release( info->attr[i].vbuffer );
    5152                }
    5253                if ( info->index.is_valid() && info->index_owner) m_device->release( info->index );
  • trunk/src/gui/gui_gfx_renderer.cc

    r456 r469  
    160160        sr->varray = m_window->get_context()->create_vertex_array();
    161161        buffer vb = sr->buffer.get_buffer();
    162         m_window->get_context()->add_vertex_buffers< vertex >( sr->varray, vb );
     162        m_window->get_context()->add_vertex_buffers< vertex >( sr->varray, vb, false );
    163163
    164164        nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::CLAMP_TO_EDGE );
Note: See TracChangeset for help on using the changeset viewer.