Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.67 KB | None | 0 0
  1. BOUNCY SQUARE ACTIVITY
  2.  
  3. package cg.square;
  4.  
  5. import android.app.Activity;
  6. import android.opengl.GLSurfaceView;
  7. import android.os.Bundle;
  8. import android.view.WindowManager;
  9.  
  10. public class BouncySquareActivity extends Activity {
  11.  
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  16. WindowManager.LayoutParams.FLAG_FULLSCREEN);
  17. GLSurfaceView view = new GLSurfaceView(this);
  18. view.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
  19. view.setRenderer(new SquareRenderer(this.getApplicationContext()));
  20. setContentView(view);
  21. }
  22. }
  23.  
  24. SQUARE
  25.  
  26. package cg.square;
  27.  
  28. import java.nio.ByteBuffer;
  29. import java.nio.ByteOrder;
  30. import java.nio.FloatBuffer;
  31.  
  32. import android.content.Context;
  33. import android.graphics.*;
  34. import android.opengl.*;
  35. import javax.microedition.khronos.opengles.GL10;
  36. import javax.microedition.khronos.opengles.GL11;
  37.  
  38. public class Square {
  39. private FloatBuffer mFVertexBuffer;
  40. private ByteBuffer mColorBuffer;
  41. private ByteBuffer mIndexBuffer;
  42. private int mTexture0, mTexture1;
  43.  
  44. public FloatBuffer mTextureBuffer;
  45. float[] textureCoords =
  46. {
  47. 0.0f, 0.0f,
  48. 1.0f, 0.0f,
  49. 0.0f, 1.0f,
  50. 1.0f, 1.0f
  51. };
  52. float texIncrease;
  53. int[] textures = new int[1];
  54.  
  55. public Square(){
  56. float vertices[] =
  57. {
  58. -1.0f, -1.0f,
  59. 1.0f, -1.0f,
  60. -1.0f, 1.0f,
  61. 1.0f, 1.0f,
  62. };
  63. byte maxColor=(byte)255;
  64. byte colors[] =
  65. {
  66. 0, 0, 0, maxColor,
  67. maxColor, 0, 0, maxColor,
  68. 0, 0, 0, maxColor,
  69. maxColor, 0, 0, maxColor,
  70. };
  71. byte indices[] =
  72. {
  73. 0, 3, 1,
  74. 0, 2, 3
  75. };
  76. ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
  77. vbb.order(ByteOrder.nativeOrder());
  78. mFVertexBuffer = vbb.asFloatBuffer();
  79. mFVertexBuffer.put(vertices);
  80. mFVertexBuffer.position(0);
  81.  
  82. mColorBuffer = ByteBuffer.allocateDirect(colors.length);
  83. mColorBuffer.put(colors);
  84. mColorBuffer.position(0);
  85.  
  86. mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
  87. mIndexBuffer.put(indices);
  88. mIndexBuffer.position(0);
  89.  
  90. ByteBuffer tbb = ByteBuffer.allocateDirect(textureCoords.length * 4);
  91. tbb.order(ByteOrder.nativeOrder());
  92. mTextureBuffer = tbb.asFloatBuffer();
  93. mTextureBuffer.put(textureCoords);
  94. mTextureBuffer.position(0);
  95. }
  96.  
  97. public void draw(GL10 gl){
  98. gl.glEnable(GL10.GL_TEXTURE_2D);
  99. gl.glBindTexture(GL10.GL_TEXTURE_2D, mTexture0);
  100. gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
  101. gl.glFrontFace(GL11.GL_CW);
  102. gl.glVertexPointer(2, GL11.GL_FLOAT, 0, mFVertexBuffer);
  103. gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  104. // gl.glColorPointer(4, GL11.GL_FLOAT, 0, mColorBuffer);
  105. // gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
  106. gl.glClientActiveTexture(GL10.GL_TEXTURE0);
  107. gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer);
  108. gl.glClientActiveTexture(GL10.GL_TEXTURE1);
  109. gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer);
  110. multiTexture(gl,mTexture0,mTexture1);
  111. gl.glDrawElements(GL11.GL_TRIANGLES, 6, GL11.GL_UNSIGNED_BYTE, mIndexBuffer);
  112. gl.glFrontFace(GL11.GL_CCW);
  113. }
  114.  
  115. public void setTextures(GL10 gl, Context context, int resourceID0, int resourceID1){
  116. mTexture0 = createTexture(gl,context,resourceID0);
  117. mTexture1 = createTexture(gl,context,resourceID1);
  118. }
  119.  
  120. public int createTexture(GL10 gl, Context contextRegf, int resource){
  121. Bitmap image = BitmapFactory.decodeResource(contextRegf.getResources(), resource);
  122. gl.glGenTextures(1, textures, 0);
  123. gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
  124. GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, image, 0);
  125. gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
  126. gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
  127. image.recycle();
  128. return textures[0];
  129. }
  130.  
  131. public void multiTexture(GL10 gl, int tex0, int tex1){
  132. float combineParameter = GL10.GL_BLEND;
  133. gl.glActiveTexture(GL10.GL_TEXTURE0);
  134. gl.glBindTexture(GL10.GL_TEXTURE_2D, tex0);
  135. gl.glActiveTexture(GL10.GL_TEXTURE1);
  136. gl.glBindTexture(GL10.GL_TEXTURE_2D, tex1);
  137. gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, combineParameter);
  138. }
  139. }
  140.  
  141. SQUARE RENDERER
  142.  
  143. package cg.square;
  144.  
  145. import javax.microedition.khronos.opengles.GL10;
  146. import javax.microedition.khronos.egl.EGLConfig;
  147. import javax.microedition.khronos.opengles.GL11;
  148.  
  149. import android.content.Context;
  150. import android.opengl.GLSurfaceView;
  151. import java.lang.Math;
  152.  
  153. public class SquareRenderer implements GLSurfaceView.Renderer{
  154.  
  155. private Square mSquare1, mSquare2;
  156. private float mTransY;
  157. private Context context;
  158. public SquareRenderer(Context context){
  159. this.context=context;
  160. mSquare1 = new Square();
  161. }
  162.  
  163. public void onDrawFrame(GL10 gl){
  164. gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
  165. gl.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
  166. gl.glMatrixMode(GL11.GL_MODELVIEW);
  167. gl.glLoadIdentity();
  168. gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  169. gl.glTranslatef(0.0f,(float)Math.sin(mTransY), -3.0f);
  170. mSquare1.draw(gl);
  171. mTransY += .075f;
  172. }
  173.  
  174. public void onSurfaceChanged(GL10 gl, int width, int height){
  175. gl.glViewport(0, 0, width, height);
  176. gl.glMatrixMode(GL10.GL_PROJECTION);
  177. gl.glLoadIdentity();
  178. float ratio = (float) width / height;
  179. gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
  180. }
  181.  
  182. public void onSurfaceCreated(GL10 gl, EGLConfig config){
  183. gl.glDisable(GL10.GL_DITHER);
  184. gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
  185. gl.glClearColor(0,0,0,0);
  186. gl.glEnable(GL10.GL_CULL_FACE);
  187. gl.glShadeModel(GL10.GL_SMOOTH);
  188. gl.glEnable(GL10.GL_DEPTH_TEST);
  189.  
  190. int resid = R.drawable.hedly;
  191. int resid1 = R.drawable.splash;
  192. mSquare1.setTextures(gl, this.context, resid,resid1);
  193. }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement