Revision 35fd8f64
Added by Leszek Koltunski over 2 years ago
| src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java | ||
|---|---|---|
| 30 | 30 |
import android.opengl.GLSurfaceView; |
| 31 | 31 |
import android.opengl.Matrix; |
| 32 | 32 |
|
| 33 |
import org.distorted.library.helpers.MatrixHelper; |
|
| 34 |
|
|
| 33 | 35 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 34 | 36 |
|
| 35 | 37 |
class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer |
| ... | ... | |
| 41 | 43 |
private static final int COLOR_OFFSET = 3; |
| 42 | 44 |
private static final int COLOR_DATA_SIZE = 4; |
| 43 | 45 |
|
| 44 |
private float[] mModelMatrix = new float[16]; |
|
| 45 |
private float[] mViewMatrix = new float[16]; |
|
| 46 |
private float[] mProjectionMatrix = new float[16]; |
|
| 47 |
private float[] mMVPTriangleMatrix= new float[16]; |
|
| 48 |
private float[] mMVPSquareMatrix = new float[16]; |
|
| 46 |
private final float[] mModelMatrix = new float[16]; |
|
| 47 |
private final float[] mViewMatrix = new float[16]; |
|
| 48 |
private final float[] mProjectionMatrix = new float[16]; |
|
| 49 |
private final float[] mMVPTriangleMatrix= new float[16]; |
|
| 50 |
private final float[] mMVPSquareMatrix = new float[16]; |
|
| 51 |
private final float[] mTmpMatrix = new float[16]; |
|
| 49 | 52 |
|
| 50 | 53 |
private final FloatBuffer mTriangleVert, mSquareVert; |
| 51 | 54 |
|
| ... | ... | |
| 59 | 62 |
|
| 60 | 63 |
AroundTheWorldRendererPicker() |
| 61 | 64 |
{
|
| 62 |
Matrix.setIdentityM(mModelMatrix, 0);
|
|
| 65 |
MatrixHelper.setIdentity(mModelMatrix);
|
|
| 63 | 66 |
|
| 64 | 67 |
final float[] triangleVertData = {
|
| 65 | 68 |
-0.865f, 1.5f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, // x,y,z, r,g,b,a |
| ... | ... | |
| 237 | 240 |
final float near = 1.0f; |
| 238 | 241 |
final float far = 2.0f; |
| 239 | 242 |
|
| 240 |
Matrix.frustumM(mProjectionMatrix, 0, left, right, bottom, top, near, far);
|
|
| 241 |
Matrix.multiplyMM(mMVPTriangleMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0);
|
|
| 243 |
MatrixHelper.frustum(mProjectionMatrix, left, right, bottom, top, near, far);
|
|
| 244 |
MatrixHelper.multiply(mMVPTriangleMatrix, mProjectionMatrix, mViewMatrix);
|
|
| 242 | 245 |
} |
| 243 | 246 |
|
| 244 | 247 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 268 | 271 |
GLES31.glVertexAttribPointer(mColorH, COLOR_DATA_SIZE, GLES31.GL_FLOAT, false, STRIDE_BYTES, mSquareVert); |
| 269 | 272 |
GLES31.glEnableVertexAttribArray(mColorH); |
| 270 | 273 |
|
| 271 |
Matrix.multiplyMM(mMVPSquareMatrix, 0, mViewMatrix, 0, mModelMatrix, 0);
|
|
| 272 |
Matrix.multiplyMM(mMVPSquareMatrix, 0, mProjectionMatrix, 0, mMVPSquareMatrix, 0);
|
|
| 274 |
MatrixHelper.multiply(mTmpMatrix, mViewMatrix, mModelMatrix);
|
|
| 275 |
MatrixHelper.multiply(mMVPSquareMatrix, mProjectionMatrix, mTmpMatrix );
|
|
| 273 | 276 |
|
| 274 | 277 |
GLES31.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPSquareMatrix, 0); |
| 275 | 278 |
GLES31.glDrawArrays(GLES31.GL_TRIANGLE_STRIP, 0,4); |
Also available in: Unified diff
Implement the android.opengl.Matrix functions ourselves.