Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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];
        }
Exemplo n.º 4
0
        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];
        }
Exemplo n.º 5
0
 internal static TexId GetTexture(string path, MyTextureEnum type, bool waitTillLoaded = false)
 {
     var nameKey = MyStringId.GetOrCompute(path);
     return GetTexture(nameKey, null, type, waitTillLoaded);
 }
Exemplo n.º 6
0
 internal static TexId GetTexture(string path, MyTextureEnum type, bool waitTillLoaded = false)
 {
     var nameKey = X.TEXT(path);
     return GetTexture(nameKey, null, type, waitTillLoaded);
 }