Пример #1
0
        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;
                }
            }
        }
Пример #2
0
 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;
     }
 }
Пример #3
0
        /// <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;
        }
Пример #4
0
        /// <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;
        }
Пример #5
0
        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;
            }
        }
Пример #6
0
        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;
            }
        }
Пример #7
0
        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);
        }
Пример #8
0
        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;
            }
        }
Пример #9
0
        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();
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
 /// <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);
        }
Пример #17
0
        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;
        }
Пример #18
0
        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;
            }
        }
Пример #19
0
        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);
        }