Exemplo n.º 1
0
 public void InitTexture(OpenGL gl)
 {
     _texture = new SharpGL.SceneGraph.Assets.Texture();
     _texture.Create(gl, _image);
     Id = _texture.TextureName;
     gl.BindTexture(OpenGL.GL_TEXTURE_2D, _texture.TextureName);
 }
Exemplo n.º 2
0
 public void InitTexture(OpenGL gl)
 {
     _texture = new SharpGL.SceneGraph.Assets.Texture();
     _texture.Create(gl, _image);
     Id = _texture.TextureName;
     gl.BindTexture(OpenGL.GL_TEXTURE_2D, _texture.TextureName);
 }
Exemplo n.º 3
0
        public Texture(OpenGL gl, string path)
        {
            GLTexture       = new SharpGL.SceneGraph.Assets.Texture();
            using var image = new Bitmap(path);

            Width  = image.Width;
            Height = image.Height;
            GLTexture.Create(gl, image);
        }
Exemplo n.º 4
0
 public void CreateTex(OpenGL context, Bitmap image)
 {
     texture = new SharpGL.SceneGraph.Assets.Texture();
     texture.Create(context, image);
     context.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_S, OpenGL.GL_REPEAT);
     context.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_T, OpenGL.GL_REPEAT);
     context.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_LINEAR);
     context.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_LINEAR);
     context.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_REPLACE);
     texture.Bind(context);
 }
Exemplo n.º 5
0
        public static Texture2D fromBitmap(OpenGL gl, System.Drawing.Bitmap bitmap)
        {
            var _bitmap = bitmap.Clone() as System.Drawing.Bitmap;
            //_bitmap.RotateFlip(System.Drawing.RotateFlipType.RotateNoneFlipY);

            var tex = new SharpGL.SceneGraph.Assets.Texture();

            tex.Create(gl, _bitmap);
            var tex2d = new Texture2D(tex, bitmap.Width, bitmap.Height);

            return(tex2d);
        }
Exemplo n.º 6
0
        public void intTextures(SharpGL.OpenGL gl)
        {
            texture = new SharpGL.SceneGraph.Assets.Texture[9];
            for (int i = 0; i < 9; i++)
            {
                texture[i] = new SharpGL.SceneGraph.Assets.Texture();
            }
            string szPath  = Application.StartupPath;
            string texPath = szPath + "\\data";

            Bitmap bitmap = new Bitmap(texPath + "\\tree.BMP");

            bitmap.MakeTransparent();
            texture[0].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\梯田桃树1.png");
            bitmap.MakeTransparent();
            texture[1].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\u=1685326126,4201227267&fm=26&gp=0.jpg");
            bitmap.MakeTransparent();
            texture[2].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\下载 (1).jpg");//水面
            bitmap.MakeTransparent();
            texture[3].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\u=1685326126,4201227267&fm=26&gp=0.jpg");
            bitmap.MakeTransparent();
            texture[4].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\u=1685326126,4201227267&fm=26&gp=0.jpg");
            bitmap.MakeTransparent();
            texture[5].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\u=1685326126,4201227267&fm=26&gp=0.jpg");
            bitmap.MakeTransparent();
            texture[6].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\u=1685326126,4201227267&fm=26&gp=0.jpg");
            bitmap.MakeTransparent();
            texture[7].Create(gl, bitmap);

            bitmap = new Bitmap(texPath + "\\sand.png");
            bitmap.MakeTransparent();
            texture[8].Create(gl, bitmap);
        }
Exemplo n.º 7
0
 private void dataGridView1_SelectionChanged(object sender, EventArgs e)
 {
     FindObject(sender as DataGridView);
     if (selectedObject != null)
     {
         selectedObject.Decompile();
         if (selectedObject.IsClassType("Texture"))
         {
             SharpGL.SceneGraph.Assets.Texture cube_texture = new SharpGL.SceneGraph.Assets.Texture();
             Bitmap texture = LibSquish.GetImage((UTexture)selectedObject);
             cube_texture.Create(gl, texture);
             SharpGL.SceneGraph.Assets.Material material = new SharpGL.SceneGraph.Assets.Material();
             material.Texture = cube_texture;
             cube             = new Cube();
             cube.Material    = material;
             BoundingVolume boundingVolume = cube.BoundingVolume;
             float[]        extent         = new float[3];
             cube.BoundingVolume.GetBoundDimensions(out extent[0], out extent[1], out extent[2]);
             float maxExtent   = extent.Max();
             float scaleFactor = maxExtent > 10 ? 10.0f / maxExtent : 1;
             cube.Transformation.ScaleX = scaleFactor;
             cube.Transformation.ScaleY = scaleFactor;
             cube.Transformation.ScaleZ = scaleFactor;
         }
         if (selectedObject.IsClassType("Sound"))
         {
             PlaySound();
         }
         if (selectedObject.IsClassType("StaticMesh"))
         {
             smi = new StaticMeshInstance();
             smi.Init((UStaticMesh)selectedObject, gl);
             BoundingVolume boundingVolume = smi.BoundingVolume;
             float[]        extent         = new float[3];
             smi.BoundingVolume.GetBoundDimensions(out extent[0], out extent[1], out extent[2]);
             float maxExtent = extent.Max();
             //  Scale so that we are at most 10 units in size.
             float scaleFactor = maxExtent > 10 ? 10.0f / maxExtent : 1;
             smi.Transformation.ScaleX  = scaleFactor;
             smi.Transformation.ScaleY  = scaleFactor;
             smi.Transformation.ScaleZ  = scaleFactor;
             smi.Transformation.RotateX = -90;
         }
     }
 }
Exemplo n.º 8
0
        private void toolStripItemOpenTexture_Click(object sender, EventArgs e)
        {
            if (openTextureDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                this.textureAdded = false;
                try
                {
                    this.texture = new SharpGL.SceneGraph.Assets.Texture();
                    this.textureImage = new Bitmap(openTextureDlg.FileName);
                    texture.Create(this.openGLControl1.OpenGL, this.textureImage);

                    this.textureAdded = true;
                }
                catch (Exception ex)
                {
                    this.textureAdded = false;
                    MessageBox.Show(ex.Message);
                }
            }
        }
Exemplo n.º 9
0
 public Texture2D(SharpGL.SceneGraph.Assets.Texture tex, int width, int height)
 {
     _tex    = tex;
     _width  = width;
     _height = height;
 }
Exemplo n.º 10
0
        /// <summary>
        /// Handles the OpenGLDraw event of the openGLControl control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RenderEventArgs"/> instance containing the event data.</param>
        ///


        private void openGLControl_OpenGLDraw(object sender, RenderEventArgs e)
        {
            try
            {
                double LIGHT = 400;
                //  Get the OpenGL object.
                OpenGL gl = openGLControl.OpenGL;
                gl.LookAt(Tin.CenterPoint.X, Tin.CenterPoint.Y, -300, Tin.CenterPoint.X, Tin.CenterPoint.Y, 50, 0, 1, 0);

                //  Clear the color and depth buffer.
                gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

                //  Load the identity matrix.
                gl.LoadIdentity();
                gl.ClearColor(0, 0.3f, 0, 1);



                gl.ShadeModel(OpenGL.GL_FLAT);
                SharpGL.SceneGraph.Assets.Texture texture = new SharpGL.SceneGraph.Assets.Texture();
                texture.Create(gl, @".\123.bmp");
                gl.Enable(OpenGL.GL_TEXTURE_2D);
                texture.Bind(gl);
                #region //添加纹理
                gl.Begin(OpenGL.GL_TRIANGLES);
                foreach (Triangle x in Tin.Triangledata)
                {
                    gl.TexCoord(0.0f, 0.0f); gl.Vertex(x.GetTriPointA.X, x.GetTriPointA.Y, x.GetTriPointA.Z);
                    gl.TexCoord(1f, 0f); gl.Vertex(x.GetTriPointB.X, x.GetTriPointB.Y, x.GetTriPointB.Z);
                    gl.TexCoord(1f, 1f); gl.Vertex(x.GetTriPointC.X, x.GetTriPointC.Y, x.GetTriPointC.Z);
                }
                gl.End();



                #endregion


                gl.Enable(OpenGL.GL_LIGHTING);
                gl.Enable(OpenGL.GL_LIGHT0);
                gl.Enable(OpenGL.GL_LIGHT1);
                gl.Enable(OpenGL.GL_DEPTH_TEST);
                gl.ShadeModel(OpenGL.GL_FLAT);
                gl.LightModel(OpenGL.GL_LIGHT_MODEL_TWO_SIDE, OpenGL.GL_FALSE);


                Tin.Process();
                //绑定纹理



                #region//画三角网

                gl.LineWidth(1 / 2);
                //gl.Begin(OpenGL.GL_LINES);


                gl.Color(0, 0, 0);
                gl.Begin(OpenGL.GL_LINES);
                foreach (Edge temp1 in Tin.UsedEdgedata)
                {
                    gl.TexCoord(0.0f, 0.0f); gl.Vertex(temp1.GetPointa.X, temp1.GetPointa.Y, temp1.GetPointa.Z);
                    gl.TexCoord(1f, 1f); gl.Vertex(temp1.GetPointb.X, temp1.GetPointb.Y, temp1.GetPointb.Z);
                }
                foreach (Edge temp in Tin.OnlyEdgedata)
                {
                    gl.TexCoord(0.0f, 0.0f); gl.Vertex(temp.GetPointa.X, temp.GetPointa.Y, temp.GetPointa.Z);
                    gl.TexCoord(1f, 1f); gl.Vertex(temp.GetPointb.X, temp.GetPointb.Y, temp.GetPointb.Z);
                }

                gl.End();
                #endregion
                #region//添加光照
                gl.ShadeModel(OpenGL.GL_SMOOTH);
                //初始化材质
                var mat_specular  = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
                var mat_ambient   = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
                var mat_diffuse   = new float[] { 2.0f, 2.0f, 2.0f, 0.1f };
                var mat_shininess = new float[] { 100.0f };
                gl.Material(OpenGL.GL_FRONT, OpenGL.GL_SPECULAR, mat_specular);
                gl.Material(OpenGL.GL_FRONT, OpenGL.GL_AMBIENT, mat_ambient);
                gl.Material(OpenGL.GL_FRONT, OpenGL.GL_DIFFUSE, mat_diffuse);
                gl.Material(OpenGL.GL_FRONT, OpenGL.GL_SHININESS, mat_shininess);
                //初始化光照
                var ambientLight = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
                var diffuseLight = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
                var posLight0    = new float[] { 2.0f, 0.1f, 0.0f, 0.0f };
                gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_AMBIENT, ambientLight);
                gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, diffuseLight);
                gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, posLight0);
                #endregion
            }
            catch { }
        }