The previous function still can't load all the TGA textures. We convert the TGA that can't be displayed into a file format that can be displayed, and then change the texture file name in 3ds.
There are two steps,
1. Convert TGA to BMP (loss of transparency)
2. Modifying texture file names in 3ds
Here we use a platform breaking qb64 to transform.
First, generate all TGA list batch files (bats)
list.txt:@rem generate list.txt @echo off for %%i in (*.TGA) do echo %%i>>list.txt
TGB to bmp (qb64)BHOUSEF.TGA BHOUSEL.TGA BHOUSER.TGA DOWN.TGA DOWNF.TGA DOWNR.TGA farTree.tga farTree_back.tga farTree_back_2.TGA farTree_back_3.TGA farTree_back_4.TGA HOUSE.TGA LHOUSE.TGA middleTree.TGA TOWER1.TGA TOWER2.TGA //MS tree.tga
Generated bmp:OPEN "list.txt" FOR INPUT AS #1'TGA list PRINT "start" DO WHILE NOT EOF(1) LINE INPUT #1, a $'a file PRINT a$ i& = _LOADIMAGE(a$, 32) ' load TGA 32-bit image b$ = UCASE$(a$) 'Lowercase to uppercase k = INSTR(b$, ".TGA") 'Extension location b$ = LEFT$(a$, k - 1) 'Remove extension PRINT b$ SaveImage i&, b$ 'Guarantee become .BMP File (extension in SaveImage China Canada) 'SaveImage 0, "screenshot" 'Save the entire program screen as "screenshot.bmp" LOOP END SUB SaveImage (image AS LONG, filename AS STRING) bytesperpixel& = _PIXELSIZE(image&) IF bytesperpixel& = 0 THEN PRINT "Text modes unsupported!": END IF bytesperpixel& = 1 THEN bpp& = 8 ELSE bpp& = 24 x& = _WIDTH(image&) y& = _HEIGHT(image&) b$ = "BM????QB64????" + MKL$(40) + MKL$(x&) + MKL$(y&) + MKI$(1) + MKI$(bpp&) + MKL$(0) + "????" + STRING$(16, 0) 'Part BMP Header information (????Later) IF bytesperpixel& = 1 THEN FOR c& = 0 TO 255 ' read BGR color settings from JPG image + 1 byte spacer(CHR$(0)) cv& = _PALETTECOLOR(c&, image&) ' color attribute to read. b$ = b$ + CHR$(_BLUE32(cv&)) + CHR$(_GREEN32(cv&)) + CHR$(_RED32(cv&)) + CHR$(0) 'spacer byte NEXT END IF MID$(b$, 11, 4) = MKL$(LEN(b$)) ' Image pixel data offset( BMP Head) lastsource& = _SOURCE _SOURCE image& IF ((x& * 3) MOD 4) THEN padder$ = STRING$(4 - ((x& * 3) MOD 4), 0) FOR py& = y& - 1 TO 0 STEP -1 ' read JPG image pixel color data r$ = "" FOR px& = 0 TO x& - 1 c& = POINT(px&, py&) 'POINT 32 bit values are large LONG values IF bytesperpixel& = 1 THEN r$ = r$ + CHR$(c&) ELSE r$ = r$ + LEFT$(MKL$(c&), 3) NEXT px& d$ = d$ + r$ + padder$ NEXT py& _SOURCE lastsource& MID$(b$, 35, 4) = MKL$(LEN(d$)) ' Image size( BMP Head) b$ = b$ + d$ ' Total file bytes used to create files MID$(b$, 3, 4) = MKL$(LEN(b$)) ' Full file size( BMP Head) IF LCASE$(RIGHT$(filename$, 4)) <> ".bmp" THEN ext$ = ".bmp" f& = FREEFILE OPEN filename$ + ext$ FOR OUTPUT AS #f&: CLOSE #F & 'delete existing file OPEN filename$ + ext$ FOR BINARY AS #f& PUT #f&, , b$ CLOSE #f& END SUB
The first step is done.