android gl11,Android OpenGL 学习笔记 --开始篇

packagecom.terry;importjava.nio.IntBuffer;importjavax.microedition.khronos.egl.EGLConfig;importjavax.microedition.khronos.opengles.GL10;importandroid.opengl.GLSurfaceView.Renderer;publicclassGLRenderimplementsRenderer{floatrotateTri,rotateQuad;intone=0x10000;//三角形的一个顶点privateIntBuffer triggerBuffer=IntBuffer.wrap(newint[]{0,one,0,//上顶点-one,-one,0,//左顶点one,-one,0//右下点});//正方形的四个顶点privateIntBuffer quateBuffer=IntBuffer.wrap(newint[]{

one,one,0,-one,-one,0,

one,-one,0,-one,-one,0});privateIntBuffer colorBuffer=IntBuffer.wrap(newint[]{

one,0,0,one,0,one,0,one,0,0,one,one

});

@OverridepublicvoidonDrawFrame(GL10 gl) {//TODO Auto-generated method stub//清除屏幕和深度缓存gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);//重置当前的模型观察矩阵gl.glLoadIdentity();//左移 1.5 单位,并移入屏幕 6.0gl.glTranslatef(-1.5f,0.0f,-6.0f);//设置旋转gl.glRotatef(rotateTri,0.0f,1.0f,0.0f);//设置定点数组gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);//设置颜色数组gl.glEnableClientState(GL10.GL_COLOR_ARRAY);

gl.glColorPointer(4, GL10.GL_FIXED,0, colorBuffer);//设置三角形顶点gl.glVertexPointer(3, GL10.GL_FIXED,0, triggerBuffer);//绘制三角形gl.glDrawArrays(GL10.GL_TRIANGLES,0,3);

gl.glDisableClientState(GL10.GL_COLOR_ARRAY);//绘制三角形结束gl.glFinish();/***********************//*渲染正方形*///重置当前的模型观察矩阵gl.glLoadIdentity();//左移 1.5 单位,并移入屏幕 6.0gl.glTranslatef(1.5f,0.0f,-6.0f);//设置当前色为蓝色gl.glColor4f(0.5f,0.5f,1.0f,1.0f);//设置旋转gl.glRotatef(rotateQuad,1.0f,0.0f,0.0f);//设置和绘制正方形gl.glVertexPointer(3, GL10.GL_FIXED,0, quateBuffer);

gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4);//绘制正方形结束gl.glFinish();//取消顶点数组gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);//改变旋转的角度rotateTri+=0.5f;

rotateQuad-=0.5f;

}

@OverridepublicvoidonSurfaceChanged(GL10 gl,intwidth,intheight) {//TODO Auto-generated method stubfloatratio=(float) width/height;//设置OpenGL场景的大小gl.glViewport(0,0, width, height);//设置投影矩阵gl.glMatrixMode(GL10.GL_PROJECTION);//重置投影矩阵gl.glLoadIdentity();//设置视口的大小gl.glFrustumf(-ratio, ratio,-1,1,1,10);//选择模型观察矩阵gl.glMatrixMode(GL10.GL_MODELVIEW);//重置模型观察矩阵gl.glLoadIdentity();

}

@OverridepublicvoidonSurfaceCreated(GL10 gl, EGLConfig config) {//TODO Auto-generated method stub//启用阴影平滑gl.glShadeModel(GL10.GL_SMOOTH);//黑色背景gl.glClearColor(0,0,0,0);//设置深度缓存gl.glClearDepthf(1.0f);//启用深度测试gl.glEnable(GL10.GL_DEPTH_TEST);//所作深度测试的类型gl.glDepthFunc(GL10.GL_LEQUAL);//告诉系统对透视进行修正gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
opengles是一种用于在移动设备和嵌入式系统上实现2D和3D图形渲染的图形库。而gl-transitions是一个开源的OpenGL库,用于创建平滑过渡效果,可以应用于图像、视频等多种媒体内容。 要将gl-transitions移植到opengles上,需要进行以下步骤: 1. 确定opengles版本:gl-transitions可能使用的是OpenGL的较新版本,而opengles可能只支持较旧的版本。因此,首先需要确定opengles版本,并了解其与OpenGL之间的差异。 2. 了解gl-transitions的实现:深入了解gl-transitions的实现方式和代码结构,理解其对OpenGL的使用方式和功能。 3. 理解opengles的API:熟悉opengles的API,包括顶点/片段着色器、缓冲区对象、纹理对象等。理解opengles的渲染管线和数据传递方式,以便能够正确地将gl-transitions移植到opengles上。 4. 逐步移植:根据gl-transitions的实现和opengles的API,逐步将gl-transitions的代码移植为opengles可用的代码。这可能涉及到对着色器代码的修改、纹理对象的创建和绑定、缓冲区对象的使用等。 5. 调试和测试:移植完成后,进行调试和测试以确保移植后的代码在opengles上正常工作,并且能够正确地渲染出所需的过渡效果。 需要注意的是,由于较新版本的OpenGL可能具有一些opengles不支持的功能,因此在移植过程中可能需要做一些功能的调整或替代。此外,移植过程中可能还需要考虑设备的性能和兼容性问题,确保移植后的代码能够在目标设备上流畅地运行。 总结起来,将gl-transitions移植到opengles上需要对opengles的API有很好的了解,并根据它的渲染方式和数据传递方式对gl-transitions的代码进行适当的修改和调整。这样才能确保移植后的代码能够在opengles上正常运行并呈现出所需的过渡效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值