本教程及后续教程全部参考或者转载于:OpenGL ES Tutorial for Android

本例相当于openGL的HelloWorld程序。

先贴代码,代码中的注释比较具体了。

主Activity类:

package seven.demo.openglhelloworld;import android.app.Activity;import android.opengl.GLSurfaceView;import android.os.Bundle;import android.view.Menu;public class OpenGLDemo extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        GLSurfaceView view = new GLSurfaceView(this);        view.setRenderer(new OpenGLRenderer());        setContentView(view);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_open_gldemo, menu);        return true;    }}

OpenGLRenderer类,实现Renderer接口:

package seven.demo.openglhelloworld;import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;import android.opengl.GLSurfaceView.Renderer;import android.opengl.GLU;/** * 类描述: 功能详细描述: *  * @author mengsifan * @date [2012-8-29] */public class OpenGLRenderer implements Renderer {    /**     * {@inheritDoc} 在这个方法中主要用来设置一些绘制时不常变化的参数,比如:背景色,是否打开 z-buffer等。     */    @Override    public void onSurfaceCreated(GL10 gl, EGLConfig config) {        // 设置背景色        gl.glClearColor(.0f, .0f, .0f, .5f);        /*         * 设置着色模式。参数mode可以是GL_SMOOTH(默认值)或GL_FLAT。         * 采用恒定着色时(即GL_FLAT),使用图元中某个顶点的颜色来渲染整个图元。         */        gl.glShadeModel(GL10.GL_SMOOTH);        // Depth buffer setup.        gl.glClearDepthf(1.0f);        // Enables depth testing.        gl.glEnable(GL10.GL_DEPTH_TEST);        // The type of depth testing to do.        gl.glDepthFunc(GL10.GL_LEQUAL);        // Really nice perspective calculations.        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);    }    /**     * {@inheritDoc} 如果设备支持屏幕横向和纵向切换,这个方法将发生在横向<->纵向互换时。此时可以重新设置绘制的纵横比率。     */    @Override    public void onSurfaceChanged(GL10 gl, int width, int height) {        /*         * glViewport(GLint x,GLint y,GLsizei width,GLsizei height)为其函数原型。         * X,Y————以像素为单位,指定了视口的左下角位置。         * width,height————表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。         */        gl.glViewport(0, 0, width, height);        /*         * glMatrixMode设置当前矩阵模式 :         * GL_MODELVIEW:对模型视景矩阵堆栈应用随后的矩阵操作。         * GL_PROJECTION:对投影矩阵应用随后的矩阵操作。           * GL_TEXTURE:对纹理矩阵堆栈应用随后的矩阵操作。         * 注意:与glLoadIdentity()一同使用。         */        gl.glMatrixMode(GL10.GL_PROJECTION);        // 重置当前指定的矩阵为单位矩阵        gl.glLoadIdentity();        // 计算窗口宽高比例        GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,                100.0f);        gl.glMatrixMode(GL10.GL_MODELVIEW);        gl.glLoadIdentity();    }    /**     * {@inheritDoc} 定义实际的绘图操作。     */    @Override    public void onDrawFrame(GL10 gl) {        /*         * 可以使用 "|"运算符组合不同的缓冲标志位,表明需要清除的缓冲。 例如glClear(GL_COLOR_BUFFER_BIT |         * GL_DEPTH_BUFFER_BIT)表示要清除颜色缓冲以及深度缓冲。         */        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);    }}

更多相关文章

  1. 04.Android的数据存储操作
  2. Android:使用SAX或者DOM或者pull操作XML文件
  3. 【android】ORMLite框架 的使用方法---给你的数据库操作插上翅膀
  4. android学习笔记(4)-android的文件的操作模式与单元测试
  5. 在Visual Studio 2010/2012/2013/2015上使用C#开发Android/IOS安
  6. Android framework源码按键操作的完整流程
  7. android通用文件操作
  8. Android 中的网络操作(HttpURLConnection)

随机推荐

  1. 基于TCP和多线程实现无线鼠标键盘-Socket
  2. 学习Android中的Adapter
  3. Android完全退出应用程序
  4. Android版本对应的API号
  5. android实现页面下方的Tab效果
  6. 打开系统wifi设置界面
  7. Android实现开机自启动无效问题
  8. Android(安卓)颜色渲染(四) BitmapShader
  9. Android动态权限管理
  10. ue4 创建Android和ios ar应用