Project

General

Profile

« Previous | Next » 

Revision 80508ef5

Added by Leszek Koltunski over 7 years ago

Progress with AroundTheWorld

View differences:

src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRendererPicker.java
34 34

  
35 35
class AroundTheWorldRendererPicker implements GLSurfaceView.Renderer
36 36
  {
37
	private float[] mModelMatrix      = new float[16];
38 37
	private float[] mViewMatrix       = new float[16];
39 38
	private float[] mProjectionMatrix = new float[16];
40 39
	private float[] mMVPMatrix        = new float[16];
41 40

  
42 41
	private final FloatBuffer mTriangleVertices;
43 42

  
44
  private int mMVPMatrixHandle;
45
  private int mPositionHandle;
46
	private int mColorHandle;
43
  private int mMVPMatrixH;
44
  private int mPositionH;
45
	private int mColorH;
47 46

  
48 47
	private final int mBytesPerFloat    = 4;
49 48
	private final int mStrideBytes      = 7 * mBytesPerFloat;
......
57 56
	AroundTheWorldRendererPicker()
58 57
	  {
59 58
		final float[] triangle1VerticesData = {
60
				      -0.25f, 0.5f, 0.0f,      // x,y,z
61
	            1.0f, 1.0f, 1.0f, 1.0f,  // r,g,b
59
				      -0.865f, 1.5f, 0.0f,      // x,y,z
60
	            1.0f, 1.0f, 1.0f, 1.0f,   // r,g,b
62 61

  
63
	            -0.25f, -0.5f, 0.0f,
62
	            -0.865f,-1.5f, 0.0f,
64 63
	            0.0f, 0.0f, 0.0f, 1.0f,
65 64

  
66
	            0.559f, 0.0f, 0.0f,
67
	            0.3f, 0.3f, 0.0f, 1.0f };
65
	            1.73f, 0.0f, 0.0f,
66
	            0.5f, 0.5f, 0.0f, 1.0f };
68 67

  
69 68
		mTriangleVertices = ByteBuffer.allocateDirect(triangle1VerticesData.length * mBytesPerFloat).order(ByteOrder.nativeOrder()).asFloatBuffer();
70 69
    mTriangleVertices.put(triangle1VerticesData).position(0);
......
74 73

  
75 74
	@Override public void onSurfaceCreated(GL10 glUnused, EGLConfig config)
76 75
	  {
77
		GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
76
		GLES20.glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
78 77

  
79 78
		final float eyeX = 0.0f;
80 79
		final float eyeY = 0.0f;
......
82 81

  
83 82
		final float lookX = 0.0f;
84 83
		final float lookY = 0.0f;
85
		final float lookZ = -5.0f;
84
		final float lookZ = 0.0f;
86 85

  
87 86
		final float upX = 0.0f;
88 87
		final float upY = 1.0f;
......
91 90
		Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
92 91

  
93 92
		final String vertexShader =
94
			  "uniform mat4 u_MVPMatrix;                 \n"
95
		  + "attribute vec4 a_Position;                \n"
96
		  + "attribute vec4 a_Color;                   \n"
97
		  + "varying vec4 v_Color;                     \n"
93
			  "uniform mat4 u_MVPMatrix;                \n"
94
		  + "attribute vec4 a_Position;               \n"
95
		  + "attribute vec4 a_Color;                  \n"
96
		  + "varying vec4 v_Color;                    \n"
98 97

  
99
		  + "void main()                               \n"
100
		  + "{                                         \n"
101
		  + "   v_Color = a_Color;                     \n"
102
		  + "   gl_Position = u_MVPMatrix* a_Position; \n"
103
		  + "}                                         \n";
98
		  + "void main()                              \n"
99
		  + "  {                                      \n"
100
		  + "  v_Color = a_Color;                     \n"
101
		  + "  gl_Position = u_MVPMatrix* a_Position; \n"
102
		  + "  }                                      \n";
104 103

  
105 104
		final String fragmentShader =
106
			  "precision mediump float;       \n"
107
		  + "varying vec4 v_Color;          \n"
105
			  "precision mediump float;     \n"
106
		  + "varying vec4 v_Color;        \n"
108 107

  
109
		  + "void main()                    \n"
110
		  + "{                              \n"
111
		  + "   gl_FragColor = v_Color;     \n"
112
		  + "}                              \n";
108
		  + "void main()                  \n"
109
		  + "  {                          \n"
110
		  + "  gl_FragColor = v_Color;    \n"
111
		  + "  }                          \n";
113 112

  
114 113
		int vertexShaderHandle = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
115 114

  
......
180 179
			throw new RuntimeException("Error creating program.");
181 180
		  }
182 181

  
183
    mMVPMatrixHandle = GLES20.glGetUniformLocation(programHandle, "u_MVPMatrix");
184
    mPositionHandle = GLES20.glGetAttribLocation(programHandle, "a_Position");
185
    mColorHandle = GLES20.glGetAttribLocation(programHandle, "a_Color");
182
    mMVPMatrixH = GLES20.glGetUniformLocation(programHandle, "u_MVPMatrix");
183
    mPositionH  = GLES20.glGetAttribLocation(programHandle, "a_Position");
184
    mColorH     = GLES20.glGetAttribLocation(programHandle, "a_Color");
186 185

  
187 186
    GLES20.glUseProgram(programHandle);
188 187
	  }
......
193 192
	  {
194 193
		GLES20.glViewport(0, 0, width, height);
195 194

  
196
		final float ratio = (float) width / height;
197
		final float left = -ratio;
198
		final float right = ratio;
199
		final float bottom = -1.0f;
200
		final float top = 1.0f;
201
		final float near = 1.0f;
202
		final float far = 10.0f;
195
		final float ratio  = (float) width / height;
196
		final float left   =-ratio;
197
		final float right  = ratio;
198
		final float bottom =-1.0f;
199
		final float top    = 1.0f;
200
		final float near   = 1.0f;
201
		final float far    = 2.0f;
203 202

  
204 203
		Matrix.frustumM(mProjectionMatrix, 0, left, right, bottom, top, near, far);
204
		Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0);
205 205
	  }
206 206

  
207 207
///////////////////////////////////////////////////////////////////////////////////////////////////
......
210 210
	  {
211 211
		GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
212 212

  
213
    Matrix.setIdentityM(mModelMatrix, 0);
214

  
215 213
    mTriangleVertices.position(mPositionOffset);
216
    GLES20.glVertexAttribPointer(mPositionHandle, mPositionDataSize, GLES20.GL_FLOAT, false, mStrideBytes, mTriangleVertices);
217
    GLES20.glEnableVertexAttribArray(mPositionHandle);
214
    GLES20.glVertexAttribPointer(mPositionH, mPositionDataSize, GLES20.GL_FLOAT, false, mStrideBytes, mTriangleVertices);
215
    GLES20.glEnableVertexAttribArray(mPositionH);
218 216

  
219 217
    mTriangleVertices.position(mColorOffset);
220
    GLES20.glVertexAttribPointer(mColorHandle, mColorDataSize, GLES20.GL_FLOAT, false, mStrideBytes, mTriangleVertices);
221
    GLES20.glEnableVertexAttribArray(mColorHandle);
218
    GLES20.glVertexAttribPointer(mColorH, mColorDataSize, GLES20.GL_FLOAT, false, mStrideBytes, mTriangleVertices);
219
    GLES20.glEnableVertexAttribArray(mColorH);
222 220

  
223
		Matrix.multiplyMM(mMVPMatrix, 0, mViewMatrix, 0, mModelMatrix, 0);
224
    Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mMVPMatrix, 0);
225
    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mMVPMatrix, 0);
221
		GLES20.glUniformMatrix4fv(mMVPMatrixH, 1, false, mMVPMatrix, 0);
226 222
    GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
227 223
	  }
228 224
  }

Also available in: Unified diff