protected void Initialize(TextureManager manager, D3d.Format format, int width, int height, int depth, D3d.BaseTexture d3dBase) { textureManager = manager; textureFormat = format; textureWidth = width; textureHeight = height; textureDepth = depth; textureBase = d3dBase; }
public D3DHardwarePixelBuffer(BufferUsage usage) : base(0, 0, 0, Axiom.Media.PixelFormat.Unknown, usage, false, false) { device = null; surface = null; volume = null; tempSurface = null; tempVolume = null; doMipmapGen = false; HWMipmaps = false; mipTex = null; sliceTRT = new List <RenderTexture>(); }
public static GraphicsStream SaveToStream(ImageFileFormat destFormat, BaseTexture srcTexture) { throw new NotImplementedException(); }
public static void Save(string destFile, ImageFileFormat destFormat, BaseTexture srcTexture, out PaletteEntry[] sourcePalette) { throw new NotImplementedException(); }
public static void Save(string destFile, ImageFileFormat destFormat, BaseTexture srcTexture) { throw new NotImplementedException(); }
public void SetValue(EffectHandle parameter, BaseTexture texture) { throw new NotImplementedException(); }
protected void Initialize(TextureManager manager, D3d.Format format, int width, int height, int depth,D3d.BaseTexture d3dBase ) { textureManager = manager; textureFormat = format; textureWidth = width; textureHeight = height; textureDepth = depth; textureBase = d3dBase; }
///<summary> /// Function to set mipmap generation ///</summary> public void SetMipmapping(bool doMipmapGen, bool HWMipmaps, D3D.BaseTexture mipTex) { this.doMipmapGen = doMipmapGen; this.HWMipmaps = HWMipmaps; this.mipTex = mipTex; }
protected override void FreeInternalResourcesImpl() { if (texture != null) { texture.Dispose(); texture = null; } if (normTexture != null) { normTexture.Dispose(); normTexture = null; } if (cubeTexture != null) { cubeTexture.Dispose(); cubeTexture = null; } if (volumeTexture != null) { volumeTexture.Dispose(); volumeTexture = null; } foreach (IDisposable buf in managedObjects) buf.Dispose(); managedObjects.Clear(); }
/// <summary> /// /// </summary> //private void CreateDepthStencil() { // // Get the format of the depth stencil surface of our main render target. // D3D.Surface surface = device.DepthStencilSurface; // D3D.SurfaceDescription desc = surface.Description; // // Create a depth buffer for our render target, it must be of // // the same format as other targets !!! // depthBuffer = device.CreateDepthStencilSurface( // srcWidth, // srcHeight, // // TODO: Verify this goes through, this is ridiculous // (D3D.DepthFormat)desc.Format, // desc.MultiSampleType, // desc.MultiSampleQuality, // false); //} private void CreateNormalTexture() { // we must have those defined here Debug.Assert(srcWidth > 0 && srcHeight > 0); // determine which D3D9 pixel format we'll use D3D.Format d3dPixelFormat = ChooseD3DFormat(); // at this point, Ogre checks to see if this texture format works, // but we go on and figure out the rest of our info first. // set the appropriate usage based on the usage of this texture D3D.Usage d3dUsage = ((usage & TextureUsage.RenderTarget) == TextureUsage.RenderTarget) ? D3D.Usage.RenderTarget : D3D.Usage.None; // how many mips to use? int numMips = numRequestedMipmaps + 1; // Check dynamic textures if ((usage & TextureUsage.Dynamic) != 0) { if (CanUseDynamicTextures(d3dUsage, ResourceType.Textures, d3dPixelFormat)) { d3dUsage |= D3D.Usage.Dynamic; dynamicTextures = true; } else { dynamicTextures = false; } } // check if mip maps are supported on hardware mipmapsHardwareGenerated = false; if (devCaps.TextureCaps.SupportsMipMap) { if (((usage & TextureUsage.AutoMipMap) == TextureUsage.AutoMipMap) && numRequestedMipmaps > 0) { // use auto.gen. if available mipmapsHardwareGenerated = this.CanAutoGenMipMaps(d3dUsage, ResourceType.Textures, d3dPixelFormat); if (mipmapsHardwareGenerated) { d3dUsage |= D3D.Usage.AutoGenerateMipMap; numMips = 0; } } } else { // no mip map support for this kind of texture numMipmaps = 0; numMips = 1; } // check texture requirements D3D.TextureRequirements texRequire = new D3D.TextureRequirements(); texRequire.Width = srcWidth; texRequire.Height = srcHeight; texRequire.NumberMipLevels = numMips; texRequire.Format = d3dPixelFormat; // NOTE: Although texRequire is an out parameter, it actually does // use the data passed in with that object. TextureLoader.CheckTextureRequirements(device, d3dUsage, Pool.Default, out texRequire); numMips = texRequire.NumberMipLevels; d3dPixelFormat = texRequire.Format; Debug.Assert(normTexture == null); Debug.Assert(texture == null); log.InfoFormat("Created normal texture {0}", this.Name); // create the texture normTexture = new D3D.Texture( device, srcWidth, srcHeight, numMips, d3dUsage, d3dPixelFormat, d3dPool); // store base reference to the texture texture = normTexture; // set the final texture attributes D3D.SurfaceDescription desc = normTexture.GetLevelDescription(0); SetFinalAttributes(desc.Width, desc.Height, 1, D3DHelper.ConvertEnum(desc.Format)); if (mipmapsHardwareGenerated) texture.AutoGenerateFilterType = GetBestFilterMethod(); }
/// <summary> /// /// </summary> private void LoadVolumeTexture() { Debug.Assert(this.TextureType == TextureType.ThreeD); using (AutoTimer auto = new AutoTimer(textureLoadMeter)) { // DDS load? if (name.EndsWith(".dds")) { Stream stream = TextureManager.Instance.FindResourceData(name); // use D3DX to load the image directly from the stream int numMips = numRequestedMipmaps + 1; // check if mip map volume textures are supported if (!(devCaps.TextureCaps.SupportsMipVolumeMap)) { // no mip map support for this kind of textures :( numMipmaps = 0; numMips = 1; } // Determine D3D pool to use D3D.Pool pool; if ((usage & TextureUsage.Dynamic) != 0) pool = D3D.Pool.Default; else pool = D3D.Pool.Managed; Debug.Assert(volumeTexture == null); Debug.Assert(texture == null); // load the cube texture from the image data stream directly volumeTexture = TextureLoader.FromVolumeStream(device, stream, (int)stream.Length, 0, 0, 0, numMips, D3D.Usage.None, D3D.Format.Unknown, pool, Filter.Triangle | Filter.Dither, Filter.Box, 0); // store off a base reference texture = volumeTexture; // set the image data attributes VolumeDescription desc = volumeTexture.GetLevelDescription(0); d3dPool = desc.Pool; // set src and dest attributes to the same, we can't know SetSrcAttributes(desc.Width, desc.Height, desc.Depth, D3DHelper.ConvertEnum(desc.Format)); SetFinalAttributes(desc.Width, desc.Height, desc.Depth, D3DHelper.ConvertEnum(desc.Format)); isLoaded = true; internalResourcesCreated = true; stream.Dispose(); } else { // find & load resource data into stream Stream stream = TextureManager.Instance.FindResourceData(name); int pos = name.LastIndexOf('.'); string ext = name.Substring(pos + 1); Image img = Image.FromStream(stream, ext); LoadImage(img); stream.Dispose(); } } // using }
public void SetTexture(int stage, BaseTexture texture) { throw new NotImplementedException(); }
public void UpdateTexture(BaseTexture sourceTexture, BaseTexture destinationTexture) { throw new NotImplementedException(); }
public static GraphicsStream SaveToStream(ImageFileFormat destFormat, BaseTexture srcTexture, out PaletteEntry[] sourcePalette) { throw new NotImplementedException(); }
///<summary> /// Function to set mipmap generation ///</summary> public void SetMipmapping(bool doMipmapGen, bool HWMipmaps, D3D.BaseTexture mipTex) { this.doMipmapGen = doMipmapGen; this.HWMipmaps = HWMipmaps; this.mipTex = mipTex; }
public static void FilterTexture(BaseTexture baseTexture, out PaletteEntry[] palette, int srcLevel, Filter filter) { throw new NotImplementedException(); }
public D3DHardwarePixelBuffer(BufferUsage usage) : base(0, 0, 0, Axiom.Media.PixelFormat.Unknown, usage, false, false) { device = null; surface = null; volume = null; tempSurface = null; tempVolume = null; doMipmapGen = false; HWMipmaps = false; mipTex = null; sliceTRT = new List<RenderTexture>(); }