LM_UploadBlock @param dynamic
( boolean dynamic )
| 1021 | * @param dynamic |
| 1022 | */ |
| 1023 | void LM_UploadBlock( boolean dynamic ) |
| 1024 | { |
| 1025 | int texture = ( dynamic ) ? 0 : gl_lms.current_lightmap_texture; |
| 1026 | |
| 1027 | GL_Bind( gl_state.lightmap_textures + texture ); |
| 1028 | gl.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
| 1029 | gl.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
| 1030 | |
| 1031 | gl_lms.lightmap_buffer.rewind(); |
| 1032 | if ( dynamic ) |
| 1033 | { |
| 1034 | int height = 0; |
| 1035 | for (int i = 0; i < BLOCK_WIDTH; i++ ) |
| 1036 | { |
| 1037 | if ( gl_lms.allocated[i] > height ) |
| 1038 | height = gl_lms.allocated[i]; |
| 1039 | } |
| 1040 | |
| 1041 | gl.glTexSubImage2D( GL_TEXTURE_2D, |
| 1042 | 0, |
| 1043 | 0, 0, |
| 1044 | BLOCK_WIDTH, height, |
| 1045 | GL_LIGHTMAP_FORMAT, |
| 1046 | GL_UNSIGNED_BYTE, |
| 1047 | gl_lms.lightmap_buffer ); |
| 1048 | } |
| 1049 | else |
| 1050 | { |
| 1051 | gl.glTexImage2D( GL_TEXTURE_2D, |
| 1052 | 0, |
| 1053 | gl_lms.internal_format, |
| 1054 | BLOCK_WIDTH, BLOCK_HEIGHT, |
| 1055 | 0, |
| 1056 | GL_LIGHTMAP_FORMAT, |
| 1057 | GL_UNSIGNED_BYTE, |
| 1058 | gl_lms.lightmap_buffer ); |
| 1059 | if ( ++gl_lms.current_lightmap_texture == MAX_LIGHTMAPS ) |
| 1060 | Com.Error( Defines.ERR_DROP, "LM_UploadBlock() - MAX_LIGHTMAPS exceeded\n" ); |
| 1061 | |
| 1062 | //debugLightmap(gl_lms.lightmap_buffer, 128, 128, 4); |
| 1063 | } |
| 1064 | } |
| 1065 | |
| 1066 | /** |
| 1067 | * LM_AllocBlock |
no test coverage detected