internal static MyTextureArray FromStringArray(string[] mergeList, MyTextureEnum type, string debugName) { if (mergeList == null) { return(null); } TexId[] ids = new TexId[mergeList.Length]; for (int i = 0; i < ids.Length; i++) { ids[i] = MyTextures.GetTexture(mergeList[i], type, true); } return(new MyTextureArray(ids, debugName)); }
internal static MyTextureArray FromStringArray(string[] mergeList, MyTextureEnum type, string debugName) { if (mergeList == null) { return null; } TexId[] ids = new TexId[mergeList.Length]; for (int i = 0; i < ids.Length; i++) { ids[i] = MyTextures.GetTexture(mergeList[i], type, true); } return new MyTextureArray(ids, debugName); }
static TexId RegisterTexture(string name, string contentPath, MyTextureEnum type, Resource resource, Vector2 size) { var nameKey = MyStringId.GetOrCompute(name); if (!NameIndex.ContainsKey(nameKey)) { var texId = NameIndex[nameKey] = new TexId { Index = Textures.Allocate() }; Textures.Data[texId.Index] = new MyTextureInfo { Name = name, ContentPath = contentPath, Type = type, Resource = resource, Size = size }; resource.DebugName = name; Views[texId.Index] = new ShaderResourceView(MyRender11.Device, resource); Views[texId.Index].DebugName = name; } else // reregistered after device reset { var id = NameIndex[nameKey]; if(Textures.Data[id.Index].Resource == null) { Textures.Data[id.Index].Resource = resource; resource.DebugName = name; Views[id.Index] = new ShaderResourceView(MyRender11.Device, resource); Views[id.Index].DebugName = name; } } return NameIndex[nameKey]; }
internal static TexId GetTexture(MyStringId nameId, string contentPath, MyTextureEnum type, bool waitTillLoaded = false) { if(nameId == MyStringId.NullOrEmpty) { switch (type) { case MyTextureEnum.NORMALMAP_GLOSS: return MissingNormalGlossTexId; case MyTextureEnum.EXTENSIONS: return MissingExtensionTexId; case MyTextureEnum.ALPHAMASK: return MissingAlphamaskTexId; case MyTextureEnum.CUBEMAP: return MissingCubeTexId; case MyTextureEnum.COLOR_METAL: return MyRender11.DebugMode ? DebugPinkTexId : ZeroTexId; } return ZeroTexId; } var nameKey = nameId; if (!NameIndex.ContainsKey(nameKey)) { //Debug.Assert(type != MyTextureEnum.SYSTEM); var texId = NameIndex[nameKey] = new TexId{ Index = Textures.Allocate() }; InitState(texId, MyTextureState.WAITING); Textures.Data[texId.Index] = new MyTextureInfo { Name = nameId.ToString(), ContentPath = contentPath, Type = type, OwnsData = true }; MyArrayHelpers.Reserve(ref Views, texId.Index + 1); Views[texId.Index] = null; if (waitTillLoaded) { LoadTexture(texId); MoveState(texId, MyTextureState.WAITING, MyTextureState.LOADED); } } return NameIndex[nameKey]; }
internal static TexId GetTexture(string path, MyTextureEnum type, bool waitTillLoaded = false) { var nameKey = MyStringId.GetOrCompute(path); return GetTexture(nameKey, null, type, waitTillLoaded); }
internal static TexId GetTexture(string path, MyTextureEnum type, bool waitTillLoaded = false) { var nameKey = X.TEXT(path); return GetTexture(nameKey, null, type, waitTillLoaded); }