最近玩玩Android的openGL,做了点注释,有用看看,没有了无视

public class GL1 extends Activity {private GLSurfaceView mGLSurfaceView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mGLSurfaceView = new GLSurfaceView(this);mGLSurfaceView.setRenderer(new One());setContentView(mGLSurfaceView);}@Overrideprotected void onResume() {super.onResume();mGLSurfaceView.onResume();}@Overrideprotected void onPause() {super.onPause();mGLSurfaceView.onPause();}}/** * 渲染器 *  * @author yaoyuan *  */class One implements Renderer {private Square square;public One() {square = new Square();}/** * 初始化视图 */public void onDrawFrame(GL10 gl) {/* * 清空缓冲区预设值 *  * GL_COLOR_BUFFER_BIT 颜色缓冲区 *  * GL_DEPTH_BUFFER_BIT 深度缓冲区 *  * GL_STENCIL_BUFFER_BIT 模板缓冲区 */gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);gl.glLoadIdentity();//乘一个翻译矩阵代替当前的矩阵gl.glTranslatef(0.0f, 0.0f, -6.0f);//画图形square.draw(gl);}/** * 视图改变时调用 */public void onSurfaceChanged(GL10 gl, int width, int height) {if (height == 0) {height = 1;}gl.glViewport(0, 0, width, height);/** * 指定当前的矩阵模式 *  * GL_MODELVIEW 模型视图 GL_PROJECTION 投影 GL_TEXTURE 纹理 */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();}/** * 视图创建时调用 */public void onSurfaceCreated(GL10 gl, EGLConfig config) {/* * 设置阴影模式 1.GL_FLAT 扁平 2.GL_SMOOTH 平滑 */gl.glShadeModel(GL10.GL_SMOOTH);// 指定颜色缓冲区值gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);// 指定深度缓冲区值gl.glClearDepthf(1.0f);// 可用GL服务端功能gl.glEnable(GL10.GL_DEPTH_TEST);/* * 深度缓存比较 *  * GL_NEVER 不通过 *  * GL_LESS 如果传入的深度值小于存储深度的值,通过 *  * GL_EQUAL 如果传入的传递深度值等于存储的深度值,通过 *  * GL_LEQUAL 如果传入的深度值小于或等于存储的深度值,通过 *  * GL_GREATER 如果传入的深度值大于存储深度值更大,通过 *  * GL_NOTEQUAL 如果传入的深度值不等于存储深度值,通过 *  * GL_GEQUAL 如果传入的深度值大于或等于存储深度值,通过 *  * GL_ALWAYS 始终通过 */gl.glDepthFunc(GL10.GL_LEQUAL);// 指定特定于实现的提示gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);}}/** * 图形 *  * @author yaoyuan *  */class Square {private FloatBuffer vertexBuffer;private float vertices[] = { -1.0f, 1.0f, 0.0f,1.0f, 1.0f, 0.0f, -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f };public Square() {ByteBuffer byteBuf = ByteBuffer.allocateDirect(vertices.length * 4);byteBuf.order(ByteOrder.nativeOrder());vertexBuffer = byteBuf.asFloatBuffer();vertexBuffer.put(vertices);vertexBuffer.position(0);}public void draw(GL10 gl) {// 定义前、后面对(GL_CW顺时针、GL_CCW逆时针)gl.glFrontFace(GL10.GL_CW);// 定义一个定点坐标数组gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);/* * 启用客户端功能 *  * GL_COLOR_ARRAY 当glDrawArrays、glDrawElements被调用时,颜色数组可以被读写 *  * GL_NORMAL_ARRAY 当glDrawArrays、glDrawElements被调用时,普通数组可以被读写 *  * GL_TEXTURE_COORD_ARRAY 当glDrawArrays、glDrawElements被调用时,紋理數組可以被读写 *  * GL_VERTEX_ARRAY 当glDrawArrays、glDrawElements被调用时,矩阵数组可以被读写 */gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);// 从数组数据中渲染图元gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);// 禁用客户端功能gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);}}

更多相关文章

  1. Android下openGL操作矩阵的函数
  2. Android(安卓)系统图形栈(一): OpenGL ES 和 EGL 介绍
  3. Android上的OpenGL ES 使用错误 解决
  4. 【Android】OpenGL ES for Android(安卓)教程1 - HelloWorld
  5. Android(安卓)ImageView图片拖动效果
  6. android camera 各版本差异
  7. android的logcat详细用法
  8. [Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度
  9. [Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度

随机推荐

  1. android中限制EditText最大输入字节数
  2. ViewPager
  3. Activity为singleTask模式时的生命周期
  4. 软键盘弹出影响布局
  5. Android(安卓)接收开机广播启动service/a
  6. Android中Spinner根据value来选择选中项
  7. android 多线程 — IntentService
  8. Android第十讲笔记(WebView,SharedPreferen
  9. QMUI Android
  10. 分析 flutter 打包流程及 aar 产物,并将最