private void 纹理TToolStripMenuItem_Click(object sender, EventArgs e) { TexturedNode node = this.targetNode; if (node == null) { MessageBox.Show("Please open a model first!"); return; } if (this.openTextureDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { var filename = this.openTextureDlg.FileName; var bitmap = new Bitmap(filename); bitmap.RotateFlip(RotateFlipType.Rotate180FlipX); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bitmap.Dispose(); node.Texture = texture; } catch (Exception ex) { MessageBox.Show(ex.ToString()); return; } } }
private void GetTextures(out Texture texture0, out Texture texture1) { { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"Crate.bmp")); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); texture0 = texture; } { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"nuclear.png")); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); texture1 = texture; } }
/// <summary> /// Load a user defined heightmap /// </summary> /// <param name="image"></param> public void UpdateTexture(Bitmap image) { if (this.currentTexture != null) { this.currentTexture.Dispose(); } var storage = new TexImageBitmap(image); var texture = new Texture(storage, //new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR) ); texture.TextureUnitIndex = 0; texture.Initialize(); RenderMethod method = this.RenderUnit.Methods[(int)RenderMode.Textured]; ShaderProgram program = method.Program; program.SetUniform("textureMap", texture); this.currentTexture = texture; }
/// <summary> /// Load a user defined heightmap /// </summary> /// <param name="image"></param> public void UpdateHeightmap(Bitmap image) { if (this.heightTexture != null) { this.heightTexture.Dispose(); } var storage = new TexImageBitmap(image, GL.GL_RED); var heightMapTexture = new Texture(storage, //new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP), new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_NEAREST), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_NEAREST) ); heightMapTexture.TextureUnitIndex = 0; heightMapTexture.Initialize(); RenderMethod method = this.RenderUnit.Methods[0]; ShaderProgram program = method.Program; program.SetUniform("heightMapTexture", heightMapTexture); this.heightTexture = heightMapTexture; }
protected override void DoInitialize() { base.DoInitialize(); { string folder = System.Windows.Forms.Application.StartupPath; var bitmap = new Bitmap(System.IO.Path.Combine(folder, @"heightmap.png")); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); texture.TextureUnitIndex = 0; bitmap.Dispose(); this.displacementMap = texture; } { string folder = System.Windows.Forms.Application.StartupPath; var bitmap = new Bitmap(System.IO.Path.Combine(folder, @"diffuse.png")); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); texture.TextureUnitIndex = 1; bitmap.Dispose(); this.colorMap = texture; } { var light = new DirectionalLight(); light.Color = new vec3(1, 1, 1); light.AmbientIntensity = 1.0f; light.DiffuseIntensity = 0.01f; light.direction = new vec3(1, 1, 0); this.directionalLight = light; } { RenderMethod method = this.RenderUnit.Methods[0]; foreach (var vao in method.VertexArrayObjects) { IDrawCommand cmd = vao.DrawCommand; cmd.Mode = DrawMode.Patches; } var polygonModeState = new PolygonModeState(CSharpGL.PolygonMode.Fill); method.StateList.Add(polygonModeState); this.PolygonMode = polygonModeState; } }
protected override void DoInitialize() { base.DoInitialize(); { var bitmap = new Bitmap(@"heightmap.png"); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); texture.TextureUnitIndex = 0; bitmap.Dispose(); this.displacementMap = texture; } { var bitmap = new Bitmap(@"diffuse.png"); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); texture.TextureUnitIndex = 1; bitmap.Dispose(); this.colorMap = texture; } { var light = new DirectionalLight(); light.Color = new vec3(1, 1, 1); light.AmbientIntensity = 1.0f; light.DiffuseIntensity = 0.01f; light.direction = new vec3(1, 1, 0); this.directionalLight = light; } { RenderMethod method = this.RenderUnit.Methods[0]; VertexArrayObject vao = method.VertexArrayObject; IndexBuffer indexBuffer = vao.IndexBuffer; indexBuffer.Mode = DrawMode.Patches; var polygonModeState = new PolygonModeState(CSharpGL.PolygonMode.Fill); method.StateList.Add(polygonModeState); this.PolygonMode = polygonModeState; } }
private static Texture LoadTexture(string glyphsFilename) { var bmp = new Bitmap(glyphsFilename); var storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); return(texture); }
private void GetTextures(out Texture texture0, out Texture texture1, out Texture texture2) { { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"base.png")); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); texture0 = texture; } { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, "Rainbow.png")); TexStorageBase storage = new TexImage1D(GL.GL_RGBA, bmp.Width, GL.GL_BGRA, GL.GL_UNSIGNED_BYTE, new ImageDataProvider(bmp)); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); texture1 = texture; } { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"fish.png")); bmp.RotateFlip(RotateFlipType.Rotate180FlipX); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); texture2 = texture; } }
public TextureSource(string filename) { var bmp = new System.Drawing.Bitmap(filename); bmp.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipX); var storage = new TexImageBitmap(bmp); texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); }
private Texture GetTexture() { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"texture.png")); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); return(texture); }
private Texture GetTexture(string filename, uint unitIndex) { var bmp = new Bitmap(filename); var storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT), // NOTE: when I use 'GL_LINEAR_MIPMAP_LINEAR' in below line, it went wrong... new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.TextureUnitIndex = unitIndex; texture.Initialize(); bmp.Dispose(); return(texture); }
private Texture GetTexture(string filename, uint unitIndex) { var bmp = new Bitmap(filename); var storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new MipmapBuilder(), new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_REPEAT), // NOTE: use 'GL_LINEAR_MIPMAP_LINEAR' along with 'new MipmapBuilder(),'! new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR_MIPMAP_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.TextureUnitIndex = unitIndex; texture.Initialize(); bmp.Dispose(); return(texture); }
private Texture LoadTexture(string filename) { var bitmap = new Bitmap(filename); var storage = new TexImageBitmap(bitmap, GL.GL_RGB); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); var file = new FileInfo(filename); texture.GetImage(bitmap.Width, bitmap.Height).Save( string.Format("{0}.GetImage.png", file.Name)); return(texture); }
public void UpdateTexture(Bitmap bitmap) { bitmap.RotateFlip(RotateFlipType.Rotate180FlipX); TexStorageBase storage = new TexImageBitmap(bitmap); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); RenderMethod method = this.RenderUnit.Methods[0]; ShaderProgram program = method.Program; program.SetUniform("u_texture", texture); }
/// <summary> /// Load textures and attach them to materials' tag property. /// </summary> /// <param name="ezmFile"></param> public static void LoadTextures(this EZMFile ezmFile) { if (ezmFile != null) { string directory = (new FileInfo(ezmFile.Fullname)).DirectoryName; foreach (var material in ezmFile.MeshSystem.Materials) { string filename = Path.Combine(directory, material.MetaData); var bitmap = new Bitmap(filename); bitmap.RotateFlip(RotateFlipType.Rotate180FlipX); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); material.Tag = texture; } } }
private Texture[] InitTextures(AiScene aiScene, string filename) { var textures = new Texture[aiScene.MaterialCount]; // Extract the directory part from the file name string directory = new FileInfo(filename).DirectoryName; // Initialize the materials for (uint i = 0; i < aiScene.MaterialCount; i++) { AiMaterial material = aiScene.Materials[i]; if (material.GetTextureCount(AiTextureType.Diffuse) > 0) { AiTextureSlot slot = material.GetTexture(AiTextureType.Diffuse, 0); string fullname = Path.Combine(directory, slot.FilePath); Bitmap bitmap; try { bitmap = new Bitmap(fullname); } catch (Exception ex) { var name = fullname.Substring(0, fullname.LastIndexOf('.')) + ".png"; bitmap = new Bitmap(name); } //bitmap.RotateFlip(RotateFlipType.Rotate180FlipX); var storage = new TexImageBitmap(bitmap); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_REPEAT), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); textures[i] = texture; } } return(textures); }
private SceneNodeBase GetRootElement() { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"Crate.bmp")); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); texture.TextureUnitIndex = 0; bmp.Dispose(); this.clippedCube = ClippedCubeNode.Create(texture); this.transparentPlane = TransparentPlaneNode.Create(); transparentPlane.Scale = new vec3(1, 1, 1); var group = new GroupNode(clippedCube, transparentPlane); return group; }
protected override void DoInitialize() { base.DoInitialize(); RenderMethod method = this.RenderUnit.Methods[0]; ShaderProgram program = method.Program; { var dirLight = new DirectionalLight(new vec3(1.0f, 0.0f, 0.0f)); dirLight.Diffuse = new vec3(0.8f); dirLight.Specular = new vec3(0.8f); program.SetUniform("light.color", dirLight.Diffuse); program.SetUniform("light.ambient", 0.2f); program.SetUniform("light.diffuse", 0.8f); program.SetUniform("light.direction", dirLight.Direction.normalize()); this.m_dirLight = dirLight; } { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"bricks.jpg")); var storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.TextureUnitIndex = 0; texture.Initialize(); bmp.Dispose(); program.SetUniform("texColor", texture); this.m_pTexture = texture; } { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"normal_map.jpg")); var storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.TextureUnitIndex = 2; texture.Initialize(); bmp.Dispose(); program.SetUniform("texNormal", texture); this.m_pNormalMap = texture; } { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"normal_up.jpg")); var storage = new TexImageBitmap(bmp); var texture = new Texture(storage, new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE), new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR), new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.TextureUnitIndex = 2; texture.Initialize(); bmp.Dispose(); //program.SetUniform("texNormal", texture); this.m_pNotNormalMap = texture; } }
private SceneNodeBase GetTree() { var group = new GroupNode(); { string folder = System.Windows.Forms.Application.StartupPath; var bmp = new Bitmap(System.IO.Path.Combine(folder, @"Crate.bmp")); TexStorageBase storage = new TexImageBitmap(bmp); var texture = new Texture(storage); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); var solidCube = TexturedCubeNode.Create(texture); group.Children.Add(solidCube); } { var blendingGroup = new BlendingGroupNode(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.OneMinusSourceAlpha); group.Children.Add(blendingGroup); var list = new List <BlendingConfig>(); list.Add(new BlendingConfig(Color.Red, new vec3(1, 0, 1), 0.5f)); list.Add(new BlendingConfig(Color.Green, new vec3(0.6f, 0, 0.1f), 0.5f)); list.Add(new BlendingConfig(Color.Blue, new vec3(-0.1f, 0, -0.2f), 0.5f)); list.Add(new BlendingConfig(Color.Purple, new vec3(0.4f, 0, -0.7f), 0.5f)); list.Add(new BlendingConfig(Color.Orange, new vec3(0.8f, 0, 0.1f), 0.5f)); list.Add(new BlendingConfig(Color.Yellow, new vec3(0.8f, 0, 0.1f), 0.5f)); for (int i = 0; i < list.Count; i++) { const float distance = 2.0f; list[i].position = new vec3( distance * (float)Math.Cos((double)i / (double)list.Count * Math.PI * 2), 0, distance * (float)Math.Sin((double)i / (double)list.Count * Math.PI * 2) ); list[i].alpha = 0.3f; } foreach (var item in list) { var bmp = new Bitmap(1, 1); using (var g = Graphics.FromImage(bmp)) { g.Clear(item.color); } var texture = new Texture(new TexImageBitmap(bmp)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapS, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapT, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureWrapR, (int)GL.GL_CLAMP_TO_EDGE)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMinFilter, (int)GL.GL_LINEAR)); texture.BuiltInSampler.Add(new TexParameteri(TexParameter.PropertyName.TextureMagFilter, (int)GL.GL_LINEAR)); texture.Initialize(); bmp.Dispose(); var transparentCube = TexturedCubeNode.Create(texture); transparentCube.WorldPosition = item.position; transparentCube.Alpha = item.alpha; blendingGroup.Children.Add(transparentCube); } } return(group); }