OpenGL ES andoid学习————1


package
com.xhm.getaccount; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.opengl.GLSurfaceView; import android.opengl.GLU; import android.opengl.GLSurfaceView.Renderer; /** * 控制显示界面,画,变幻,和创建 * * @author Administrator * */ public class MyOpenGL extends GLSurfaceView implements Renderer { private Context mContext; public MyOpenGL(Context context) { super(context); // TODO Auto-generated constructor stub // 设置渲染对象 this.mContext = context; setRenderer(this); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { // TODO Auto-generated method stub /** * 设置背景颜色,深度,和模版缓存,下边的gl.Clear()使用。 */ gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f); gl.glClearDepthf(1.0f); // gl.glClearStencil(sourceID); /** * 两点之间颜色绘制方式 * * GL_SMOOTH:如果两点的颜色不同则会过度适配 * * GL_FLAT:如果两点的颜色不同不会过度适配 */ gl.glShadeModel(GL10.GL_SMOOTH); /** * 开启深度测试 */ gl.glEnable(GL10.GL_DEPTH_TEST); /** * GL_NEVER:永不绘制 * * GL_LESS:如果目标像素z值<当前像素z值,则绘制目标像素 * * GL_EQUAL:如果目标像素z值=当前像素z值,则绘制目标像素 * * GL_LEQUAL:如果目标像素z值<=当前像素z值,则绘制目标像素 * * GL_GREATER :如果目标像素z值>当前像素z值,则绘制目标像素 * * GL_NOTEQUAL:如果目标像素z值<>当前像素z值,则绘制目标像素 * * GL_GEQUAL:如果目标像素z值>=当前像素z值,则绘制目标像素 * * GL_ALWAYS:总是绘制 */ gl.glDepthFunc(GL10.GL_LEQUAL); /** * 指定一个要控制其行为的功能的代指符号常量. 可接受的值有GL_GENERATE_MIPMAP_HINT(唯一) * * GL_FASTEST 选择最有效率的选项 * * GL_NICEST 选择最正确或者最高质量的选项 * * GL_DONT_CARE 不指定倾向 */ gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { // TODO Auto-generated method stub /** * 在屏幕的哪个区域显示,可以定义多个区域用于显示 */ gl.glViewport(0, 0, width, height); /** * 对某个矩阵进行操作,GL中的物体分为贴图,物体,阴影三个。 * * GL_PROJECTION是对投影矩阵操作 * * GL_MODELVIEW是对模型视景矩阵操作 * * GL_TEXTURE是对纹理矩阵进行随后的操作 * */ gl.glMatrixMode(GL10.GL_PROJECTION); /** * 调用glLoadIdentity()之后,您实际上将当前点移到了屏幕中心:类似于一个复位操作, * 其等同于用单位矩阵调用glLoadMatrix()。但是,在一些情况下,glLoadIdentity()更加效率 * * 1.X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。 * * 2.OpenGL屏幕中心的坐标值是X和Y轴上的0.0f点。 * * 3.中心左面的坐标值是负值,右面是正值。 移向屏幕顶端是正值,移向屏幕底端是负值。 移入屏幕深处是负值,移出屏幕则是正值。 */ gl.glLoadIdentity(); /** * 讲解 http://hi.baidu.com/korndorben/item/76c5020453f18212cc34ea90 */ GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f, 100.0f); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); } @Override public void onDrawFrame(GL10 gl) { // TODO Auto-generated method stub /** * 清理缓存到设置的背景属性 */ gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT); } }

 

posted @ 2013-10-15 15:59  有情怀的人  阅读(219)  评论(0编辑  收藏  举报