|
|
Engine Version: 6153(Steam)
Function Name: R_LoadSkys
Function Name in Disassembling: sub_1D4E772
Address: 0x1D4E772
Function Signature: \x55\x8B\xEC\x83\xEC\x6C\xA1\x44
Function Prototype:
- void R_LoadSkys (void)
- {
- int i, j, skipBMP;
- char name[64];
- byte *buffer;
- qboolean printed;
- if ( !gLoadSky )
- {
- for ( i = 0; i < 6; i++ )
- {
- if ( gSkyTexNumber )
- {
- qglDeleteTextures( 1, &gSkyTexNumber );
- gSkyTexNumber = 0;
- }
- }
- return;
- }
- if ( qglColorTableEXT && gl_palette_tex.value )
- GL_PaletteClearSky();
- else
- skipBMP = true;
- buffer = Mem_Malloc( 0x40000 );
- retry:
- printed = false;
- for (i=0 ; i<6 ; i++)
- {
- int loadedBMP, palCount, bmpWidth, bmpHeight, paletteIndex;
- byte *packPalette, *pImage;
- FileHandle_t hFile;
- loadedBMP = false;
- Q_snprintf (name, sizeof( name ), "gfx/env/%s%s.bmp", movevars.skyName, suf);
- if ( !skipBMP )
- {
- hFile = FS_Open( name, "rb" );
- if ( hFile )
- {
- LoadBMP8( hFile, &packPalette, &palCount, &pImage, &bmpWidth, &bmpHeight );
- if ( bmpHeight * bmpWidth > 0 )
- {
- paletteIndex = GL_PaletteAdd( packPalette, true );
- if ( paletteIndex >= 0 )
- {
- if ( !gSkyTexNumber )
- gSkyTexNumber = GL_GenTexture();
- GL_Bind (gSkyTexNumber);
- qglTexImage2D (GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, 256, 256, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, pImage);
- skipBMP = false;
- loadedBMP = true;
- gSkyTexNumber = gSkyTexNumber | ((paletteIndex + 1) << 16);
- }
- Mem_Free( pImage );
- Mem_Free( packPalette );
- }
- }
- }
- if ( !loadedBMP )
- {
- int w, h, bpp;
- Q_snprintf (name, sizeof( name ), "gfx/env/%s%s.tga", movevars.skyName, suf);
- if ( !LoadTGA ( name, buffer, 0x40000, NULL, NULL ) )
- {
- Con_Printf ("Couldn't load %s\n", name);
- if ( i == 0 && Q_strcmp( movevars.skyName, "desert" ) != 0 )
- {
- Q_strcpy( movevars.skyName, "desert" );
- goto retry;
- }
- continue;
- }
- if ( gl_dither.value )
- {
- for ( j = 0; j < 256 * 256 * 4; j++ )
- {
- buffer[j] |= (buffer[j] >> 6);
- buffer[j] = texgammatable[buffer[j]];
- }
- }
- if ( !gSkyTexNumber )
- gSkyTexNumber = GL_GenTexture();
- GL_Bind (gSkyTexNumber);
- VideoMode_GetCurrentVideoMode( &w, &h, &bpp );
- qglTexImage2D (GL_TEXTURE_2D, 0, bpp == 32 ? GL_RGBA8 : GL_RGB5_A1, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
- }
- qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- if ( !printed )
- {
- Con_DPrintf( "SKY: " );
- printed = true;
- }
- if ( loadedBMP )
- {
- Con_DPrintf( "%s%s - paletted, ", movevars.skyName, suf );
- }
- else
- {
- Con_DPrintf( "%s%s, ", movevars.skyName, suf );
- }
- }
- if ( printed )
- {
- Con_DPrintf( "done\n" );
- }
- Mem_Free( buffer );
- gLoadSky = false;
- }
复制代码

|
|