Example #1
0
 public static Texture FromFile(GraphicsDevice graphicsDevice, string filename, TextureCreationParameters creationParameters) {
     TextureInformation texinfo = GetTextureInformation(filename);
     if (creationParameters.Width == 0) creationParameters.Width = texinfo.Width;
     if (creationParameters.Height == 0) creationParameters.Height = texinfo.Height;
     if (creationParameters.Depth == 0) creationParameters.Depth = texinfo.Depth;
     if (texinfo.ResourceType == ResourceType.Texture2D)
     {
         int ImgID;
         Il.ilGenImages(1, out ImgID);
         Il.ilBindImage(ImgID);
         Il.ilLoadImage(filename);
         int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
         int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
         int depth = Il.ilGetInteger(Il.IL_IMAGE_DEPTH);
         int size = Il.ilGetInteger(Il.IL_IMAGE_SIZE_OF_DATA);
         Texture2D tex = new Texture2D(graphicsDevice, creationParameters.Width, creationParameters.Height, creationParameters.Depth, TextureUsage.None, SurfaceFormat.Rgb32);
         
         Gl.glBindTexture(Gl.GL_TEXTURE_2D, tex.textureId);
         Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Il.ilGetInteger(Il.IL_IMAGE_BYTES_PER_PIXEL), creationParameters.Width, creationParameters.Height, 0, Gl.GL_RGBA, Gl.GL_UNSIGNED_BYTE, Il.ilGetData());
         
         Il.ilBindImage(0);
         return tex;
     }
     else if (texinfo.ResourceType == ResourceType.Texture3D) { throw new NotImplementedException(); }
     else if (texinfo.ResourceType == ResourceType.Texture3DVolume) { throw new NotImplementedException(); } //FIXME: Should we handle this here too?
     else if (texinfo.ResourceType == ResourceType.TextureCube) { throw new NotImplementedException(); }
     else return null;
 }
 static TextureCreationParameters()
 {
     TextureCreationParameters.m_Default = new TextureCreationParameters(
         0, 0, 0, 0,
         SurfaceFormat.Unknown,
         ResourceUsage.None,
         ResourceManagementMode.Automatic,
         Color.TransparentBlack,
         FilterOptions.Dither | FilterOptions.Triangle,
         FilterOptions.Box);
 }
Example #3
0
        /// <summary>
        /// Gets a Microsoft.Xna.Framework.Graphics.Texture2D of the texture corresponding to the fluid type.
        /// </summary>
        /// <param name="fluidType">The fluid type to get the texture of.</param>
        /// <returns>See summary.</returns>
        public static Texture2D GetTexture(this FluidType fluidType)
        {
            if (FluidTypeExtensions.textureCache.ContainsKey(fluidType))
            {
                return FluidTypeExtensions.textureCache[fluidType];
            }
            else
            {
                System.Drawing.Bitmap image = fluidType.GetImage();

                TextureCreationParameters parameters = new TextureCreationParameters();
                parameters.Filter = FilterOptions.Triangle;
                parameters.Format = SurfaceFormat.Color;
                parameters.MipFilter = FilterOptions.Triangle;
                parameters.MipLevels = TextureManipulation.GetMaximumMipLevels(image);

                Texture2D texture = TextureManipulation.Texture2DFromBitmap(image, EngineManager.Engine.GraphicsDevice, parameters);

                texture.LevelOfDetail = 1;
                texture.GenerateMipMaps(TextureFilter.Linear);

                FluidTypeExtensions.textureCache.Add(fluidType, texture);
                return texture;
            }
        }
Example #4
0
 public static Texture FromFile(GraphicsDevice graphicsDevice, Stream textureStream, int numberBytes, TextureCreationParameters creationParameters) { throw new NotImplementedException(); }