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); }
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 (); }