Changeset 469 for trunk/src/gfx


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
File:
1 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
Note: See TracChangeset for help on using the changeset viewer.