- Timestamp:
- 04/29/16 12:42:28 (9 years ago)
- Location:
- trunk/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/engine/material_manager.cc
r486 r491 39 39 40 40 // HACK 41 for ( uint32 i = 0; i < 5; ++i )41 for ( uint32 i = 0; i < 8; ++i ) 42 42 if ( result->textures[i].is_nil() ) 43 43 result->textures[i] = m_default; … … 59 59 bool material_manager::load_resource( nv::lua::table_guard& table, nv::shash64 id ) 60 60 { 61 c_file_system fs; 61 62 material* m = new material; 62 m->paths[ TEX_DIFFUSE ] = table.get_string128( "diffuse" ); 63 m->paths[ TEX_SPECULAR ] = table.get_string128( "specular" ); 64 m->paths[ TEX_NORMAL ] = table.get_string128( "normal" ); 65 m->paths[ TEX_EMISSIVE ] = table.get_string128( "emissive" ); 66 m->paths[ TEX_GLOSS ] = table.get_string128( "gloss" ); 63 64 if ( table.is_string( "path" ) ) 65 { 66 string128 path = table.get_string128( "path" ); 67 for ( uint32 i = 0; i < 5; ++i ) 68 m->paths[i] = path; 69 m->paths[TEX_DIFFUSE].append( "_diffuse.png" ); 70 m->paths[TEX_NORMAL].append( "_normal.png" ); 71 m->paths[TEX_METALLIC].append( "_metallic.png" ); 72 m->paths[TEX_ROUGHNESS].append( "_roughness.png" ); 73 m->paths[TEX_EMISSIVE].append( "_emissive.png" ); 74 for ( uint32 i = 0; i < 5; ++i ) 75 { 76 if ( !fs.exists( m->paths[i] ) ) 77 { 78 if ( i != TEX_EMISSIVE ) 79 NV_LOG_ERROR( "Texture file not found! : ", m->paths[i] ); 80 m->paths[i].clear(); 81 } 82 } 83 } 84 else 85 { 86 m->paths[ TEX_DIFFUSE ] = table.get_string128( "diffuse" ); 87 m->paths[ TEX_NORMAL ] = table.get_string128( "normal" ); 88 m->paths[ TEX_METALLIC] = table.get_string128( "metallic" ); 89 m->paths[ TEX_ROUGHNESS] = table.get_string128( "roughness" ); 90 m->paths[ TEX_EMISSIVE ] = table.get_string128( "emissive" ); 91 } 67 92 add( id, m ); 68 93 return true; 69 94 } 95 -
trunk/src/engine/particle_engine.cc
r479 r491 497 497 info->particles = new particle[ data->quota ]; 498 498 info->quads = new particle_quad[ data->quota ]; 499 info->vtx_array = m_context->create_vertex_array<particle_vtx>( info->quads[0].data, data->quota*6, STREAM_DRAW ); 500 info->vtx_buffer = m_context->find_buffer( info->vtx_array, slot::POSITION ); 499 500 vertex_array_desc desc; 501 info->vtx_buffer = m_device->create_buffer( VERTEX_BUFFER, STREAM_DRAW, data->quota * 6 * sizeof( particle_vtx ), info->quads[0].data ); 502 desc.add_vertex_buffers< particle_vtx >( info->vtx_buffer, true ); 503 info->vtx_array = m_context->create_vertex_array( desc ); 501 504 info->last_update = m_last_update; 502 505 info->test = false; -
trunk/src/formats/assimp_loader.cc
r487 r491 188 188 189 189 uint8* cdata = maccess.add_channel( desc, mesh->mNumVertices ).raw_data(); 190 uint 16* indices = reinterpret_cast<uint16*>( maccess.add_channel< index_u16>( mesh->mNumFaces * 3 ).raw_data() );190 uint32* indices = reinterpret_cast<uint32*>( maccess.add_channel< index_u32 >( mesh->mNumFaces * 3 ).raw_data() ); 191 191 192 192 if ( mesh->mTangents && mesh->mBitangents ) … … 239 239 for (unsigned int j=0; j<face->mNumIndices; j++) 240 240 { 241 indices[ i*3 + j ] = uint 16( face->mIndices[j] );241 indices[ i*3 + j ] = uint32( face->mIndices[j] ); 242 242 } 243 243 } -
trunk/src/gfx/debug_draw.cc
r469 r491 25 25 #version 120 26 26 varying vec3 v_color; 27 out vec4 o_frag_color; 27 28 void main(void) 28 29 { 29 gl_FragColor = vec4( v_color, 1.0 );30 o_frag_color = vec4( v_color, 1.0 ); 30 31 } 31 32 )"; … … 44 45 if ( m_va.is_valid() ) m_context->release( m_va ); 45 46 m_buffer_size = nv::max( m_data.size(), 4096U, m_buffer_size ); 46 m_va = m_context->create_vertex_array();47 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 ); 48 vertex_array_desc va_desc; 49 va_desc.add_vertex_buffers< debug_vtx >( m_vb, true ); 50 m_va = m_context->create_vertex_array( va_desc ); 49 51 } 50 52 else -
trunk/src/gfx/mesh_creator.cc
r487 r491 388 388 { 389 389 case USHORT: swap_culling_impl< uint16 >( m_idx_channel ); break; 390 case UINT: swap_culling_impl< uint 16>( m_idx_channel ); break;390 case UINT: swap_culling_impl< uint32 >( m_idx_channel ); break; 391 391 default: NV_ASSERT( false, "Swap culling supports only unsigned and unsigned short indices!" ); break; 392 392 } -
trunk/src/gl/gl_context.cc
r487 r491 14 14 using namespace nv; 15 15 16 nv::vertex_array nv::gl_context::create_vertex_array( )16 nv::vertex_array nv::gl_context::create_vertex_array( const vertex_array_desc& desc ) 17 17 { 18 18 vertex_array result = m_vertex_arrays.create(); 19 vertex_array_info* info = m_vertex_arrays.get( result ); 20 info->count = 0; 21 info->index = buffer(); 22 info->index_owner = false; 23 info->index_type = USHORT; 19 gl_vertex_array_info* info = m_vertex_arrays.get( result ); 20 21 glGenVertexArrays( 1, &info->glid ); 22 info->count = desc.count; 23 info->index = desc.index; 24 info->index_owner = desc.index_owner; 25 info->index_type = desc.index_type; 26 27 for ( uint32 i = 0; i < desc.count; ++i ) 28 info->attr[i] = desc.attr[i]; 29 30 glBindVertexArray( info->glid ); 31 32 for ( uint32 i = 0; i < info->count; ++i ) 33 { 34 const vertex_buffer_attribute& vba = info->attr[i]; 35 uint32 location = static_cast<uint32>( vba.location ); 36 glEnableVertexAttribArray( location ); 37 const gl_buffer_info* vinfo = static_cast<const gl_buffer_info*>( m_device->get_buffer_info( vba.vbuffer ) ); 38 if ( vinfo && vinfo->type == VERTEX_BUFFER ) 39 glBindBuffer( GL_ARRAY_BUFFER, vinfo->glid ); 40 else 41 { 42 // TODO: report error 43 } 44 45 glVertexAttribPointer( 46 location, 47 static_cast<GLint>( vba.components ), 48 nv::datatype_to_gl_enum( vba.dtype ), 49 GL_FALSE, 50 static_cast<GLsizei>( vba.stride ), 51 reinterpret_cast<void*>( vba.offset ) 52 ); 53 } 54 glBindBuffer( GL_ARRAY_BUFFER, 0 ); 55 56 if ( info->index.is_valid() ) 57 { 58 const gl_buffer_info* iinfo = static_cast<const gl_buffer_info*>( m_device->get_buffer_info( info->index ) ); 59 if ( iinfo && iinfo->type == INDEX_BUFFER ) 60 { 61 glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, iinfo->glid ); 62 } 63 else 64 { 65 // TODO: report error 66 } 67 } 68 glBindBuffer( GL_ARRAY_BUFFER, 0 ); 69 glBindVertexArray( 0 ); 70 71 if ( info->index.is_valid() ) 72 { 73 glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); 74 } 75 76 for ( uint32 i = 0; i < info->count; ++i ) 77 { 78 glDisableVertexAttribArray( static_cast<uint32>( info->attr[i].location ) ); 79 } 80 81 24 82 return result; 25 83 } … … 27 85 nv::framebuffer nv::gl_context::create_framebuffer() 28 86 { 29 if ( is_gl_extension_loaded( GL_EXT_FRAMEBUFFER_OBJECT ) && is_gl_extension_loaded( GL_EXT_FRAMEBUFFER_BLIT ) ) 30 { 31 unsigned glid = 0; 32 glGenFramebuffers( 1, &glid ); 33 framebuffer result = m_framebuffers.create(); 34 gl_framebuffer_info* info = m_framebuffers.get( result ); 35 info->glid = glid; 36 info->depth_rb_glid = 0; 37 info->color_attachment_count = 0; 38 return result; 39 } 40 else return framebuffer(); 87 unsigned glid = 0; 88 glGenFramebuffers( 1, &glid ); 89 framebuffer result = m_framebuffers.create(); 90 gl_framebuffer_info* info = m_framebuffers.get( result ); 91 info->glid = glid; 92 info->depth_rb_glid = 0; 93 info->color_attachment_count = 0; 94 return result; 41 95 } 42 96 43 97 void nv::gl_context::release( vertex_array va ) 44 98 { 45 vertex_array_info* info = m_vertex_arrays.get( va );99 gl_vertex_array_info* info = m_vertex_arrays.get( va ); 46 100 if ( info ) 47 101 { … … 52 106 } 53 107 if ( info->index.is_valid() && info->index_owner) m_device->release( info->index ); 108 glDeleteVertexArrays( 1, &info->glid ); 54 109 m_vertex_arrays.destroy( va ); 55 110 } … … 71 126 } 72 127 73 const vertex_array_info* nv::gl_context::get_vertex_array_info( vertex_array va ) const74 {75 return m_vertex_arrays.get( va );76 }77 78 128 const framebuffer_info* nv::gl_context::get_framebuffer_info( framebuffer f ) const 79 129 { 80 130 return m_framebuffers.get( f ); 81 }82 83 vertex_array_info* nv::gl_context::get_vertex_array_info_mutable( vertex_array va )84 {85 return m_vertex_arrays.get( va );86 131 } 87 132 … … 170 215 glDrawBuffer( 0 ); 171 216 glReadBuffer( 0 ); 172 if ( is_gl_extension_loaded( GL_EXT_FRAMEBUFFER_OBJECT ) && is_gl_extension_loaded( GL_EXT_FRAMEBUFFER_BLIT ) ) 173 { 174 unsigned result = glCheckFramebufferStatus( framebuffer_slot_to_enum(ft) ); 175 if ( result == GL_FRAMEBUFFER_COMPLETE ) return true; 176 switch ( result ) 177 { 178 case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete attachment!" ); break; 179 case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : NV_LOG_ERROR( "gl_context::check : Framebuffer missing attachment!" ); break; 217 218 unsigned result = glCheckFramebufferStatus( framebuffer_slot_to_enum(ft) ); 219 if ( result == GL_FRAMEBUFFER_COMPLETE ) return true; 220 switch ( result ) 221 { 222 case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete attachment!" ); break; 223 case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : NV_LOG_ERROR( "gl_context::check : Framebuffer missing attachment!" ); break; 180 224 // case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete dimensions!" ); break; 181 225 // case GL_FRAMEBUFFER_INCOMPLETE_FORMATS : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete formats!" ); break; 182 case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete draw buffer!" ); break; 183 case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete read buffer!" ); break; 184 case GL_FRAMEBUFFER_UNSUPPORTED : NV_LOG_ERROR( "gl_context::check : Framebuffer format combination unsupported!" ); break; 185 default: NV_LOG_ERROR( "gl_context::check : Unknown Framebuffer error! (", result, ")" ); break; 186 } 187 } 188 else 189 { 190 NV_LOG_ERROR( "gl_context::check : Framebuffer extensions not loaded!" ); 226 case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete draw buffer!" ); break; 227 case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete read buffer!" ); break; 228 case GL_FRAMEBUFFER_UNSUPPORTED : NV_LOG_ERROR( "gl_context::check : Framebuffer format combination unsupported!" ); break; 229 default: NV_LOG_ERROR( "gl_context::check : Unknown Framebuffer error! (", result, ")" ); break; 191 230 } 192 231 glDrawBuffer( GL_BACK ); … … 205 244 { 206 245 glBindFramebuffer( framebuffer_slot_to_enum(ft), 0 ); 246 } 247 } 248 249 void nv::gl_context::bind( buffer b, texture t ) 250 { 251 const gl_buffer_info* binfo = static_cast< const gl_buffer_info* >( m_device->get_buffer_info( b ) ); 252 const gl_texture_info* tinfo = static_cast< const gl_texture_info* >( m_device->get_texture_info( t ) ); 253 NV_ASSERT( binfo && tinfo, "Bad buffer or texture passed to create_texture" ); 254 if ( binfo && tinfo ) 255 { 256 NV_ASSERT_ALWAYS( binfo->type == TEXTURE_BUFFER && tinfo->type == TEXTURE_1D_BUFFER, "bad texture or buffer type!" ); 257 glActiveTexture( GL_TEXTURE0 ); 258 glBindTexture( GL_TEXTURE_BUFFER, tinfo->glid ); 259 glTexBuffer( GL_TEXTURE_BUFFER, image_format_to_internal_enum( tinfo->format.format ), binfo->glid ); 260 glBindTexture( GL_TEXTURE_BUFFER, 0 ); 207 261 } 208 262 } … … 252 306 void nv::gl_context::bind( vertex_array va ) 253 307 { 254 const vertex_array_info* info = m_vertex_arrays.get( va ); 255 if ( info ) 256 { 257 for ( uint32 i = 0; i < info->count; ++i ) 258 { 259 const vertex_buffer_attribute& vba = info->attr[i]; 260 uint32 location = static_cast<uint32>( vba.location ); 261 glEnableVertexAttribArray( location ); 262 const gl_buffer_info* vinfo = static_cast< const gl_buffer_info* >( m_device->get_buffer_info( vba.vbuffer ) ); 263 if ( vinfo && vinfo->type == VERTEX_BUFFER ) 264 glBindBuffer( GL_ARRAY_BUFFER, vinfo->glid ); 265 else 266 { 267 // TODO: report error 268 } 269 270 glVertexAttribPointer( 271 location, 272 static_cast<GLint>( vba.components ), 273 nv::datatype_to_gl_enum( vba.dtype ), 274 GL_FALSE, 275 static_cast<GLsizei>( vba.stride ), 276 reinterpret_cast<void*>( vba.offset ) 277 ); 278 } 279 glBindBuffer( GL_ARRAY_BUFFER, 0 ); 280 281 if ( info->index.is_valid() ) 282 { 283 const gl_buffer_info* iinfo = static_cast< const gl_buffer_info* >( m_device->get_buffer_info( info->index ) ); 284 if ( iinfo && iinfo->type == INDEX_BUFFER ) 285 { 286 glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, iinfo->glid ); 287 } 288 else 289 { 290 // TODO: report error 291 } 292 } 308 gl_vertex_array_info* info = m_vertex_arrays.get( va ); 309 if ( info ) 310 { 311 glBindVertexArray( info->glid ); 293 312 } 294 313 } … … 313 332 if ( info ) 314 333 { 315 if ( info->index.is_valid() ) 316 { 317 glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); 318 } 319 320 for ( uint32 i = 0; i < info->count; ++i ) 321 { 322 glDisableVertexAttribArray( static_cast<uint32>( info->attr[i].location ) ); 323 } 334 glBindVertexArray( 0 ); 324 335 } 325 336 } … … 340 351 { 341 352 const gl_texture_info* info = static_cast< const gl_texture_info* >( m_device->get_texture_info( t ) ); 353 NV_ASSERT_ALWAYS( info->type != TEXTURE_1D_BUFFER, "Buffer texture passed to update!" ); 342 354 if ( info ) 343 355 { … … 347 359 348 360 glBindTexture( gl_type, info->glid ); 361 int this_should_be_subTexImage; 349 362 if ( info->type == TEXTURE_3D || info->type == TEXTURE_2D_ARRAY ) 350 363 glTexImage3D( gl_type, 0, static_cast<GLint>( nv::image_format_to_internal_enum( format.format ) ), size.x, size.y, size.z, 0, nv::image_format_to_enum( format.format ), nv::datatype_to_gl_enum( format.type ), data ); … … 722 735 { 723 736 // TODO: configurable: 724 load_gl_extensions( GL_EXT_FRAMEBUFFER_BLIT | GL_EXT_FRAMEBUFFER_OBJECT | GL_EXT_TEXTURE_ARRAY );737 // load_gl_extensions( GL_EXT_FRAMEBUFFER_BLIT | GL_EXT_FRAMEBUFFER_OBJECT | GL_EXT_TEXTURE_ARRAY ); 725 738 force_apply_render_state( m_render_state ); 726 727 739 } 728 740 -
trunk/src/gl/gl_device.cc
r487 r491 17 17 gl_device::gl_device() 18 18 { 19 m_shader_header.append( "#version 330 \n" );19 m_shader_header.append( "#version 330 core\n" ); 20 20 for ( auto& i : get_uniform_factory() ) 21 21 m_shader_header.append( "uniform "+datatype_to_glsl_type( i.second->get_datatype() )+" "+ i.first +";\n" ); … … 95 95 nv::texture nv::gl_device::create_texture( texture_type type, ivec2 size, image_format aformat, sampler asampler, const void* data /*= nullptr */ ) 96 96 { 97 NV_ASSERT_ALWAYS( type != TEXTURE_ 3D && type != TEXTURE_2D_ARRAY, "2D texture type expected!" );97 NV_ASSERT_ALWAYS( type != TEXTURE_1D_BUFFER && type != TEXTURE_3D && type != TEXTURE_2D_ARRAY, "2D texture type expected!" ); 98 98 unsigned glid = 0; 99 99 unsigned gl_type = texture_type_to_enum( type ); 100 GLint gl_internal = GLint( nv::image_format_to_internal_enum( aformat.format ) ); 101 unsigned gl_enum = nv::image_format_to_enum( aformat.format ); 100 102 101 103 bool is_depth = aformat.format == DEPTH16 || aformat.format == DEPTH24 || aformat.format == DEPTH32; … … 106 108 107 109 // Detect if mipmapping was requested 108 if ( gl_type == GL_TEXTURE_2D && asampler.filter_min != sampler::LINEAR && asampler.filter_min != sampler::NEAREST )110 if ( gl_type == GL_TEXTURE_2D && gl_enum != GL_RED_INTEGER && asampler.filter_min != sampler::LINEAR && asampler.filter_min != sampler::NEAREST ) 109 111 { 110 112 // TODO: This should not be done if we use framebuffers! … … 119 121 glTexParameteri( gl_type, GL_TEXTURE_MIN_FILTER, GLint( nv::sampler_filter_to_enum( asampler.filter_min ) ) ); 120 122 glTexParameteri( gl_type, GL_TEXTURE_MAG_FILTER, GLint( nv::sampler_filter_to_enum( asampler.filter_max ) ) ); 121 glTexParameteri( gl_type, GL_TEXTURE_WRAP_S, GLint( nv::sampler_wrap_to_enum( asampler.wrap_s) ) ); 122 glTexParameteri( gl_type, GL_TEXTURE_WRAP_T, GLint( nv::sampler_wrap_to_enum( asampler.wrap_t) ) ); 123 124 if ( gl_enum != GL_RED_INTEGER ) 125 { 126 glTexParameteri( gl_type, GL_TEXTURE_WRAP_S, GLint( nv::sampler_wrap_to_enum( asampler.wrap_s ) ) ); 127 glTexParameteri( gl_type, GL_TEXTURE_WRAP_T, GLint( nv::sampler_wrap_to_enum( asampler.wrap_t ) ) ); 128 } 123 129 124 130 if ( is_depth ) … … 140 146 // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, aniso ); 141 147 142 glTexImage2D( gl_type, 0, GLint( nv::image_format_to_internal_enum(aformat.format) ), size.x, size.y, 0, nv::image_format_to_enum(aformat.format), nv::datatype_to_gl_enum(aformat.type), data );148 glTexImage2D( gl_type, 0, gl_internal, size.x, size.y, 0, gl_enum, nv::datatype_to_gl_enum(aformat.type), data ); 143 149 144 150 glBindTexture( gl_type, 0 ); … … 154 160 } 155 161 162 163 nv::texture nv::gl_device::create_texture( texture_type type, pixel_format format ) 164 { 165 NV_ASSERT_ALWAYS( type == TEXTURE_1D_BUFFER ); 166 unsigned glid = 0; 167 unsigned gl_type = texture_type_to_enum( type ); 168 169 glGenTextures( 1, &glid ); 170 171 texture result = m_textures.create(); 172 gl_texture_info* info = m_textures.get( result ); 173 info->type = type; 174 info->format = format; 175 info->tsampler = sampler(); 176 info->size = ivec3( 1, 1, 1 ); 177 info->glid = glid; 178 179 return result; 180 } 181 156 182 nv::texture nv::gl_device::create_texture( texture_type type, ivec3 size, image_format aformat, sampler asampler, const void* data /*= nullptr */ ) 157 183 { … … 234 260 nv::buffer nv::gl_device::create_buffer( buffer_type type, buffer_hint hint, size_t size, const void* source /*= nullptr */ ) 235 261 { 236 unsigned glid 262 unsigned glid = 0; 237 263 unsigned glenum = buffer_type_to_enum( type ); 238 264 glGenBuffers( 1, &glid ); 239 265 240 glBindBuffer( glenum, glid ); 241 glBufferData( glenum, GLsizeiptr( size ), source, buffer_hint_to_enum( hint ) ); 242 glBindBuffer( glenum, 0 ); 266 if ( size > 0 ) 267 { 268 glBindBuffer( glenum, glid ); 269 glBufferData( glenum, GLsizeiptr( size ), source, buffer_hint_to_enum( hint ) ); 270 glBindBuffer( glenum, 0 ); 271 } 243 272 244 273 buffer result = m_buffers.create(); … … 249 278 info->glid = glid; 250 279 return result; 280 } 281 282 void nv::gl_device::create_buffer( buffer b, size_t size, const void* source ) 283 { 284 gl_buffer_info* info = m_buffers.get( b ); 285 if ( info ) 286 { 287 unsigned glenum = buffer_type_to_enum( info->type ); 288 glBindBuffer( glenum, info->glid ); 289 glBufferData( glenum, GLsizeiptr( size ), source, buffer_hint_to_enum( info->hint ) ); 290 glBindBuffer( glenum, 0 ); 291 } 251 292 } 252 293 -
trunk/src/gl/gl_enum.cc
r473 r491 15 15 switch( type ) 16 16 { 17 case TEXTURE_1D : return GL_TEXTURE_1D; 18 case TEXTURE_2D : return GL_TEXTURE_2D; 19 case TEXTURE_RECT : return GL_TEXTURE_RECTANGLE; 20 case TEXTURE_3D : return GL_TEXTURE_3D; 21 case TEXTURE_CUBE : return GL_TEXTURE_CUBE_MAP; 22 case TEXTURE_1D_ARRAY: return GL_TEXTURE_1D_ARRAY; 23 case TEXTURE_2D_ARRAY: return GL_TEXTURE_2D_ARRAY; 17 case TEXTURE_1D : return GL_TEXTURE_1D; 18 case TEXTURE_2D : return GL_TEXTURE_2D; 19 case TEXTURE_RECT : return GL_TEXTURE_RECTANGLE; 20 case TEXTURE_3D : return GL_TEXTURE_3D; 21 case TEXTURE_CUBE : return GL_TEXTURE_CUBE_MAP; 22 case TEXTURE_1D_ARRAY : return GL_TEXTURE_1D_ARRAY; 23 case TEXTURE_2D_ARRAY : return GL_TEXTURE_2D_ARRAY; 24 case TEXTURE_1D_BUFFER: return GL_TEXTURE_BUFFER; 24 25 NV_RETURN_COVERED_DEFAULT( 0 ); 25 26 } … … 171 172 case INDEX_BUFFER : return GL_ELEMENT_ARRAY_BUFFER; 172 173 case UNIFORM_BUFFER : return GL_UNIFORM_BUFFER; 174 case TEXTURE_BUFFER : return GL_TEXTURE_BUFFER; 173 175 NV_RETURN_COVERED_DEFAULT( 0 ); 174 176 } … … 193 195 case DEPTH24 : return GL_DEPTH_COMPONENT; 194 196 case DEPTH32 : return GL_DEPTH_COMPONENT; 197 case R8I : return GL_RED_INTEGER; 198 case R8UI : return GL_RED_INTEGER; 199 case R16I : return GL_RED_INTEGER; 200 case R16UI : return GL_RED_INTEGER; 201 case R32I : return GL_RED_INTEGER; 202 case R32UI : return GL_RED_INTEGER; 195 203 NV_RETURN_COVERED_DEFAULT( 0 ); 196 204 } … … 215 223 case DEPTH24 : return GL_DEPTH_COMPONENT24; 216 224 case DEPTH32: return GL_DEPTH_COMPONENT32; 225 case R8I : return GL_R8I; 226 case R8UI : return GL_R8UI; 227 case R16I : return GL_R16I; 228 case R16UI : return GL_R16UI; 229 case R32I : return GL_R32I; 230 case R32UI : return GL_R32UI; 217 231 NV_RETURN_COVERED_DEFAULT( 0 ); 218 232 } … … 358 372 case GL_SAMPLER_1D_ARRAY_SHADOW: return INT; 359 373 case GL_SAMPLER_2D_ARRAY_SHADOW: return INT; 374 case GL_SAMPLER_BUFFER : return INT; 375 376 case GL_INT_SAMPLER_1D : return INT; 377 case GL_INT_SAMPLER_2D : return INT; 378 case GL_INT_SAMPLER_3D : return INT; 379 case GL_INT_SAMPLER_2D_RECT : return INT; 380 case GL_INT_SAMPLER_CUBE : return INT; 381 case GL_INT_SAMPLER_1D_ARRAY : return INT; 382 case GL_INT_SAMPLER_2D_ARRAY : return INT; 383 case GL_INT_SAMPLER_BUFFER : return INT; 384 case GL_UNSIGNED_INT_SAMPLER_1D : return INT; 385 case GL_UNSIGNED_INT_SAMPLER_2D : return INT; 386 case GL_UNSIGNED_INT_SAMPLER_3D : return INT; 387 case GL_UNSIGNED_INT_SAMPLER_2D_RECT : return INT; 388 case GL_UNSIGNED_INT_SAMPLER_CUBE : return INT; 389 case GL_UNSIGNED_INT_SAMPLER_1D_ARRAY : return INT; 390 case GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : return INT; 391 case GL_UNSIGNED_INT_SAMPLER_BUFFER : return INT; 360 392 // TODO: implement? 361 393 // case GL_BOOL -
trunk/src/gui/gui_gfx_renderer.cc
r487 r491 12 12 13 13 static const char *nv_gui_vertex_shader = R"( 14 #version 13014 #version 330 15 15 in vec2 nv_position; 16 16 in vec2 nv_texcoord; … … 28 28 29 29 static const char *nv_gui_fragment_shader = R"( 30 #version 13030 #version 330 31 31 in vec4 v_color; 32 32 in vec2 v_texcoord; 33 33 uniform sampler2D nv_t_diffuse; 34 out vec4 o_frag_color; 35 34 36 void main(void) 35 37 { 36 38 vec4 tex_color = texture2D( nv_t_diffuse, v_texcoord ); 37 gl_FragColor = v_color * tex_color;39 o_frag_color = v_color * tex_color; 38 40 } 39 41 )"; … … 158 160 m_scene_state.get_camera().set_ortho( 0.0f, float( m_window->get_width() ), float( m_window->get_height() ), 0.0f ); 159 161 160 sr->varray = m_window->get_context()->create_vertex_array();161 162 buffer vb = sr->buffer.get_buffer(); 162 m_window->get_context()->add_vertex_buffers< vertex >( sr->varray, vb, false ); 163 vertex_array_desc va_desc; 164 va_desc.add_vertex_buffers< vertex >( vb, true ); 165 sr->varray = m_window->get_context()->create_vertex_array( va_desc ); 163 166 164 167 nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::CLAMP_TO_EDGE ); … … 377 380 if ( sr->buffer.commit() ) 378 381 { 379 buffer vb = sr->buffer.get_buffer();380 m_context->replace_vertex_buffer( sr->varray, vb, false );382 // buffer vb = sr->buffer.get_buffer(); 383 // m_context->replace_vertex_buffer( sr->varray, vb, false ); 381 384 } 382 385 m_context->bind( sr->tex, TEX_DIFFUSE ); … … 401 404 m_style.load_flags( e ); 402 405 } 406 407 void nv::gui::gfx_renderer::set_shader( program p ) 408 { 409 static_cast<screen_render_data*>( m_render_data )->shader = p; 410 } -
trunk/src/lib/gl.cc
r487 r491 226 226 #endif 227 227 } 228 228 /* 229 229 const char* nv::get_gl_extension_name( gl_extensions extension ) 230 230 { … … 311 311 return true; 312 312 } 313 313 */ 314 315 -
trunk/src/lua/lua_area.cc
r490 r491 161 161 } 162 162 } 163 if (c->y != a->ul.y && c->y != a->lr.y && c->x == a->ul.x + 1 ) c->x = a-> ul.x;163 if (c->y != a->ul.y && c->y != a->lr.y && c->x == a->ul.x + 1 ) c->x = a->lr.x; 164 164 165 165 … … 313 313 { 314 314 nv::ivec2 c = to_coord( L, 1 ); 315 int amount = static_cast< int >( lua_tointeger( L, 1) );315 int amount = static_cast< int >( lua_tointeger( L, 2 ) ); 316 316 nv::ivec2 shift( amount, amount ); 317 317 push_area( L, nv::rectangle( c - shift, c + shift ) ); -
trunk/src/sdl/sdl_window.cc
r486 r491 30 30 // SDL_GL_SetAttribute( SDL_GL_MULTISAMPLESAMPLES, 4 ); 31 31 32 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); 33 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); 32 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); 33 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); 34 35 SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE ); 36 34 37 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); 35 38
Note: See TracChangeset
for help on using the changeset viewer.