工程名称为vertex,标识点的意思,点是3d图形空间最基本元素,三角形的绘制通过指定三个点,线由两个点连接构成,对边型至少由三个vertex构成,
Activity 名为VertexActivity
package com.android.vertex;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.WindowManager;
import java.io.File;
public class VertexActivity extends Activity {
VertexView mView;
@Override protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
mView = new VertexView(getApplication());
setContentView(mView);
}
@Override protected void onPause() {
super.onPause();
mView.onPause();
}
@Override protected void onResume() {
super.onResume();
mView.onResume();
}
}
VertexActivity 创建时会加载
VertexView ,这里要注意activity状态改变时一定要让view状态同步,因为这会影响opengl绘制线程的状态,比如activity pause状态时,GLSurfaceView的绘制线程也回同步
到pause状态。
VertexView 继承GLSurfaceView ,MyRenderer实现GLSurface.renderer接口,负责具体绘制
VertexView.java 代码:
package com.android.vertex;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLES10;
/**
* An implementation of SurfaceView that uses the dedicated surface for
* displaying an OpenGL animation. This allows the animation to run in a
* separate thread, without requiring that it be driven by the update mechanism
* of the view hierarchy.
*
* The application-specific rendering code is delegated to a GLView.Renderer
* instance.
*/
class VertexView extends GLSurfaceView {
private static String TAG = "vertex";
private MyRenderer mRenderer;
public VertexView(Context context) {
super(context);
//set this if you use opengl es version 2.0
//setEGLContextClientVersion(2);
mRenderer = new MyRenderer();
setRenderer(mRenderer);
}
private static class MyRenderer implements GLSurfaceView.Renderer {
private float red = 0.9f;
private float green = 0.2f;
private float blue = 0.2f;
public MyRenderer() {
}
public void onDrawFrame(GL10 gl) {
gl.glClearColor(red, green, blue, 1.0f);
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0,0,width,height);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}
}
}
实际绘制动作 在MyRederer实现的三个接口函数里,
如果我们想通过按键事件与绘制线程交互可以用上一篇文章提到的queueEvent方法操作绘制线程对象mRederer,
在VertexView类中添加按键事件处理
//comunicate with render thread
public boolean onTouchEvent(final MotionEvent event) {
queueEvent(new Runnable() {
public void run() {
mRenderer.setColor(event.getX() / getWidth(), event.getY() / getHeight(), 1.0f);
}
} );
return true;
}
MyRenderer类中添加setColor,改变颜色。
public void setColor(float r, float g, float b) {
red = r;
green = g;
blue = b;
}
分享到:
相关推荐
android openGL es2.0简单图形绘制 简单绘制三角形 里面注释很详细
构建3D图形,OpenGl ES 绘制3D图形的放回绘制2D的图形的大致方法
android OpenGL技术绘制一个旋转的3d立方体
在屏幕绘制各种图形,了解Android中OpenGL的使用:程序实现了: 屏幕绘图的方法 Android上OpenGL的使用。 完成三角形和四边形的绘制。
主要介绍了Android开发 OpenGL ES绘制3D 图形实例详解的相关资料,需要的朋友可以参考下
主要介绍了Android开发之OpenGL绘制2D图形的方法,结合实例形式分析了Android使用OpenGL ES的图形绘制组件实现2D图形绘制的原理、步骤及相关代码注意事项,需要的朋友可以参考下
主要介绍了Android openGl 绘制简单图形的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
第12章 AndroidOpenGL开发 基础 12.1 OpenGL简介 12.2 多边形 12.3 颜色 12.4 旋转 12.5 3D 空间 12.6 纹理映射 12.7 光照和事件 12.8 混合 12.9 小结 第13章 AndroidOpenGL综合 应用 13.1 移动图像 13.2.3D 世界 ...
NULL 博文链接:https://wonka438.iteye.com/blog/1393421
在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
这个文件主要是使用opengl代码通过函数在屏幕上画一个简单的茶壶
opengl绘制三维图形的基本知识,函数说明,处理三维图形的动作
这是用OpenGL绘制的动态汽车.绘制的丑,但代码简单易懂,适合初学者. 这是用OpenGL绘制的动态汽车.绘制的丑,但代码简单易懂,适合初学者.
选择绘制三角形作为OpenGL ES 2.0的第一个实例,是因为前文中提到的,点、线、三角形是OpenGL ES世界的图形基础。无论多么复杂的几何物体,在OpenGL ES的世界里都可以用三角形拼成。关于Android OpenGL ES 三角形的...
3. 计算各定点坐标时是使用三维数组的形式生成的,较简单,但是OpenGL绘制的时候需要的是buffer形式的,生成buffer时需要的是一维数组,java中没有指针,所以需要自己写个方法把三维数组的内容转换到一维数组中,以...
12 3 如何使用OpenGL ES绘制图形 12 4 绘制2D图形 12 5 绘制3D图形 12 6 光照效果 第13章 Android系统的资源 13 1 资源的基础问题 13 2 本地化 13 3 字符串资源 13 4 布局资源 13 5 图像资源 13 6 其他资源 第14章 ...
用OpenGL练习作图如三角形、四边形、线段等,涉及四边形旋转、光照、动画等效果。