使用OPEN GL ES显示图形 -目录

安卓框架提供了大量的标准工具去创建迷人的,多用途的图用户接口。

然而如果你想更多控制你的应用程序在手机屏幕上绘制什么,或正在冒险去绘制3维图像。OPEN GL ES API通过安卓

框架提供了一组工具,显示高端的动态的图像,这些依赖你的想象力。兵器你可以从安卓设备上的加速的图像处理单元

受益。


本节带领你了解使用OPEN GL开发的基础,包括建立,绘制对象,移动绘制元素和响应触摸输入。


示例代码使用OPEN GL API 2.0


内容如下:

1)建立OPEN GL ES 环境

学习搭建一个安卓应用程序可以绘制OPEN GL 图形

2)定义形状

学习如何定义形状和为什么你需要知道FACE和WINDING

3)绘制图形

学习如何使用OPEN GL 

4)运用投影和摄像头视图

学习使用投影和摄像头去获取一个新的

5)添加动作

学习如何使用OPEN GL 做基本动作和动画

6)触发事件的响应

学习基本的事件响应处理

以下是一个简单的 Android 应用程序,使用 OpenGL ES 2.0 在屏幕上绘制一个彩色三角形: ```java import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.opengl.GLES20; import android.opengl.GLSurfaceView; import android.opengl.Matrix; public class MyGLRenderer implements GLSurfaceView.Renderer { private Triangle mTriangle; private Square mSquare; private final float[] mMVPMatrix = new float[16]; private final float[] mProjectionMatrix = new float[16]; private final float[] mViewMatrix = new float[16]; public void onSurfaceCreated(GL10 unused, EGLConfig config) { // Set the background frame color GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); mTriangle = new Triangle(); mSquare = new Square(); } public void onDrawFrame(GL10 unused) { // Redraw background color GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); // Set the camera position (View matrix) Matrix.setLookAtM(mViewMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f); // Calculate the projection and view transformation Matrix.multiplyMM(mMVPMatrix, 0, mProjectionMatrix, 0, mViewMatrix, 0); // Draw shape mTriangle.draw(mMVPMatrix); } public void onSurfaceChanged(GL10 unused, int width, int height) { GLES20.glViewport(0, 0, width, height); float ratio = (float) width / height; // this projection matrix is applied to object coordinates // in the onDrawFrame() method Matrix.frustumM(mProjectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7); } public static int loadShader(int type, String shaderCode){ // create a vertex shader type (GLES20.GL_VERTEX_SHADER) // or a fragment shader type (GLES20.GL_FRAGMENT_SHADER) int shader = GLES20.glCreateShader(type); // add the source code to the shader and compile it GLES20.glShaderSource(shader, shaderCode); GLES20.glCompileShader(shader); return shader; } public static void checkGlError(String glOperation) { int error; while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) { Log.e("MyGLRenderer", glOperation + ": glError " + error); throw new RuntimeException(glOperation + ": glError " + error); } } } ``` 其中,`Triangle` 和 `Square` 是继承自 `Shape` 的类,用于绘制图形。这里省略了这两个类的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值