Subversion Repositories AndroidProjects

Rev

Rev 188 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
159 chris 1
package com.gebauz.BauzoidTest;
2
 
163 chris 3
import java.io.IOException;
4
 
160 chris 5
import android.opengl.GLES20;
6
import android.os.SystemClock;
163 chris 7
import android.util.Log;
160 chris 8
 
9
import com.gebauz.Bauzoid.app.Game;
163 chris 10
import com.gebauz.Bauzoid.file.File;
11
import com.gebauz.Bauzoid.file.FileUtil;
159 chris 12
import com.gebauz.Bauzoid.gamestates.BaseGameState;
184 chris 13
import com.gebauz.Bauzoid.gamestates.GameStateManager;
168 chris 14
import com.gebauz.Bauzoid.graphics.model.Model;
15
import com.gebauz.Bauzoid.graphics.model.ModelUtil;
16
import com.gebauz.Bauzoid.graphics.model.SimpleGeometry;
17
import com.gebauz.Bauzoid.graphics.shader.ShaderProgram;
18
import com.gebauz.Bauzoid.graphics.shader.ShaderUniform;
19
import com.gebauz.Bauzoid.graphics.shader.ShaderUtil;
188 chris 20
import com.gebauz.Bauzoid.graphics.texture.Texture;
21
import com.gebauz.Bauzoid.graphics.texture.TextureUtil;
160 chris 22
import com.gebauz.Bauzoid.math.Matrix4;
164 chris 23
import com.gebauz.Bauzoid.math.Vector3;
159 chris 24
 
25
public class TestState extends BaseGameState
26
{
167 chris 27
        private SimpleGeometry mMesh;  
160 chris 28
        private Matrix4 mProjection;
29
        private Matrix4 mView;
30
        private Matrix4 mModel;
31
 
32
        private ShaderProgram mShader;
33
        private ShaderUniform mMVPMatrixUniform;
34
 
179 chris 35
        private Model mTestModel = null;
188 chris 36
        private Texture mTestTexture = null;
37
        private ShaderUniform mTextureSampler;
179 chris 38
 
184 chris 39
        public TestState(Game game)
160 chris 40
        {
184 chris 41
                super(game);
160 chris 42
        }
43
 
159 chris 44
        @Override
45
        public void init()
46
        {
160 chris 47
                float coords[] =
48
                {
49
                                -8.5f, -8.25f, 0,
50
                                8.5f, -8.25f, 0,
51
                                0.0f, 8.559016994f, 0,
52
                                0.0f, 8.559016994f, 0,
53
                                8.5f, -8.25f, 0,
54
                                9.0f, -4.0f, -2.0f
55
                };
159 chris 56
 
160 chris 57
                float colors[] =
58
                {
59
                                1.0f, 0.0f, 0, 1.0f,
60
                                1.0f, 0.0f, 1.0f, 1.0f,
61
                                0, 1.0f, 0, 1.0f,
62
                                1.0f, 0.0f, 0, 1.0f,
63
                                1.0f, 0.0f, 1.0f, 1.0f,
64
                                0, 1.0f, 0, 1.0f
65
                };
66
 
167 chris 67
                mMesh = new SimpleGeometry();
160 chris 68
                mMesh.setVertices(coords);
69
                mMesh.setColors(colors);
70
                mMesh.createBuffers();         
71
 
165 chris 72
                try
73
                {
185 chris 74
                        mShader = ShaderUtil.createFromAsset(getGame().getGraphics(), "shaders/default.vs", "shaders/default.fs");
165 chris 75
                }
76
                catch (IOException e)
77
                {
78
                        Log.v("GBZ", "exception");     
79
                }
160 chris 80
 
81
                mMVPMatrixUniform = mShader.getUniform("uMVPMatrix");
188 chris 82
                mTextureSampler = mShader.getUniform("uDiffuse");
163 chris 83
 
84
                try
85
                {
185 chris 86
                        mTestModel = ModelUtil.loadModelFromAsset(getGame().getGraphics(), "conifer.model");
179 chris 87
                        mTestModel.upload();
188 chris 88
 
89
                        mTestTexture = TextureUtil.loadTextureFromAsset(getGame().getGraphics(), "tree_green.png");
163 chris 90
                }
91
                catch (IOException e)
92
                {
93
                        Log.v("GBZ", "exception");
94
                }
159 chris 95
        }
96
 
97
        @Override
98
        public void exit()
99
        {
100
 
101
 
102
        }
103
 
104
        @Override
105
        public void update(float deltaTime)
106
        {
160 chris 107
 
159 chris 108
        }
109
 
110
        @Override
111
        public void render()
112
        {
184 chris 113
                int w = getGame().getGraphics().getWidth();
114
                int h = getGame().getGraphics().getHeight();
159 chris 115
 
160 chris 116
                GLES20.glViewport(0, 0, w, h);
117
 
118
                float ratio = (float)w / (float)h;
119
 
120
                mProjection = Matrix4.createPerspective(45.0f, ratio, 1.0f, 300.0f);
182 chris 121
                mView = Matrix4.createLookAt(0, 5, -10.0f, 0.0f, 2.0f, 0.0f, 0.0f, 1.0f, 0.0f);        
160 chris 122
 
123
        GLES20.glClearColor(0.0f, 0.3f, 0.5f, 0.0f);
186 chris 124
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
160 chris 125
 
126
        mShader.activate();
127
 
128
                long time = SystemClock.uptimeMillis() % 4000L;
129
                float angle = 0.090f * ((int)time);
130
 
131
                mModel = Matrix4.createRotationY(angle);
132
 
133
                Matrix4 mvpMatrix = Matrix4.multiply(mModel, mView);
134
                mvpMatrix = Matrix4.multiply(mvpMatrix, mProjection);
135
 
136
                mMVPMatrixUniform.setMatrix(mvpMatrix);
137
 
180 chris 138
                //mMesh.render();
179 chris 139
 
140
                if (mTestModel != null)
188 chris 141
                {
142
                        if (mTextureSampler != null)
143
                                mTextureSampler.setInt(0);
144
                        mTestTexture.bind(0);          
179 chris 145
                        mTestModel.render();
188 chris 146
                        mTestTexture.unbind(0);
147
                }
159 chris 148
        }
149
}
188 chris 150