TexCoord2() public static method

public static TexCoord2 ( System.Vector2 v ) : void
v System.Vector2
return void
Esempio n. 1
0
        protected override void _DrawTexture(COGLTexture texture, SDrawCoords dc, SColorF color, bool isReflection = false)
        {
            // Align textures to full pixels to reduce artefacts
            dc.Wx1 = (float)Math.Round(dc.Wx1);
            dc.Wy1 = (float)Math.Round(dc.Wy1);
            dc.Wx2 = (float)Math.Round(dc.Wx2);
            dc.Wy2 = (float)Math.Round(dc.Wy2);

            GL.BindTexture(TextureTarget.Texture2D, texture.Name);

            GL.Enable(EnableCap.Blend);

            GL.MatrixMode(MatrixMode.Texture);
            GL.PushMatrix();

            if (Math.Abs(dc.Rotation) > float.Epsilon)
            {
                GL.Translate(0.5f, 0.5f, 0);
                GL.Rotate(-dc.Rotation, 0f, 0f, 1f);
                GL.Translate(-0.5f, -0.5f, 0);
            }

            GL.Begin(PrimitiveType.Quads);

            GL.Color4(color.R, color.G, color.B, color.A * CGraphics.GlobalAlpha);
            GL.TexCoord2(dc.Tx1, dc.Ty1);
            GL.Vertex3(dc.Wx1, dc.Wy1, dc.Wz);

            if (isReflection)
            {
                GL.Color4(color.R, color.G, color.B, 0);
            }
            GL.TexCoord2(dc.Tx1, dc.Ty2);
            GL.Vertex3(dc.Wx1, dc.Wy2, dc.Wz);

            GL.TexCoord2(dc.Tx2, dc.Ty2);
            GL.Vertex3(dc.Wx2, dc.Wy2, dc.Wz);

            if (isReflection)
            {
                GL.Color4(color.R, color.G, color.B, color.A * CGraphics.GlobalAlpha);
            }
            GL.TexCoord2(dc.Tx2, dc.Ty1);
            GL.Vertex3(dc.Wx2, dc.Wy1, dc.Wz);

            GL.End();

            GL.PopMatrix();

            GL.Disable(EnableCap.Blend);
            GL.BindTexture(TextureTarget.Texture2D, 0);
        }
Esempio n. 2
0
 public static void TexCoord2(Vector2d v)
 {
     GL.TexCoord2(v.X, v.Y);
 }
Esempio n. 3
0
        private void GlPaint(object sender, PaintEventArgs e)
        {
            if (!_glLoaded)
            {
                return;
            }
            // Color fonColor = Color.FromArgb(_soundColor.R, _soundColor.B, 0);
            _fonStrong = ((_fonStrong * 3) + _total) / 4;
            if (_fonStrong > 1)
            {
                _fonStrong = 1;
            }

            Color fonColor = Color.FromArgb((int)(255 * _fonStrong),
                                            (int)(255 * _fonStrong), (int)(255 * _fonStrong * 0.2));

            GL.ClearColor(fonColor);
            // GL.ClearColor(1f, 1f, 1f, 1f);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
            GL.LoadIdentity();

            GL.Disable(EnableCap.Lighting);
            GL.Enable(EnableCap.Blend);
            GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);

            //Прорисoвка круга
            if (Visual1.Colors.Count >= 10)
            {
                Color spin = new Color();
                GL.Begin(PrimitiveType.TriangleFan);
                GL.Color3(Visual1.Colors[0]);
                GL.Color4(Visual1.Colors[0].R, Visual1.Colors[0].G, Visual1.Colors[0].B, (double)0.5);
                GL.Color4(Color.FromArgb(Visual1.Colors[0].A * 0, Visual1.Colors[0].R, Visual1.Colors[0].G, Visual1.Colors[0].B));
                GL.Vertex3(-0, -0, -1);
                GL.Vertex3(Visual1.Coordinates[0].X, Visual1.Coordinates[0].Y, -1);
                for (int i = 0; i < Visual1.Coordinates.Count; i++)
                {
                    if ((i % 4 == 0) && (i > 0))
                    {
                        GL.End();

                        GL.Begin(PrimitiveType.TriangleFan);
                        GL.Vertex3(-0, -0, (float)((double)i / Visual1.Coordinates.Count / 2 - 1));
                        for (int j = i - 3; j < i; j++)
                        {
                            GL.Vertex3(-Visual1.Coordinates[j - 1].X, -Visual1.Coordinates[j - 1].Y,
                                       (float)((double)j / Visual1.Coordinates.Count / 2 - 1));
                        }
                        GL.End();

                        GL.Begin(PrimitiveType.TriangleFan);
                        GL.Vertex3(-0, -0, (float)((double)i / Visual1.Coordinates.Count / 2 - 1));
                        GL.Vertex3(Visual1.Coordinates[i - 1].X, Visual1.Coordinates[i - 1].Y,
                                   (float)((double)i / Visual1.Coordinates.Count / 2 - 1));
                    }

                    GL.Color3(Visual1.Colors[i]);
                    GL.Color4(Visual1.Colors[i].R, Visual1.Colors[i].G, Visual1.Colors[i].B, (double)0.5);
                    GL.Color4(Color.FromArgb((int)((double)i / Visual1.Coordinates.Count * TR * 255), Visual1.Colors[i].R, Visual1.Colors[i].G, Visual1.Colors[i].B));

                    GL.Vertex3(Visual1.Coordinates[i].X, Visual1.Coordinates[i].Y,
                               (float)((double)i / Visual1.Coordinates.Count / 2 - 1));
                }
                GL.End();
            }

            //////конец прорисовки круга

            float[] diffuse = new float[3] {
                0.5f, 0.5f, 0.5f
            };
            GL.Light(LightName.Light0, LightParameter.Diffuse, diffuse);

            float[] ambient = new float[3] {
                4, 4, 4
            };
            GL.Light(LightName.Light0, LightParameter.Ambient, ambient);

            float[] lightPos = new float[4] {
                -glControl1.Width, 0.0f, 10.0f, 1.0f
            };
            GL.Light(LightName.Light0, LightParameter.Position, lightPos);

            float[] specular = new float[4] {
                10, 10, 10, 1
            };
            GL.Light(LightName.Light0, LightParameter.Specular, specular);

            GL.Enable(EnableCap.Lighting);
            GL.Enable(EnableCap.Light0);

            GL.LightModel(LightModelParameter.LightModelTwoSide, 1);

            //звуковой спектр снизу в виде диаграмм
            Random rand = new Random();

            for (int color = 0; color < 5; color++)
            {
                LoadTexture(bmpTex[color]);
                for (int j = 0; j < 50; j++)
                {
                    if (_FFTnum[j] - 1 != color)
                    {
                        continue;
                    }
                    GL.Enable(EnableCap.Texture2D);

                    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter,
                                    (int)TextureMinFilter.Nearest);
                    GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter,
                                    (int)TextureMagFilter.Linear);

                    GL.PolygonMode(MaterialFace.FrontAndBack, mode);
                    GL.Begin(PrimitiveType.QuadStrip);
                    double w = glControl1.Width / 25;

                    float  k = 0.5f;
                    double r = 0.5;
                    int    n = 20;
                    for (int i = 0; i <= n; ++i)
                    {
                        double a = Math.PI / n * i;
                        double x = r * Math.Cos(a);
                        double z = r * Math.Sin(a);
                        GL.TexCoord2(0, 1);
                        GL.Vertex3(x * w + w * j + (w / 2) - glControl1.Width,
                                   -glControl1.Height * (1 - _FFTSpectr[_FFTnum[j] - 1]), z);
                        GL.TexCoord2(1, 0);
                        GL.Vertex3(x * w + w * j + (w / 2) - glControl1.Width, -glControl1.Height, z);

                        if (i > 0)
                        {
                            GL.Normal3(-(x - r * Math.Cos(a - 1)), (x - r * Math.Cos(a - 1)), 0);
                        }
                    }
                    GL.End();
                }
            }

            GL.Disable(EnableCap.Lighting);
            GL.Disable(EnableCap.Texture2D);

            //myThread t1 = new myThread("Thread 1", glControl1.Width, glControl1.Height, firstColorSpectr, spectrRadius,
            //    _FFTSpectr, glControl1);
            //myThread t2 = new myThread("Thread 1", -glControl1.Width, glControl1.Height, firstColorSpectr, spectrRadius,
            //    _FFTSpectr, glControl1);
            //myThread t3 = new myThread("Thread 1", glControl1.Width, -glControl1.Height, firstColorSpectr, spectrRadius,
            //    _FFTSpectr, glControl1);
            //myThread t4 = new myThread("Thread 1", -glControl1.Width, -glControl1.Height, firstColorSpectr, spectrRadius,
            //    _FFTSpectr, glControl1);



            MusicCirsle(glControl1.Width, glControl1.Height, Math.PI, 3 * Math.PI / 2);
            MusicCirsle(-glControl1.Width, glControl1.Height, 3 * Math.PI / 2, 2 * Math.PI);
            MusicCirsle(glControl1.Width, -glControl1.Height, Math.PI / 2, 2 * Math.PI);
            MusicCirsle(-glControl1.Width, -glControl1.Height, 0, Math.PI / 2);

            //GL.Disable(EnableCap.Lighting);



            GL.Disable(EnableCap.Blend);

            GL.Flush();
            //GL.Finish();

            glControl1.SwapBuffers();
        }