private void loadTextureFromDds(Texture target) { GL.Enable(EnableCap.Texture2D); uint ImageTextureHandle; TextureTarget ImageTextureTarget; DDSLoader.LoadFromDisk(target.pointer, out ImageTextureHandle, out ImageTextureTarget); // load succeeded, Texture can be used. GL.BindTexture(ImageTextureTarget, ImageTextureHandle); GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); int[] MipMapCount = new int[1]; GL.GetTexParameter(ImageTextureTarget, GetTextureParameter.TextureMaxLevel, out MipMapCount[0]); if (MipMapCount[0] == 0) // if no MipMaps are present, use linear Filter { GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); } else // MipMaps are present, use trilinear Filter { GL.TexParameter(ImageTextureTarget, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.LinearMipmapLinear); } target.texture = (int)ImageTextureHandle; target.loaded = true; textures[target.identifier] = target; }
private void BuildRenderItems() { RGrid = new RenderItem() { // Reset World Worlds = new Matrix[1], Light = new LightBuffer() { AmbientColor = new Vector4(0.15f, 0.15f, 0.15f, 1.0f), Diffuse = new Vector4(1.0f, 1.0f, 1.0f, 1.0f), LightDirection = new Vector3(0, -1, 0), SpecularColor = new Vector4(1, 1, 1, 1), SpecularPower = 50, }, VertexBuffer = new Buffer(Grid.Vertices.SizeInBytes, Grid.Vertices.Size, Device, ResourceInfo.VertexBuffer), IndexBuffer = new Buffer(Grid.Indices.SizeInBytes, Grid.Indices.Size, Device, ResourceInfo.IndexBuffer), ConstantBuffer = new Buffer[] { new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer), new Buffer(Utilities.SizeOf <LightBuffer>(), Utilities.SizeOf <LightBuffer>(), Device, ResourceInfo.ConstantBuffer), new Buffer(Utilities.SizeOf <CameraBuffer>(), Utilities.SizeOf <CameraBuffer>(), Device, ResourceInfo.ConstantBuffer) }, Texture = DDSLoader.LoadTextureFromFile(Device.NativeDevice, Device.NativeDeviceContext, "Text/Test.dds"), }; RMesh = new RenderItem() { // Reset World Worlds = new Matrix[20], Light = new LightBuffer() { AmbientColor = new Vector4(0.15f, 0.15f, 0.15f, 1.0f), Diffuse = new Vector4(0.6f, 0.6f, 0.6f, 1.0f), LightDirection = new Vector3(0, 0, 1.05f), SpecularColor = new Vector4(1, 1, 1, 1), SpecularPower = 20, }, VertexBuffer = new Buffer(Mesh.Vertices.SizeInBytes, Mesh.Vertices.Size, Device, ResourceInfo.VertexBuffer), IndexBuffer = new Buffer(Mesh.Indices.SizeInBytes, Mesh.Indices.Size, Device, ResourceInfo.IndexBuffer), ConstantBuffer = new Buffer[] { new Buffer(Utilities.SizeOf <Transform>(), Utilities.SizeOf <Transform>(), Device, ResourceInfo.ConstantBuffer), new Buffer(Utilities.SizeOf <LightBuffer>(), Utilities.SizeOf <LightBuffer>(), Device, ResourceInfo.ConstantBuffer), new Buffer(Utilities.SizeOf <CameraBuffer>(), Utilities.SizeOf <CameraBuffer>(), Device, ResourceInfo.ConstantBuffer) }, Texture = Texture.LoadFromFile(Device, "Text/CesiumMan.jpg") }; }
private Texture2D LoadMapOverview(RadarLevel radarLevel = RadarLevel.main) { Texture2D loadedOverview = null; if (!string.IsNullOrEmpty(mapName)) { string overviewPath = GetOverviewTexturePath(mapName, radarLevel); if (File.Exists(overviewPath)) { loadedOverview = DDSLoader.LoadDDSFile(File.ReadAllBytes(overviewPath)); } } return(loadedOverview); }
/// <summary> /// /// </summary> /// <param name="control"></param> public override void Load(Control control) { base.Load(control); this.camera = new PerspectiveCamera(50, control.Width / (float)control.Height, 1, 2000); this.camera.Position.Z = 1000; this.scene = new Scene(); this.geometry = new BoxGeometry(200, 200, 200); /* * This is how compressed textures are supposed to be used: * * DXT1 - RGB - opaque textures * DXT3 - RGBA - transparent textures with sharp alpha transitions * DXT5 - RGBA - transparent textures with full alpha range */ var loader = new DDSLoader(); loader.Loaded += (o, args) => { }; var map1 = loader.Load("examples/textures/compressed/disturb_dxt1_nomip.dds"); map1.MinFilter = map1.MagFilter = Three.LinearFilter; map1.Anisotropy = 4; var map2 = loader.Load("examples/textures/compressed/disturb_dxt1_mip.dds"); map2.Anisotropy = 4; var map3 = loader.Load("examples/textures/compressed/hepatica_dxt3_mip.dds"); map3.Anisotropy = 4; var map4 = loader.Load("examples/textures/compressed/explosion_dxt5_mip.dds"); map4.Anisotropy = 4; var map5 = loader.Load("examples/textures/compressed/disturb_argb_nomip.dds"); map5.MinFilter = map5.MagFilter = Three.LinearFilter; map5.Anisotropy = 4; var map6 = loader.Load("examples/textures/compressed/disturb_argb_mip.dds"); map6.Anisotropy = 4; var cubemap1 = loader.Load("examples/textures/compressed/Mountains.dds", texture => { texture.MagFilter = Three.LinearFilter; texture.MinFilter = Three.LinearFilter; texture.Mapping = new Three.CubeReflectionMapping(); // material1.needsUpdate = true; }); var cubemap2 = loader.Load("examples/textures/compressed/Mountains_argb_mip.dds", texture => { texture.MagFilter = Three.LinearFilter; texture.MinFilter = Three.LinearFilter; texture.Mapping = new Three.CubeReflectionMapping(); // material5.needsUpdate = true; }); var cubemap3 = loader.Load("examples/textures/compressed/Mountains_argb_nomip.dds", texture => { texture.MagFilter = Three.LinearFilter; texture.MinFilter = Three.LinearFilter; texture.Mapping = new Three.CubeReflectionMapping(); // material6.needsUpdate = true; }); var material1 = new MeshBasicMaterial() { Map = map1, EnvMap = cubemap1 }; var material2 = new MeshBasicMaterial() { Map = map2 }; var material3 = new MeshBasicMaterial() { Map = map3, AlphaTest = 0.5f, Side = Three.DoubleSide }; var material4 = new MeshBasicMaterial() { Map = map4, Side = Three.DoubleSide, Blending = Three.AdditiveBlending, DepthTest = false, Transparent = true }; var material5 = new MeshBasicMaterial() { EnvMap = cubemap2 }; var material6 = new MeshBasicMaterial() { EnvMap = cubemap3 }; var material7 = new MeshBasicMaterial() { Map = map5 }; var material8 = new MeshBasicMaterial() { Map = map6 }; // After loading setting material1.NeedsUpdate = true; material5.NeedsUpdate = true; material6.NeedsUpdate = true; // Testing purposes var texture1 = ImageUtils.LoadTexture(@"examples/textures/crate.gif"); texture1.Anisotropy = this.renderer.MaxAnisotropy; var material = new MeshBasicMaterial { Map = texture1 }; // TODO NOTE EnvMap is not working properly // . . . . // X . . . var mesh = new Mesh(new TorusGeometry(100, 50, 32, 16), material1); // material1 mesh.Position.X = -600; mesh.Position.Y = -200; this.scene.Add(mesh); this.meshes.Add(mesh); // . . . . // . X . . mesh = new Mesh(this.geometry, material2); // material2 mesh.Position.X = -200; mesh.Position.Y = -200; this.scene.Add(mesh); this.meshes.Add(mesh); // . X . . // . . . . mesh = new Mesh(this.geometry, material3); // material3 mesh.Position.X = -200; mesh.Position.Y = 200; this.scene.Add(mesh); this.meshes.Add(mesh); // X . . . // . . . . mesh = new Mesh(this.geometry, material4); // material4 mesh.Position.X = -600; mesh.Position.Y = 200; this.scene.Add(mesh); this.meshes.Add(mesh); // . . X . // . . . . mesh = new Mesh(new BoxGeometry(200, 200, 200), material5); // material5 mesh.Position.X = 200; mesh.Position.Y = 200; this.scene.Add(mesh); this.meshes.Add(mesh); // . . . . // . . X . mesh = new Mesh(new BoxGeometry(200, 200, 200), material6); // material6 mesh.Position.X = 200; mesh.Position.Y = -200; this.scene.Add(mesh); this.meshes.Add(mesh); // . . . . // . . . X mesh = new Mesh(this.geometry, material7); // material7 mesh.Position.X = 600; mesh.Position.Y = -200; this.scene.Add(mesh); this.meshes.Add(mesh); // . . . X // . . . . mesh = new Mesh(this.geometry, material8); // material8 mesh.Position.X = 600; mesh.Position.Y = 200; this.scene.Add(mesh); this.meshes.Add(mesh); }