Changeset 342


Ignore:
Timestamp:
10/09/14 02:55:38 (11 years ago)
Author:
epyon
Message:
  • gl_context - set_draw_buffers accepts const
  • gl_context - set_draw_buffers with 1 buffer behaves like set_draw_buffer
  • camera - holds viewport info (does not set it, should it?)
  • clear_state - NONE added
  • device/uniform - nv_v_viewport & nv_v_screen_size built-ins added
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/gl/gl_context.hh

    r331 r342  
    3636                virtual const framebuffer_info* get_framebuffer_info( framebuffer f ) const;
    3737
    38                 virtual void set_draw_buffers( uint32 count, output_slot* slots );
     38                virtual void set_draw_buffers( uint32 count, const output_slot* slots );
    3939                virtual void set_draw_buffer( output_slot slot );
    4040                virtual void set_read_buffer( output_slot slot );
  • trunk/nv/interface/camera.hh

    r319 r342  
    7070                void set_camera( const camera& c ) { m_camera = c; }
    7171                void set_model( const mat4& m )    { m_model  = m; }
    72 
     72                void set_viewport( const ivec4& v ){ m_viewport = v; }
     73                const ivec4& get_viewport()  const { return m_viewport; }
    7374                const mat4& get_model()      const { return m_model; }
    7475                const mat4& get_view()       const { return m_camera.get_view(); }
     
    8384                mat4   m_model;
    8485                camera m_camera;
     86                ivec4  m_viewport;
    8587        };
    8688
  • trunk/nv/interface/clear_state.hh

    r319 r342  
    5757                enum buffers_type
    5858                {
     59                        NONE = 0,
    5960                        COLOR_BUFFER = 1,
    6061                        DEPTH_BUFFER = 2,
  • trunk/nv/interface/context.hh

    r331 r342  
    8989                virtual const framebuffer_info* get_framebuffer_info( framebuffer ) const = 0;
    9090
    91                 virtual void set_draw_buffers( uint32 count, output_slot* slots ) = 0;
     91                virtual void set_draw_buffers( uint32 count, const output_slot* slots ) = 0;
    9292                virtual void set_draw_buffer( output_slot slot ) = 0;
    9393                virtual void set_read_buffer( output_slot slot ) = 0;
  • trunk/nv/interface/device.hh

    r331 r342  
    265265                        factory_map[ "nv_v_camera_position" ]  = new engine_uniform_factory< engine_uniform_v_camera_position >();
    266266                        factory_map[ "nv_v_camera_direction" ] = new engine_uniform_factory< engine_uniform_v_camera_direction >();
     267                        factory_map[ "nv_v_viewport" ] = new engine_uniform_factory< engine_uniform_v_viewport >();
     268                        factory_map[ "nv_v_screen_size" ] = new engine_uniform_factory< engine_uniform_v_screen_size >();
    267269
    268270                        engine_link_uniform_factory_map& factory_link_map = get_link_uniform_factory();
  • trunk/nv/interface/uniform.hh

    r319 r342  
    223223        };
    224224
     225        class engine_uniform_v_viewport : public engine_uniform< ivec4 >
     226        {
     227        public:
     228                engine_uniform_v_viewport( uniform_base* u ) : engine_uniform( u ) {}
     229                virtual void set( const context* , const scene_state* s ) { m_uniform->set_value( s->get_viewport() ); }
     230        };
     231
     232        class engine_uniform_v_screen_size : public engine_uniform< ivec2 >
     233        {
     234        public:
     235                engine_uniform_v_screen_size( uniform_base* u ) : engine_uniform( u ) {}
     236                virtual void set( const context* , const scene_state* s ) { m_uniform->set_value( nv::ivec2( s->get_viewport().z, s->get_viewport().w ) ); }
     237        };
     238
     239
    225240        template< int VALUE >
    226241        class engine_link_uniform_int : public engine_link_uniform< int >
  • trunk/src/gl/gl_context.cc

    r335 r342  
    719719}
    720720
    721 void nv::gl_context::set_draw_buffers( uint32 count, output_slot* slots )
    722 {
     721void nv::gl_context::set_draw_buffers( uint32 count, const output_slot* slots )
     722{
     723        if ( count == 0 ) return;
     724        if ( count == 1 )
     725        {
     726                set_draw_buffer( slots[0] );
     727                return;
     728        }
    723729        unsigned int buffers[8];
    724730        count = glm::min<uint32>( count, 8 );
Note: See TracChangeset for help on using the changeset viewer.