Subversion Repositories AndroidProjects

Rev

Rev 830 | Rev 833 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Tao.OpenGl;

using BauzoidNET.app;

using System.IO;

namespace BauzoidEdit
{
    public partial class MainForm : Form
    {
        private BauzoidApp mApp = null;

        private BauzoidNET.graphics.sprite.Sprite mSprite = null;
        private BauzoidNET.graphics.texture.Framebuffer mOffscreen = null;

        private BauzoidNET.graphics.model.SimpleGeometry mQuad = null;
        private BauzoidNET.graphics.shader.ShaderProgram mShader = null;
        private BauzoidNET.graphics.shader.ShaderUniform mTextureHandle = null;

        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            mApp = new BauzoidApp();
            mApp.init(mGlView.Width, mGlView.Height);

            mQuad = BauzoidNET.graphics.model.GeometryUtil.createQuad(mApp.getGraphics(), 0.0f, 0, 100.0f, 100.0f);
               
                //mShader = ShaderUtil.createShaderFromFile(mApp.getGraphics(), Gdx.files.internal("data/shaders/offscreen.vert"),
                                //Gdx.files.internal("data/shaders/offscreen.frag"));*/
            mShader = BauzoidNET.graphics.shader.ShaderUtil.createShaderFromFile(mApp.getGraphics(), "data/shaders/offscreen.vert", "data/shaders/offscreen.frag");
               
                if (mShader != null)
                {
                        mTextureHandle = mShader.getUniform("uDiffuse");
                    }

            mSprite = new BauzoidNET.graphics.sprite.Sprite(mApp.getGraphics(), "data/textures/test.png");
            mSprite.init(10, 10, 300, 300, 0, 0);

            mOffscreen = new BauzoidNET.graphics.texture.Framebuffer(mApp.getGraphics(), 128, 128, false);
        }

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (mSprite != null)
            {
                mSprite.dispose();
                mSprite = null;
            }

            if (mOffscreen != null)
            {
                mOffscreen.dispose();
                mOffscreen = null;
            }

            if (mQuad != null)
            {
                mQuad.dispose();
                mQuad = null;
            }

            if (mApp != null)
                mApp.exit();
        }

        private void mGlView_Paint(object sender, PaintEventArgs e)
        {
            mOffscreen.activate();

            mApp.getGraphics().clear(1, 0.5f, 0.3f, 0);
            mApp.getRenderStates().projection.setOrtho(
                0.0f,
                480,
                480,
                0.0f,
                0.0f,
                1.0f
            );

            mSprite.render();
            mOffscreen.deactivate();

            mApp.getGraphics().clear(0, 0.5f, 0.3f, 0);

            //Gl.glViewport(0, 0, mGlView.Width, mGlView.Height);
            mApp.getRenderStates().projection.setOrtho(
                    0.0f,
                    mApp.getGraphics().getWidth(),
                    mApp.getGraphics().getHeight(),
                    0.0f,
                    0.0f,
                    1.0f
                );

            BauzoidNET.graphics.renderstates.RenderStates rs = mApp.getGraphics().renderStates;

            rs.view.identity();
            rs.model.identity();

            mShader.activate();
            {
                mTextureHandle.set(0);
                rs.getTextureStage(0).bindTexture(mOffscreen.getColorTexture());

                rs.blending.setEnabled(false);
                rs.culling.setEnabled(false);
                rs.depthTest.setEnabled(false);
                rs.activate();
                {
                    mQuad.render();
                }
                rs.deactivate();
                rs.popModelMatrix();
                rs.popViewMatrix();
            }
            mShader.deactivate();
        }

        private void colorWidget1_ColorChange(object sender, EventArgs e)
        {
            foreColorPanel.BackColor = mainColorWidget.CurrentColor;
            swatchesBox.CurrentColor = mainColorWidget.CurrentColor;
        }

        private void colorPalette1_ColorPicked(object sender, EventArgs e)
        {
            mainColorWidget.CurrentColor = swatchesBox.CurrentColor;
            foreColorPanel.BackColor = swatchesBox.CurrentColor;
        }

        private void mGlView_Resize(object sender, EventArgs e)
        {
            mApp.getGraphics().updateSurfaceDimensions(mGlView.Width, mGlView.Height);
        }
    }
}