- Timestamp:
- 05/28/13 22:19:58 (12 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv/gl/gl_device.hh
r45 r49 26 26 virtual index_buffer* create_index_buffer( buffer_hint hint, int size, void* source = nullptr ); 27 27 virtual vertex_array* create_vertex_array(); 28 virtual texture2d* create_texture2d( ivec2 size, texture2d::format aformat, texture2d::datatype adatatype, texture2d_samplersampler, void* data = nullptr );28 virtual texture2d* create_texture2d( ivec2 size, image_format aformat, type adatatype, sampler asampler, void* data = nullptr ); 29 29 virtual ~gl_device(); 30 30 private: -
trunk/nv/gl/gl_enum.hh
r45 r49 32 32 unsigned int stencil_operation_to_enum( stencil_test_face::operation type ); 33 33 unsigned int buffer_hint_to_enum( buffer_hint hint ); 34 unsigned int texture_format_to_enum( texture2d::format format ); 35 unsigned int texture_datatype_to_enum( texture2d::datatype datatype ); 36 unsigned int texture_filter_to_enum( texture2d_sampler::filter filter ); 37 unsigned int texture_wrap_to_enum( texture2d_sampler::wrap wrap ); 34 unsigned int image_format_to_enum( image_format format ); 35 unsigned int sampler_filter_to_enum( sampler::filter filter ); 36 unsigned int sampler_wrap_to_enum( sampler::wrap wrap ); 38 37 unsigned int primitive_to_enum( primitive p ); 39 38 -
trunk/nv/gl/gl_texture2d.hh
r43 r49 22 22 { 23 23 public: 24 gl_texture2d( ivec2 size, format aformat, datatype adatatype, texture2d_samplersampler, void* data = nullptr );24 gl_texture2d( ivec2 size, image_format aformat, type adatatype, sampler asampler, void* data = nullptr ); 25 25 virtual void assign( void* data ); 26 26 virtual void bind( int slot = 0 ); -
trunk/nv/interface/device.hh
r45 r49 31 31 virtual index_buffer* create_index_buffer( buffer_hint hint, int size, void* source = nullptr ) = 0; 32 32 virtual vertex_array* create_vertex_array() = 0; 33 virtual texture2d* create_texture2d( ivec2 size, texture2d::format aformat, texture2d::datatype adatatype, texture2d_samplersampler, void* data = nullptr ) = 0;33 virtual texture2d* create_texture2d( ivec2 size, image_format aformat, type adatatype, sampler asampler, void* data = nullptr ) = 0; 34 34 }; 35 35 -
trunk/nv/interface/texture2d.hh
r43 r49 19 19 { 20 20 21 struct texture2d_sampler21 struct sampler 22 22 { 23 23 enum filter … … 43 43 wrap wrap_t; 44 44 45 texture2d_sampler( filter min, filter max, wrap s, wrap t )45 sampler( filter min, filter max, wrap s, wrap t ) 46 46 : filter_min( min ), filter_max( max ), wrap_s( s ), wrap_t( t ) {} 47 texture2d_sampler( filter f, wrap w )47 sampler( filter f, wrap w ) 48 48 : filter_min( f ), filter_max( f ), wrap_s( w ), wrap_t( w ) {} 49 49 50 50 }; 51 51 52 enum image_format 53 { 54 RGB, 55 RGBA 56 }; 52 57 53 58 class texture2d 54 59 { 55 60 public: 56 enum format57 {58 RGB,59 RGBA60 };61 61 62 enum datatype 63 { 64 UINT, 65 UBYTE, 66 FLOAT 67 }; 68 texture2d( ivec2 size, format aformat, datatype adatatype, texture2d_sampler asampler ) : 62 texture2d( ivec2 size, image_format aformat, type adatatype, sampler asampler ) : 69 63 m_size( size ), m_format( aformat ), m_datatype( adatatype ), m_sampler( asampler ) {} 70 64 virtual void assign( void* data ) = 0; … … 75 69 int get_width() const { return m_size.x; } 76 70 int get_height() const { return m_size.y; } 77 format get_format() const { return m_format; }78 datatype get_datatype() const { return m_datatype; }79 const texture2d_sampler& get_sampler() const { return m_sampler; }71 image_format get_format() const { return m_format; } 72 type get_datatype() const { return m_datatype; } 73 const sampler& get_sampler() const { return m_sampler; } 80 74 protected: 81 ivec2 82 formatm_format;83 datatypem_datatype;84 texture2d_samplerm_sampler;75 ivec2 m_size; 76 image_format m_format; 77 type m_datatype; 78 sampler m_sampler; 85 79 }; 86 80 -
trunk/src/gl/gl_device.cc
r45 r49 67 67 } 68 68 69 texture2d* gl_device::create_texture2d( ivec2 size, texture2d::format aformat, texture2d::datatype adatatype, texture2d_samplersampler, void* data /*= nullptr */ )69 texture2d* gl_device::create_texture2d( ivec2 size, image_format aformat, type adatatype, sampler asampler, void* data /*= nullptr */ ) 70 70 { 71 return new gl_texture2d( size, aformat, adatatype, sampler, data );71 return new gl_texture2d( size, aformat, adatatype, asampler, data ); 72 72 } 73 73 -
trunk/src/gl/gl_enum.cc
r45 r49 134 134 } 135 135 136 unsigned int nv:: texture_format_to_enum( texture2d::format format )136 unsigned int nv::image_format_to_enum( image_format format ) 137 137 { 138 138 switch( format ) 139 139 { 140 case texture2d::RGB : return GL_RGB; 141 case texture2d::RGBA : return GL_RGBA; 142 default : return 0; // TODO: throw! 143 } 144 } 145 146 unsigned int nv::texture_datatype_to_enum( texture2d::datatype datatype ) 147 { 148 switch( datatype ) 149 { 150 case texture2d::UINT : return GL_UNSIGNED_INT; 151 case texture2d::UBYTE : return GL_UNSIGNED_BYTE; 152 case texture2d::FLOAT : return GL_FLOAT; 153 default : return 0; // TODO: throw! 154 } 155 } 156 157 unsigned int nv::texture_filter_to_enum( texture2d_sampler::filter filter ) 140 case RGB : return GL_RGB; 141 case RGBA : return GL_RGBA; 142 default : return 0; // TODO: throw! 143 } 144 } 145 146 unsigned int nv::sampler_filter_to_enum( sampler::filter filter ) 158 147 { 159 148 switch( filter ) 160 149 { 161 case texture2d_sampler::LINEAR : return GL_LINEAR;162 case texture2d_sampler::NEAREST : return GL_NEAREST;163 case texture2d_sampler::NEAREST_MIPMAP_NEAREST : return GL_NEAREST_MIPMAP_NEAREST;164 case texture2d_sampler::LINEAR_MIPMAP_NEAREST : return GL_LINEAR_MIPMAP_NEAREST;165 case texture2d_sampler::NEAREST_MIPMAP_LINEAR : return GL_NEAREST_MIPMAP_LINEAR;166 case texture2d_sampler::LINEAR_MIPMAP_LINEAR : return GL_LINEAR_MIPMAP_LINEAR;167 default : return 0; // TODO: throw! 168 } 169 } 170 171 unsigned int nv:: texture_wrap_to_enum( texture2d_sampler::wrap wrap )150 case sampler::LINEAR : return GL_LINEAR; 151 case sampler::NEAREST : return GL_NEAREST; 152 case sampler::NEAREST_MIPMAP_NEAREST : return GL_NEAREST_MIPMAP_NEAREST; 153 case sampler::LINEAR_MIPMAP_NEAREST : return GL_LINEAR_MIPMAP_NEAREST; 154 case sampler::NEAREST_MIPMAP_LINEAR : return GL_NEAREST_MIPMAP_LINEAR; 155 case sampler::LINEAR_MIPMAP_LINEAR : return GL_LINEAR_MIPMAP_LINEAR; 156 default : return 0; // TODO: throw! 157 } 158 } 159 160 unsigned int nv::sampler_wrap_to_enum( sampler::wrap wrap ) 172 161 { 173 162 switch( wrap ) 174 163 { 175 case texture2d_sampler::CLAMP_TO_EDGE : return GL_CLAMP_TO_EDGE;176 case texture2d_sampler::CLAMP_TO_BORDER : return GL_CLAMP_TO_BORDER;177 case texture2d_sampler::MIRRORED_REPEAT : return GL_MIRRORED_REPEAT;178 case texture2d_sampler::REPEAT : return GL_REPEAT;164 case sampler::CLAMP_TO_EDGE : return GL_CLAMP_TO_EDGE; 165 case sampler::CLAMP_TO_BORDER : return GL_CLAMP_TO_BORDER; 166 case sampler::MIRRORED_REPEAT : return GL_MIRRORED_REPEAT; 167 case sampler::REPEAT : return GL_REPEAT; 179 168 default : return 0; // TODO: throw! 180 169 } -
trunk/src/gl/gl_texture2d.cc
r43 r49 10 10 using namespace nv; 11 11 12 nv::gl_texture2d::gl_texture2d( ivec2 size, format aformat, datatype adatatype, texture2d_samplersampler, void* data /*= nullptr */ )13 : texture2d( size, aformat, adatatype, sampler ), m_name()12 nv::gl_texture2d::gl_texture2d( ivec2 size, image_format aformat, type adatatype, sampler asampler, void* data /*= nullptr */ ) 13 : texture2d( size, aformat, adatatype, asampler ), m_name() 14 14 { 15 15 glBindTexture( GL_TEXTURE_2D, m_name.get_value() ); 16 16 17 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nv:: texture_filter_to_enum( m_sampler.filter_min ) );18 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nv:: texture_filter_to_enum( m_sampler.filter_max ) );19 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, nv:: texture_wrap_to_enum( m_sampler.wrap_s) );20 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, nv:: texture_wrap_to_enum( m_sampler.wrap_t) );17 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nv::sampler_filter_to_enum( m_sampler.filter_min ) ); 18 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nv::sampler_filter_to_enum( m_sampler.filter_max ) ); 19 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, nv::sampler_wrap_to_enum( m_sampler.wrap_s) ); 20 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, nv::sampler_wrap_to_enum( m_sampler.wrap_t) ); 21 21 22 22 glBindTexture( GL_TEXTURE_2D, 0 ); … … 31 31 { 32 32 glBindTexture( GL_TEXTURE_2D, m_name.get_value() ); 33 glTexImage2D( GL_TEXTURE_2D, 0, nv:: texture_format_to_enum(m_format), m_size.x, m_size.y, 0, nv::texture_format_to_enum(m_format), nv::texture_datatype_to_enum(m_datatype), data );33 glTexImage2D( GL_TEXTURE_2D, 0, nv::image_format_to_enum(m_format), m_size.x, m_size.y, 0, nv::image_format_to_enum(m_format), nv::type_to_gl_enum(m_datatype), data ); 34 34 glBindTexture( GL_TEXTURE_2D, 0 ); 35 35 } -
trunk/tests/render_test/rl.cc
r47 r49 95 95 SDL_Surface* texture = IMG_Load( "spritesheet.png" ); 96 96 nv::image sprites( glm::ivec2( texture->w, texture->h ), 4, (nv::uint8*)texture->pixels ); 97 nv:: texture2d_sampler sampler( nv::texture2d_sampler::NEAREST, nv::texture2d_sampler::REPEAT );98 m_texture = m_device->create_texture2d( sprites.get_size(), nv:: texture2d::RGBA, nv::texture2d::UBYTE, sampler, (void*)sprites.get_data() );97 nv::sampler sampler( nv::sampler::NEAREST, nv::sampler::REPEAT ); 98 m_texture = m_device->create_texture2d( sprites.get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites.get_data() ); 99 99 100 100 m_clear_state.buffers = nv::clear_state::COLOR_AND_DEPTH_BUFFER;
Note: See TracChangeset
for help on using the changeset viewer.