Advertisement
esepich

Untitled

Jul 2nd, 2015
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.93 KB | None | 0 0
  1. package com.ecsbackgammon;
  2.  
  3. import android.opengl.GLES30;
  4. import android.opengl.GLSurfaceView;
  5. import android.opengl.Matrix;
  6. import android.util.Log;
  7.  
  8. import java.nio.ByteBuffer;
  9. import java.nio.ByteOrder;
  10. import java.nio.FloatBuffer;
  11.  
  12. import javax.microedition.khronos.egl.EGLConfig;
  13. import javax.microedition.khronos.opengles.GL10;
  14.  
  15. public class MyGLRenderer implements GLSurfaceView.Renderer {
  16.  
  17. private String TAG = DrawThread.class.getSimpleName( );
  18.  
  19. MyGLRenderer( )
  20. {
  21. fSampleVertices = ByteBuffer.allocateDirect( fSampleVerticesData.length * 4 )
  22. .order ( ByteOrder.nativeOrder( ) ).asFloatBuffer( );
  23.  
  24. fSampleVertices.put( fSampleVerticesData ).position ( 0 );
  25.  
  26. Log.d( TAG, "MyGLRender( )" );
  27. }
  28.  
  29. public void onSurfaceCreated( GL10 unused, EGLConfig config )
  30. {
  31. RenderGL.CalculateBounds( );
  32.  
  33. fBoardOuterData[0] = BoardMetrics.rBoardOuter.right;
  34. fBoardOuterData[1] = BoardMetrics.rBoardOuter.top;
  35. fBoardOuterData[2] = 0.0f;
  36. fBoardOuterData[3] = BoardMetrics.rBoardOuter.left;
  37. fBoardOuterData[4] = BoardMetrics.rBoardOuter.top;
  38. fBoardOuterData[5] = 0.0f;
  39. fBoardOuterData[6] = BoardMetrics.rBoardOuter.left;
  40. fBoardOuterData[7] = BoardMetrics.rBoardOuter.bottom;
  41. fBoardOuterData[8] = 0.0f;
  42. fBoardOuterData[9] = BoardMetrics.rBoardOuter.right;
  43. fBoardOuterData[10] = BoardMetrics.rBoardOuter.top;
  44. fBoardOuterData[11] = 0.0f;
  45. fBoardOuterData[12] = BoardMetrics.rBoardOuter.left;
  46. fBoardOuterData[13] = BoardMetrics.rBoardOuter.bottom;
  47. fBoardOuterData[14] = 0.0f;
  48. fBoardOuterData[15] = BoardMetrics.rBoardOuter.right;
  49. fBoardOuterData[16] = BoardMetrics.rBoardOuter.bottom;
  50. fBoardOuterData[17] = 0.0f;
  51.  
  52. fBoardOuter = ByteBuffer.allocateDirect( fBoardOuterData.length * 4 )
  53. .order ( ByteOrder.nativeOrder( ) ).asFloatBuffer( );
  54.  
  55. fBoardOuter.put( fBoardOuterData ).position ( 0 );
  56.  
  57. String sVertexShader1 =
  58. "#version 300 es \n"
  59. + "uniform mat4 uMVPMatrix; \n"
  60. + "in vec4 vPosition; \n"
  61. + "void main() \n"
  62. + "{ \n"
  63. + " gl_Position = uMVPMatrix * vPosition; \n"
  64. + "} \n";
  65.  
  66. /*String sVertexShader1 =
  67.  
  68. // This matrix member variable provides a hook to manipulate
  69. // the coordinates of objects that use this vertex shader.
  70. "#version 300 es \n" +
  71. "uniform mat4 uMVPMatrix; \n" +
  72.  
  73. "attribute vec4 vPosition; \n" +
  74. "void main(){ \n" +
  75. // The matrix must be included as part of gl_Position
  76. // Note that the uMVPMatrix factor *must be first* in order
  77. // for the matrix multiplication product to be correct.
  78. " gl_Position = uMVPMatrix * vPosition; \n" +
  79.  
  80. "} \n";*/
  81.  
  82. String sFragmentShader1 =
  83. "#version 300 es \n"
  84. + "precision mediump float; \n"
  85. + "out vec4 fragColor; \n"
  86. + "void main() \n"
  87. + "{ \n"
  88. + " fragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 ); \n"
  89. + "} \n";
  90.  
  91. int[] dLinked1 = new int[1];
  92.  
  93. int dVertexShader1 = LoadShader ( GLES30.GL_VERTEX_SHADER, sVertexShader1 );
  94.  
  95. int dFragmentShader1 = LoadShader ( GLES30.GL_FRAGMENT_SHADER, sFragmentShader1 );
  96.  
  97. int dProgramObject1 = GLES30.glCreateProgram( );
  98.  
  99. if ( dProgramObject1 == 0 )
  100. {
  101. return;
  102. }
  103.  
  104. GLES30.glAttachShader ( dProgramObject1, dVertexShader1 );
  105.  
  106. GLES30.glAttachShader ( dProgramObject1, dFragmentShader1 );
  107.  
  108. GLES30.glBindAttribLocation( dProgramObject1, 0, "vPosition" );
  109.  
  110. GLES30.glLinkProgram( dProgramObject1 );
  111.  
  112. GLES30.glGetProgramiv( dProgramObject1, GLES30.GL_LINK_STATUS, dLinked1, 0 );
  113.  
  114. if ( dLinked1[0] == 0 )
  115. {
  116. Log.e ( TAG, "Error linking program:" );
  117. Log.e ( TAG, GLES30.glGetProgramInfoLog ( dProgramObject1 ) );
  118.  
  119. GLES30.glDeleteProgram ( dProgramObject1 );
  120.  
  121. return;
  122. }
  123.  
  124. this.dProgramObject1 = dProgramObject1;
  125.  
  126. muMVPMatrixHandle = GLES30.glGetUniformLocation( dProgramObject1, "uMVPMatrix");
  127.  
  128. GLES30.glClearColor ( 1.0f, 1.0f, 1.0f, 0.0f );
  129.  
  130. Log.d( TAG, "onSurfaceCreated( )" );
  131. }
  132.  
  133. public void onDrawFrame( GL10 unused )
  134. {
  135. GLES30.glViewport ( 0, 0, mWidth, mHeight );
  136.  
  137. GLES30.glClear ( GLES30.GL_COLOR_BUFFER_BIT );
  138.  
  139. GLES30.glUseProgram ( dProgramObject1 );
  140.  
  141. GLES30.glVertexAttribPointer( 0, 3, GLES30.GL_FLOAT, false, 0, fSampleVertices );
  142.  
  143. GLES30.glEnableVertexAttribArray ( 0 );
  144.  
  145. GLES30.glUniformMatrix4fv( muMVPMatrixHandle, 1, false, fOrthoM, 0 );
  146.  
  147. GLES30.glDrawArrays( GLES30.GL_TRIANGLES, 0, 3 );
  148.  
  149. //Log.d( TAG, "onDrawFrame( )" );
  150. }
  151.  
  152. public void onSurfaceChanged( GL10 unused, int width, int height )
  153. {
  154. mWidth = width;
  155.  
  156. mHeight = height;
  157.  
  158. float aspectRatio = ( float ) mWidth / (float) mHeight;
  159.  
  160. Matrix.orthoM( fOrthoM, 0, -aspectRatio, aspectRatio, -1, 1, -1, 1 );
  161.  
  162. Log.d( TAG, "onSurfaceChanged( )" );
  163. }
  164.  
  165. private int LoadShader ( int dType, String sShaderSrc )
  166. {
  167. int dShader;
  168.  
  169. int[] dCompiled = new int[1];
  170.  
  171. // Create the shader object
  172. dShader = GLES30.glCreateShader ( dType );
  173.  
  174. if ( dShader == 0 )
  175. {
  176. return 0;
  177. }
  178.  
  179. // Load the shader source
  180. GLES30.glShaderSource ( dShader, sShaderSrc );
  181.  
  182. // Compile the shader
  183. GLES30.glCompileShader ( dShader );
  184.  
  185. // Check the compile status
  186. GLES30.glGetShaderiv( dShader, GLES30.GL_COMPILE_STATUS, dCompiled, 0 );
  187.  
  188. if ( dCompiled[0] == 0 )
  189. {
  190. Log.e ( TAG, GLES30.glGetShaderInfoLog ( dShader ) );
  191.  
  192. GLES30.glDeleteShader ( dShader );
  193.  
  194. return 0;
  195. }
  196.  
  197. return dShader;
  198. }
  199.  
  200. float[] fOrthoM = new float[16];
  201.  
  202. private int dProgramObject1;
  203.  
  204. private int mWidth;
  205.  
  206. private int mHeight;
  207.  
  208. private FloatBuffer fSampleVertices;
  209.  
  210. private final float[] fSampleVerticesData =
  211. { .8f, .8f, 0.0f, -.8f, .8f, 0.0f, -.8f, -.8f, 0.0f };
  212.  
  213. private FloatBuffer fBoardOuter;
  214.  
  215. private final float[] fBoardOuterData = new float[18];
  216.  
  217. int muMVPMatrixHandle;
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement