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 |