Exemplo n.º 1
0
        void initScene()
        {
            meshes = new MeshesGroup <MeshData>();

            MPCards        = meshes.Add(Mesh <MeshData> .CreateQuad(0, 0, 0, 1, 1.425f, 1, 1));
            MPOverlay      = meshes.Add(Mesh <MeshData> .CreateQuad(0, 0, 0, 1, 1, 1, 1));
            MPPointOverlay = meshes.Add(Mesh <MeshData> .CreateQuad(0, 0, 0, 0.5f, 0.2f, 1, -1));
            MPInfoOverlay  = meshes.Add(Mesh <MeshData> .CreateQuad(0, 0, 0, 1.2f, 0.2f, 1, -1));

            mainVao = new InstancedVAO <MeshData, CardInstancedData> (meshes);

            CardInstance.OverlayVBO      = new InstancesVBO <CardInstancedData>();
            CardInstance.PointOverlayVBO = new InstancesVBO <CardInstancedData>();
            CardInstance.InfoOverlayVBO  = new InstancesVBO <CardInstancedData>();

            mainShader = new MultiShader(
                "#MagicCrow.shaders.main.vert",
                "#MagicCrow.shaders.main.frag");

            //wirlpoolShader = new GameLib.EffectShader ("GGL.Shaders.GameLib.fire",64,64);
            wirlpoolShader = new GameLib.EffectShader("GGL.Shaders.GameLib.lightBalls", 64, 64);
        }
Exemplo n.º 2
0
        void createProfileTexture(uint[] indProfile)
        {
            int fbo;
            profileTexture = new GGL.Texture (Image.Width, Image.Height);

            GL.ActiveTexture (TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, profileTexture);

            GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba,
                Image.Width, Image.Height, 0,
                OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, IntPtr.Zero);

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

            GL.BindTexture(TextureTarget.Texture2D, 0);

            GL.GenFramebuffers(1, out fbo);

            GL.BindFramebuffer(FramebufferTarget.Framebuffer, fbo);
            GL.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment0,
                TextureTarget.Texture2D, profileTexture, 0);

            if (GL.CheckFramebufferStatus(FramebufferTarget.Framebuffer) != FramebufferErrorCode.FramebufferComplete)
            {
                throw new Exception(GL.CheckFramebufferStatus(FramebufferTarget.Framebuffer).ToString());
            }

            GL.Disable (EnableCap.CullFace);

            GameLib.EffectShader RedFillShader = new GameLib.EffectShader ("Opuz2015.shaders.red");
            RedFillShader.ProjectionMatrix = Matrix4.CreateOrthographicOffCenter
                (0, Image.Width, 0, Image.Height, 0, 1);
            RedFillShader.ModelViewMatrix = Matrix4.Identity;
            RedFillShader.ModelMatrix = Matrix4.Identity;
            RedFillShader.Enable ();

            GL.BindFramebuffer(FramebufferTarget.Framebuffer, fbo);
            float[] cc = new float[4];
            int[] viewport = new int[4];
            GL.GetInteger (GetPName.Viewport, viewport);
            GL.Viewport (0, 0, Image.Width, Image.Height);
            GL.GetFloat (GetPName.ColorClearValue, cc);
            GL.ClearColor (0, 0, 0, 0);
            GL.Clear (ClearBufferMask.ColorBufferBit);

            GL.BindVertexArray(vaoHandle);
            GL.LineWidth(3);
            GL.DrawElements (PrimitiveType.LineLoop, indProfile.Length,
                DrawElementsType.UnsignedInt, indProfile);
            GL.BindVertexArray (0);
            GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0);
            GL.Enable (EnableCap.CullFace);
            GL.UseProgram (0);
            GL.ClearColor (cc[0],cc[1],cc[2],cc[3]);
            GL.Viewport (viewport [0], viewport [1], viewport [2], viewport [3]);

            GL.DeleteFramebuffer(fbo);
            RedFillShader.Dispose ();
        }