MCPcopy Create free account
hub / github.com/Panzerschrek/Chasm-Reverse / LoadFloorsTextures

Method LoadFloorsTextures

PanzerChasm/client/map_drawer_gl.cpp:843–890  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

841}
842
843void MapDrawerGL::LoadFloorsTextures( const MapData& map_data )
844{
845 const Palette& palette= game_resources_->palette;
846
847 const unsigned int texture_texels= MapData::c_floor_texture_size * MapData::c_floor_texture_size;
848
849 glBindTexture( GL_TEXTURE_2D_ARRAY, floor_textures_array_id_ );
850 glTexImage3D(
851 GL_TEXTURE_2D_ARRAY, 0, GL_RGBA8,
852 MapData::c_floor_texture_size, MapData::c_floor_texture_size, MapData::c_floors_textures_count,
853 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr );
854
855 for( unsigned int t= 0u; t < MapData::c_floors_textures_count; t++ )
856 {
857 const unsigned char* const in_data= map_data.floor_textures_data[t];
858
859 unsigned char texture_data[ 4u * texture_texels ];
860
861 for( unsigned int i= 0u; i < texture_texels; i++ )
862 {
863 const unsigned char color_index= in_data[i];
864 for( unsigned int j= 0u; j < 3u; j++ )
865 texture_data[ (i << 2u) + j ]= palette[ color_index * 3u + j ];
866 texture_data[ (i << 2u) + 3u ]= 255u;
867 }
868
869 glTexSubImage3D(
870 GL_TEXTURE_2D_ARRAY, 0,
871 0, 0, t,
872 MapData::c_floor_texture_size, MapData::c_floor_texture_size, 1,
873 GL_RGBA, GL_UNSIGNED_BYTE,
874 texture_data );
875
876 } // for textures
877
878 if( filter_textures_ )
879 {
880 glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
881 glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
882 }
883 else
884 {
885 glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
886 glTexParameteri( GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR );
887 }
888
889 glGenerateMipmap( GL_TEXTURE_2D_ARRAY );
890}
891
892void MapDrawerGL::LoadWallsTextures( const MapData& map_data )
893{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected