First file:
Using java Syntax Highlighting
- public class TriangleDemo extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mGLView=new GLSurfaceView(this);
- mGLView.setEGLConfigChooser(false);
- mGLView.setRenderer(new TriangleRenderer(this));
- setContentView(mGLView);
- }
- @Override
- protected void onPause() {
- super.onPause();
- mGLView.onPause();
- }
- @Override
- protected void onResume() {
- super.onResume();
- mGLView.onResume();
- }
- private GLSurfaceView mGLView;
- }
Parsed in 0.033 seconds, using GeSHi 1.0.8.4
Second file:
Using java Syntax Highlighting
- public class TriangleRenderer extends GLSurfaceView implements GLSurfaceView.Renderer{
- public TriangleRenderer(Context context) {
- super(context);
- mContext = context;
- mTriangle = new Triangle();
- mTriangle2 = new Triangle2();
- }
- public boolean onTouchEvent(final MotionEvent event) {
- queueEvent(new Runnable(){
- public void run() {
- transX = event.getX();
- transY = event.getY();
- }});
- return true;
- }
- int[] textures;
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- /*
- * By default, OpenGL enables features that improve quality
- * but reduce performance. One might want to tweak that
- * especially on software renderer.
- */
- gl.glDisable(GL10.GL_DITHER);
- gl.glTexEnvx(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE,
- GL10.GL_MODULATE);
- gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT);
- gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT);
- /*
- * Some one-time OpenGL initialization can be made here
- * probably based on features of this particular context
- */
- gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
- GL10.GL_NICEST);
- gl.glClearColor(.5f, .5f, .5f, 1);
- gl.glShadeModel(GL10.GL_SMOOTH);
- gl.glEnable(GL10.GL_DEPTH_TEST);
- gl.glEnable(GL10.GL_TEXTURE_2D);
- /*
- * Create our texture. This has to be done each time the
- * surface is created.
- */
- int num = 2;
- textures = new int[num];
- gl.glGenTextures(num, textures, 0);
- for(int i = 0; i < num; i++)
- {
- gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[i]);
- gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,GL10.GL_NEAREST);
- gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MAG_FILTER,GL10.GL_LINEAR);
- InputStream is;
- if(i == 0)
- is = mContext.getResources().openRawResource(R.drawable.none);
- else
- is = mContext.getResources().openRawResource(R.drawable.square);
- Bitmap bitmap;
- try {
- bitmap = BitmapFactory.decodeStream(is);
- } finally {
- try {
- is.close();
- } catch(IOException e) {
- // Ignore.
- }
- }
- GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
- bitmap.recycle();
- }
- }
- float transparency = 0;
- float transX = 0, transY = 0;
- public void onDrawFrame(GL10 gl) {
- /*
- * By default, OpenGL enables features that improve quality
- * but reduce performance. One might want to tweak that
- * especially on software renderer.
- */
- /*
- * Usually, the first thing one might want to do is to clear
- * the screen. The most efficient way of doing this is to use
- * glClear().
- */
- gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
- /*
- * Now we're ready to draw some 3D objects
- */
- gl.glMatrixMode(GL10.GL_MODELVIEW);
- gl.glLoadIdentity();
- GLU.gluLookAt(gl, 0, 0, 5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
- gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
- gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[1]);
- long time = SystemClock.uptimeMillis() % 4000L;
- float angle = 0.090f * ((int) time) / 100;
- gl.glDisable(gl.GL_BLEND);
- mTriangle.draw(gl);
- gl.glEnable(gl.GL_BLEND);
- if(transparency < 1)
- transparency += 0.05f;
- else
- transparency = 1;
- gl.glColor4f(1.0f,1.0f,1.0f, transparency);
- gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA);
- gl.glTranslatef(transX, transY, 0);
- gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
- mTriangle2.draw(gl);
- }
- public void onSurfaceChanged(GL10 gl, int w, int h) {
- gl.glViewport(0, 0, w, h);
- /*
- * Set our projection matrix. This doesn't have to be done
- * each time we draw, but usually a new projection needs to
- * be set when the viewport is resized.
- */
- float ratio = (float) w / h;
- gl.glMatrixMode(GL10.GL_PROJECTION);
- gl.glLoadIdentity();
- GLU.gluPerspective(gl,60,ratio,0.1f,1000);
- }
- private Context mContext;
- private Triangle mTriangle;
- private Triangle2 mTriangle2;
- }
- class Triangle {
- public Triangle() {
- // Buffers to be passed to gl*Pointer() functions
- // must be direct, i.e., they must be placed on the
- // native heap where the garbage collector cannot
- // move them.
- //
- // Buffers with multi-byte datatypes (e.g., short, int, float)
- // must have their byte order set to native order
- ByteBuffer vbb = ByteBuffer.allocateDirect(VERTS * 3 * 4);
- vbb.order(ByteOrder.nativeOrder());
- mFVertexBuffer = vbb.asFloatBuffer();
- ByteBuffer tbb = ByteBuffer.allocateDirect(VERTS * 2 * 4);
- tbb.order(ByteOrder.nativeOrder());
- mTexBuffer = tbb.asFloatBuffer();
- ByteBuffer ibb = ByteBuffer.allocateDirect(VERTS * 2);
- ibb.order(ByteOrder.nativeOrder());
- mIndexBuffer = ibb.asShortBuffer();
- // A unit-sided equalateral triangle centered on the origin.
- float[] coords = {
- -1f, -1f, 0,
- 1f, -1f, 0,
- -1f, 1f, 0,
- 1f, 1f, 0
- };
- for (int i = 0; i < VERTS; i++) {
- for(int j = 0; j < 3; j++) {
- mFVertexBuffer.put(coords[i*3+j] * 2.0f);
- }
- }
- for (int i = 0; i < VERTS; i++) {
- for(int j = 0; j < 2; j++) {
- mTexBuffer.put(coords[i*3+j] * 2.0f);
- }
- }
- for(int i = 0; i < VERTS; i++) {
- mIndexBuffer.put((short) i);
- }
- mFVertexBuffer.position(0);
- mTexBuffer.position(0);
- mIndexBuffer.position(0);
- }
- public void draw(GL10 gl) {
- gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mFVertexBuffer);
- gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTexBuffer);
- gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, VERTS,
- GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- }
- private final static int VERTS = 4;
- private FloatBuffer mFVertexBuffer;
- private FloatBuffer mTexBuffer;
- private ShortBuffer mIndexBuffer;
- }
- class Triangle2 {
- public Triangle2() {
- // Buffers to be passed to gl*Pointer() functions
- // must be direct, i.e., they must be placed on the
- // native heap where the garbage collector cannot
- // move them.
- //
- // Buffers with multi-byte datatypes (e.g., short, int, float)
- // must have their byte order set to native order
- ByteBuffer vbb = ByteBuffer.allocateDirect(VERTS * 3 * 4);
- vbb.order(ByteOrder.nativeOrder());
- mFVertexBuffer = vbb.asFloatBuffer();
- ByteBuffer tbb = ByteBuffer.allocateDirect(VERTS * 2 * 4);
- tbb.order(ByteOrder.nativeOrder());
- mTexBuffer = tbb.asFloatBuffer();
- ByteBuffer ibb = ByteBuffer.allocateDirect(VERTS * 2);
- ibb.order(ByteOrder.nativeOrder());
- mIndexBuffer = ibb.asShortBuffer();
- float[] a11 = {
- -1f, 1f, 0,
- -0.5f, 1f, 0,
- -1f, 0.5f, 0,
- -0.5f, 0.5f, 0
- };
- for (int i = 0; i < VERTS; i++) {
- for(int j = 0; j < 3; j++) {
- mFVertexBuffer.put(a11[i*3+j] * 2.0f);
- }
- }
- for (int i = 0; i < VERTS; i++) {
- for(int j = 0; j < 2; j++) {
- mTexBuffer.put(a11[i*3+j] * 2.0f);
- }
- }
- for(int i = 0; i < VERTS; i++) {
- mIndexBuffer.put((short) i);
- }
- mFVertexBuffer.position(0);
- mTexBuffer.position(0);
- mIndexBuffer.position(0);
- }
- public void draw(GL10 gl) {
- gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mFVertexBuffer);
- gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTexBuffer);
- gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, VERTS,
- GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
- }
- private final static int VERTS = 4;
- private FloatBuffer mFVertexBuffer;
- private FloatBuffer mTexBuffer;
- private ShortBuffer mIndexBuffer;
- }
Parsed in 0.063 seconds, using GeSHi 1.0.8.4

