コード例 #1
0
        /// <summary>
        /// Loads the DDS texture.
        /// </summary>
        /// <param name="fileName">The name.</param>
        /// <param name="quality"></param>
        /// <returns></returns>
        protected override BaseTexture LoadDDSTexture(string fileName, TextureQuality quality)
        {
            var device = MyMinerGame.Static.GraphicsDevice;

            if (device == null || device.IsDisposed)
            {
                return(null);
            }

            //cannot use profiler because of multithreading
            //int loadDDSTextureBlock = -1;
            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyTexture2D.LoadDDSTexture", ref loadDDSTextureBlock);

            MyMwcLog.WriteLine(string.Format("Loading DDS texture {0} ...", fileName), SysUtils.LoggingOptions.LOADING_TEXTURES);

            Texture loadedTexture = null;

            if (this.flags.HasFlag(TextureFlags.IgnoreQuality))
            {
                quality = TextureQuality.Full;
            }

            MyDDSFile.DDSFromFile(fileName, device, true, (int)quality, out loadedTexture);
            loadedTexture.Tag = this;

            if (!MyUtils.IsPowerOfTwo(loadedTexture.GetLevelDescription(0).Width) || !MyUtils.IsPowerOfTwo(loadedTexture.GetLevelDescription(0).Height))
            {
                throw new FormatException("Size must be power of two!");
            }

            //cannot use profiler because of multithreading
            //MinerWars.AppCode.Game.Render.MyRender.GetRenderProfiler().EndProfilingBlock(loadDDSTextureBlock);
            return(loadedTexture);
        }
コード例 #2
0
        /// <summary>
        /// Loads the DDS texture.
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="quality"></param>
        /// <returns></returns>
        protected override SharpDX.Direct3D9.BaseTexture LoadDDSTexture(string name, TextureQuality quality)
        {
            try
            {
                var device = MyMinerGame.Static.GraphicsDevice;
                if (device == null || device.IsDisposed)
                {
                    return(null);
                }

                if (this.flags.HasFlag(TextureFlags.IgnoreQuality))
                {
                    quality = TextureQuality.Full;
                }

                CubeTexture loadedTexture;
                MyDDSFile.DDSFromFile(name, device, true, (int)quality, out loadedTexture);
                loadedTexture.Tag = this;

                return(loadedTexture);
            }
            catch (FileNotFoundException)
            {
            }
            catch (Exception ddsException)
            {
                Debug.WriteLine(string.Format("W:Texture Cube (DDS) {0}", ddsException.Message));
            }

            return(null);
        }
コード例 #3
0
        private void CreateDDSFiles(int sizeInPixels, DirectoryInfo directoryInfo)
        {
            int index = 1;

            foreach (MyMwcObjectBuilder_Prefab_TypesEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues)
            {
                Debug.WriteLine(string.Format("Exporting Prefab Preview {0}/{1} ..", index++,
                                              MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues.Length));

                MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue);
                string lod0Name = GetPreviewFileName(config, enumValue);

                var    result   = RenderPreview(enumValue, config, sizeInPixels, sizeInPixels);
                string fileName = Path.Combine(directoryInfo.FullName, string.Format("{0}.dds", lod0Name));
                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }

                MyDDSFile.DDSToFile(fileName, true, result, false);
            }
        }