@@ -16,10 +16,17 @@ import { VideoTexture } from "../media/VideoTexture";
16
16
import { LayaEnv } from "../../LayaEnv" ;
17
17
import { LayaGL } from "../layagl/LayaGL" ;
18
18
import { DDSTextureInfo } from "../RenderEngine/DDSTextureInfo" ;
19
+ import { CompressedTextureFormat } from '../RenderDriver/DriverDesign/RenderDevice/ITextureContext' ;
19
20
20
21
var internalResources : Record < string , Texture2D > ;
21
22
22
23
export class Texture2DLoader implements IResourceLoader {
24
+
25
+ protected static readonly CompressedTextureFormatIndex = {
26
+ [ CompressedTextureFormat . ASTC ] : 1 ,
27
+ [ CompressedTextureFormat . S3TC ] : 0 ,
28
+ } as Record < CompressedTextureFormat , number > ;
29
+
23
30
constructor ( ) {
24
31
if ( ! internalResources ) {
25
32
internalResources = {
@@ -57,8 +64,13 @@ export class Texture2DLoader implements IResourceLoader {
57
64
let ext = task . ext ;
58
65
let url = task . url ;
59
66
if ( meta ) {
60
- let platform = Browser . platform ;
61
- let fileIndex = meta . platforms ?. [ platform ] || 0 ;
67
+ let flags = LayaGL . textureContext . supportedCompressedTextureFormats || 0 ;
68
+ if ( ! flags ) {
69
+ Loader . warnFailed ( "Compressed texture is not supported." ) ;
70
+ return null ;
71
+ }
72
+ const format = [ CompressedTextureFormat . ASTC , CompressedTextureFormat . S3TC ] . find ( format => flags & format ) ;
73
+ const fileIndex = Texture2DLoader . CompressedTextureFormatIndex [ format ] ;
62
74
let fileInfo = meta . files ?. [ fileIndex ] || { } ;
63
75
if ( fileInfo . file ) {
64
76
url = AssetDb . inst . getSubAssetURL ( url , task . uuid , fileInfo . file , fileInfo . ext ) ;
@@ -293,4 +305,4 @@ const videoFormats = ["mp4", "webm"];
293
305
Loader . registerLoader ( [ "tga" , "tif" , "tiff" , "png" , "jpg" , "jpeg" , "webp" , "rendertexture" , ...videoFormats , ...compressedFormats ] , TextureLoader , Loader . IMAGE , true ) ;
294
306
Loader . registerLoader ( [ ] , Texture2DLoader , Loader . TEXTURE2D , true ) ;
295
307
Loader . registerLoader ( [ "rendertexture" ] , RenderTextureLoader , Loader . TEXTURE2D , true ) ;
296
- Loader . registerLoader ( videoFormats , VideoTextureLoader , Loader . TEXTURE2D ) ;
308
+ Loader . registerLoader ( videoFormats , VideoTextureLoader , Loader . TEXTURE2D ) ;
0 commit comments