Advertisement
Tavi33

EGIOC L6 - work at lab

Mar 31st, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.70 KB | None | 0 0
  1. package cg.square;
  2.  
  3. import android.content.Context;
  4. import android.opengl.GLSurfaceView;
  5.  
  6. import javax.microedition.khronos.egl.EGLConfig;
  7. import javax.microedition.khronos.opengles.GL10;
  8. import javax.microedition.khronos.opengles.GL11;
  9.  
  10. /**
  11. * Created by P17-10 on 3/31/2017.
  12. */
  13. public class SquareRenderer implements GLSurfaceView.Renderer{
  14.  
  15. private Square square;
  16. private Square square2;
  17. private float mTransY;
  18. private float mAngle;
  19. private Context context;
  20.  
  21. public final static int SS_SUNLIGHT = GL10.GL_LIGHT0;
  22.  
  23. public SquareRenderer(Context context) {
  24. this.context = context;
  25.  
  26. float squareColorsYMCA[] = {
  27. 1.0f, 1.0f, 0.0f, 1.0f,
  28. 0.0f, 1.0f, 1.0f, 1.0f,
  29. 0.0f, 0.0f, 0.0f, 1.0f,
  30. 1.0f, 0.0f, 1.0f, 1.0f
  31. };
  32.  
  33. float squareColorsRGBA[] = {
  34. 1.0f, 0.0f, 0.0f, 1.0f,
  35. 0.0f, 1.0f, 0.0f, 1.0f,
  36. 0.0f, 0.0f, 1.0f, 1.0f,
  37. 1.0f, 1.0f, 1.0f, 1.0f
  38. };
  39.  
  40. this.square = new Square(squareColorsYMCA);
  41. //this.square2 = new Square(squareColorsRGBA);
  42.  
  43. }
  44.  
  45. @Override
  46. public void onSurfaceCreated(GL10 gl, EGLConfig config) {
  47. //gl.glDisable(GL10.GL_DITHER);
  48. gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
  49. gl.glClearColor(256, 256, 256, 256);
  50. gl.glEnable(GL10.GL_CULL_FACE);
  51.  
  52. gl.glShadeModel(GL10.GL_SMOOTH);
  53. gl.glEnable(GL10.GL_DEPTH_TEST);
  54.  
  55. int resid = R.drawable.hedly;
  56. //square.createTexture(gl, this.context, resid);
  57.  
  58. int resid2 = R.drawable.splash;
  59. //square2.createTexture(gl, this.context, resid2);
  60.  
  61. //square.setTextures(gl, context, resid, resid2);
  62. }
  63.  
  64. @Override
  65. public void onSurfaceChanged(GL10 gl, int width, int height) {
  66. gl.glViewport(0, 0, width, height);
  67. gl.glMatrixMode(GL10.GL_PROJECTION);
  68. gl.glLoadIdentity();
  69. float ratio = (float) width / height;
  70. gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
  71. }
  72.  
  73. /*
  74.  
  75. private void initLighting(GL10 gl) {
  76. float[] green = {1.0f, 1.0f, 1.0f, 1.0f};
  77. float[] position = {0.0f, 5.0f, 0.0f, 1.0f};
  78. float[] red = {1.0f, 0.0f, 0,0f, 1.0f};
  79.  
  80. gl.glLightfv(SS_SUNLIGHT, GL10.GL_POSITION, makeFloatBuffer(position));
  81. gl.glLightfv(SS_SUNLIGHT, GL10.GL_DIFFUSE, makeFloatBuffer(green));
  82.  
  83. //gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, makeFloatBuffer(red));
  84.  
  85. //gl.glLightfv(SS_SUNLIGHT,GL10.GL_SPECULAR, makeFloatBuffer(red));
  86.  
  87. //gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, makeFloatBuffer(green));
  88.  
  89. gl.glShadeModel(GL10.GL_SMOOTH);
  90. gl.glEnable(GL10.GL_LIGHTING);
  91. gl.glEnable(SS_SUNLIGHT);
  92. //gl.glEnable(GL10.GL_COLOR_MATERIAL);
  93. }
  94.  
  95. protected static FloatBuffer makeFloatBuffer(float[] array) {
  96. ByteBuffer bb = ByteBuffer.allocateDirect(array.length*4);
  97. bb.order(ByteOrder.nativeOrder());
  98. FloatBuffer fb = bb.asFloatBuffer();
  99. fb.put(array);
  100. fb.position(0);
  101.  
  102. return fb;
  103.  
  104. }
  105. */
  106.  
  107. @Override
  108. public void onDrawFrame(GL10 gl) {
  109.  
  110.  
  111. /*
  112. gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
  113. gl.glMatrixMode(GL10.GL_MODELVIEW);
  114. gl.glLoadIdentity();
  115. gl.glTranslatef(0.0f, (float) Math.sin(mTransY), -3.0f);
  116. mTransY += 0.075f;
  117.  
  118. gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  119. gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
  120. square.draw(gl);
  121. */
  122.  
  123.  
  124. gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
  125. gl.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
  126. gl.glMatrixMode(GL11.GL_MODELVIEW);
  127.  
  128. gl.glEnable(GL10.GL_BLEND);
  129.  
  130. gl.glLoadIdentity();
  131. gl.glTranslatef(0.0f, (float) Math.sin(mTransY), -3.0f);
  132. gl.glColor4f(1.0f, 0.0f, 0.0f, 0.50f);
  133. square.draw(gl);
  134. mTransY += .075f;
  135.  
  136.  
  137.  
  138. gl.glLoadIdentity();
  139. gl.glTranslatef((float)(Math.sin(mTransY)/2.0f),0.0f, -2.9f);
  140. gl.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
  141. //gl.glColorMask(true, false, true, true);
  142. square.draw(gl);
  143. mTransY += .075f;
  144.  
  145.  
  146. }
  147. }
  148.  
  149.  
  150.  
  151.  
  152. package cg.square;
  153.  
  154. import android.content.Context;
  155. import android.graphics.Bitmap;
  156. import android.graphics.BitmapFactory;
  157. import android.opengl.GLUtils;
  158.  
  159. import java.nio.ByteBuffer;
  160. import java.nio.ByteOrder;
  161. import java.nio.FloatBuffer;
  162.  
  163. import javax.microedition.khronos.opengles.GL10;
  164. import javax.microedition.khronos.opengles.GL11;
  165.  
  166. /**
  167. * Created by P17-10 on 3/31/2017.
  168. */
  169. public class Square {
  170. private FloatBuffer mFVertexBuffer;
  171. private ByteBuffer mColorBuffer;
  172. private ByteBuffer mIndexBuffer;
  173.  
  174. private FloatBuffer mColorBufferFloat;
  175.  
  176. public FloatBuffer mTextureBuffer;
  177.  
  178. private int mTexture0;
  179. private int mTexture1;
  180.  
  181. float[] textureCoords = {
  182. 0.0f, 0.0f,
  183. 1.0f, 0.0f,
  184. 0.0f, 1.0f,
  185. 1.0f, 1.0f
  186. };
  187.  
  188. private int[] textures = new int[1];
  189.  
  190. public Square(float colorsArray[]) {
  191. float vertices[] = {
  192. -1.0f, -1.0f,
  193. 1.0f, -1.0f,
  194. -1.0f, 1.0f,
  195. 1.0f, 1.0f
  196. };
  197.  
  198. byte maxColor=(byte)255;
  199. byte colors[] = {
  200. maxColor, 0, maxColor, 0,
  201. maxColor, 0, maxColor, 0,
  202. maxColor, 0, maxColor, 0,
  203. maxColor, 0, maxColor, 0,
  204. };
  205.  
  206. byte indices[] = {
  207. 0, 3, 1,
  208. 0, 2, 3
  209. };
  210.  
  211. ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
  212. vbb.order(ByteOrder.nativeOrder());
  213. mFVertexBuffer = vbb.asFloatBuffer();
  214. mFVertexBuffer.put(vertices);
  215. mFVertexBuffer.position(0);
  216.  
  217. mColorBuffer = ByteBuffer.allocateDirect(colors.length);
  218. mColorBuffer.put(colors);
  219. mColorBuffer.position(0);
  220.  
  221. ByteBuffer cbb = ByteBuffer.allocateDirect(colorsArray.length * 4);
  222. cbb.order(ByteOrder.nativeOrder());
  223. mColorBufferFloat = cbb.asFloatBuffer();
  224. mColorBufferFloat.put(colorsArray);
  225. mColorBufferFloat.position(0);
  226.  
  227. mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
  228. mIndexBuffer.put(indices);
  229. mIndexBuffer.position(0);
  230.  
  231. ByteBuffer tbb = ByteBuffer.allocateDirect(textureCoords.length * 4);
  232. tbb.order(ByteOrder.nativeOrder());
  233. mTextureBuffer = tbb.asFloatBuffer();
  234. mTextureBuffer.put(textureCoords);
  235. mTextureBuffer.position(0);
  236. }
  237.  
  238. public void draw(GL10 gl) {
  239. /** Texture stuff
  240. gl.glEnable(GL10.GL_TEXTURE_2D);
  241. gl.glBindTexture(GL10.GL_TEXTURE_2D, mTexture0);
  242. gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
  243. gl.glFrontFace(GL11.GL_CW);
  244. gl.glVertexPointer(2, GL11.GL_FLOAT, 0, mFVertexBuffer);
  245. gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  246. //gl.glColorPointer(4, GL11.GL_FLOAT, 0, mColorBuffer);
  247. gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
  248. gl.glClientActiveTexture(GL10.GL_TEXTURE0);
  249. gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer);
  250. gl.glClientActiveTexture(GL10.GL_TEXTURE1);
  251. gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer);
  252.  
  253. multiTexture(gl, mTexture0, mTexture1);
  254.  
  255. gl.glDrawElements(GL11.GL_TRIANGLES, 6, GL11.GL_UNSIGNED_BYTE, mIndexBuffer);
  256. gl.glFrontFace(GL11.GL_CCW);*/
  257.  
  258.  
  259. //FrontFace
  260. gl.glFrontFace(GL11.GL_CCW);
  261.  
  262. //Pointer
  263. gl.glVertexPointer(2, GL11.GL_FLOAT, 0, mFVertexBuffer);
  264. //gl.glColorPointer(4, GL11.GL_UNSIGNED_BYTE, 0, mColorBuffer);
  265. //gl.glColorPointer(4, GL11.GL_FLOAT, 0, mColorBufferFloat);
  266.  
  267. //ClientState
  268. gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
  269. //gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
  270.  
  271. //Blend
  272. gl.glEnable(GL10.GL_BLEND);
  273. gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
  274. //gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE);
  275.  
  276. //gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
  277. //gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer);
  278.  
  279. //gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
  280.  
  281. gl.glDrawElements(gl.GL_TRIANGLES, 6, gl.GL_UNSIGNED_BYTE, mIndexBuffer);
  282.  
  283. }
  284.  
  285. private void multiTexture(GL10 gl, int tex0, int tex1) {
  286. float combineParameter = GL10.GL_DECAL;
  287.  
  288. gl.glActiveTexture(GL10.GL_TEXTURE0);
  289. gl.glBindTexture(GL10.GL_TEXTURE_2D, tex0);
  290. gl.glActiveTexture(GL10.GL_TEXTURE1);
  291. gl.glBindTexture(GL10.GL_TEXTURE_2D, tex1);
  292.  
  293. gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, combineParameter);
  294. }
  295.  
  296.  
  297. public int createTexture(GL10 gl, Context contextRegf, int resource) {
  298. Bitmap image = BitmapFactory.decodeResource(contextRegf.getResources(), resource);
  299. gl.glGenTextures(1, textures, 0);
  300. gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
  301. GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, image, 0);
  302.  
  303. gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
  304. gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
  305. image.recycle();
  306.  
  307. return textures[0];
  308. }
  309.  
  310. public void setTextures(GL10 gl, Context context, int resourceID0, int resourceID1) {
  311. mTexture0 = createTexture(gl,context,resourceID0);
  312. mTexture1 = createTexture(gl,context,resourceID1);
  313. }
  314. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement