使用GLSurfaceView内部提供了上面类似的实现,对于大部分应用只需调用一 个方法来设置OpenGLView 用到的GLSurfaceView.Renderer.1public void setRenderer(GLSurfaceView.Renderer renderer) GLSurfaceView.Renderer 定义了一个统一图形绘制的接口,它定义了如下三个 接口函数:1// Called when the surface is created or recreated.2public void onSurfaceCreated(GL10 gl, EGLConfig config)3// Called to draw the current frame.4public void onDrawFrame(GL10 gl)5// Called when the surface changed size.6public void onSurfaceChanged(GL10 gl, int width, int height) onSurfaceCreated : 在这个方法中主要用来设置一些绘制时不常变化的参数,比如:背景色,是否打开 z-buffer 等。

onDrawFrame: 定义实际的绘图操作。 onSurfaceChanged: 如果设备支持屏幕横向和纵向切换,这个方法将发生在横向<- >纵向互换时。此时可以重新设置绘制的纵横比率。 如果有需要,也可以通过函数来修改GLSurfaceView 一些缺省设置: setDebugFlags(int) 设置Debug 标志。 setEGLConfigChooser (boolean) 选择一个Config 接近16bitRGB 颜色模式,可以打开或关闭深度(Depth)Buffer ,缺省为RGB_565并打开至少有16bit 的 depth Buffer. setEGLConfigChooser(EGLConfigChooser)选择自定义EGLConfigChooser 。 setEGLConfigChooser(int, int, int, int, int, int) 指定red ,green, blue,alpha, depth ,stencil 支持的位数,缺省为RGB_565 ,16 bit depth buffer. GLSurfaceView 缺省创建为RGB_565颜色格式的Surface ,如果需要支持透明 度,可以调用getHolder().setFormat(PixelFormat.TRANSLUCENT). GLSurfaceView 的渲染模式有两种,一种是连续不断的更新屏幕,另一种为 on-demand ,只有在调用requestRender() 在更新屏幕。
缺省为 RENDERMODE_CONTINUOUSLY持续刷新屏幕。Android OpenGL ES开发教程(7)创建实例应用OpenGLDemos 程序框架 有了前面关于Android OpenGL ES 的介绍,可以开始创建示例程序 OpenGLDemos 。 使用Eclipse 创建一个Android 项目 Project Name: OpenGLDemos Build Target: Android 1.6 ( >1.5 即可) Application Name: Android OpenGL ES Demos Package Name: com.pstreets.opengl.demo Create Activity:AndroidOpenGLDemo 采用Android ApiDemos类似的方法,AndroidOpenGLDemo 为一ListActivity , 可以使用PackageManager读取所有Category 为 guidebee.intent.category.opengl.SAMPLE_CODE的Activity 。
我国习惯上将年息月息日息都以厘作单位,但实际含义却不同,若年息6厘月息4厘日息2厘,则分别是指 c年利率为6%,月利率为4%0,日利率为2。示例代码主要是解析一些常用字段,如需要完整或其他未包含的字段,可以自行参考官方的接口,进行修改。基础核心频率为1058mhz,延长各大硬件使用寿命,主流接口齐备,超频频率为1110mhz,可以满足散热与静音的不同要求,可以根据系统实际运行情况将转速在600-2400rpm之间进行自动调节,支持智能温控调节功能,金士顿8gb ddr3 1600内存的标签相当简洁,。
最后使用一个简单的例子“Hello World”结束本篇,“Hello World” 使用红色背景 刷新屏幕。1public class HelloWorld extends Activity2implements IOpenGLDemo{3/** Called when the activity is first created. */4@Override5public void onCreate(Bundle savedInstanceState) {6super.onCreate(savedInstanceState);7this.requestWindowFeature(Window.FEATURE_NO_TITLE)8;9getWindow()10.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,11WindowManager.LayoutParams.FLAG_FULLSCREEN);12mGLSurfaceView = new GLSurfaceView(this);13 14mGLSurfaceView.setRenderer(new OpenGLRenderer(this)); 15setContentView(mGLSurfaceView); 16} 17public void DrawScene(GL10 gl) { 18gl.glClearColor(1.0f, 0.0f, 0.0f, 0.0f); 19// Clears the screen and depth buffer. 20gl.glClear(GL10.GL_COLOR_BUFFER_BIT 21| GL10.GL_DEPTH_BUFFER_BIT); 22} 23@Override 24protected void onResume() { 25// Ideally a game should implement 26// onResume() and onPause() 27// to take appropriate action when the 28//activity looses focus 29super.onResume(); 30mGLSurfaceView.onResume(); 31} 32@Override 33protected void onPause() { 34// Ideally a game should implement onResume()35//and onPause()36// to take appropriate action when the37//activity looses focus38super.onPause();39mGLSurfaceView.onPause();40}41private GLSurfaceView mGLSurfaceView;42} 其对应在AndroidManifest.xml 中的定义如下: <activity android:name=”.HelloWorld” android:label=”@string/activity_helloworld”> <intent-filter> < action android:name=”android.intent.action.MAIN” /> <category android:name=”guidebee.intent.category.opengl.SAMPLE_CODE” /> < /intent-filter> < /activity> 本例下载Android OpenGL ES开发教程(8)基本几何图形定义 在前面Android OpenGL ES开发教程(7):创建实例应用OpenGLDemos 程序 框架 我们创建了示例程序的基本框架,并提供了一个“Hello World”示例,将屏 幕显示为红色。
本例介绍OpenGL ES 3D 图形库支持的几种基本几何图形,本篇部分内容与 Android OpenGL ES简明开发教程三:3D 绘图基本概念 类似。 通常二维图形库可以绘制点,线,多边形,圆弧,路径等等。OpenGL ES支持 绘制的基本几何图形分为三类:点,线段,三角形。也就是说OpenGL ES只能 绘制这三种基本几何图形。任何复杂的2D 或是3D 图形都是通过这三种几何图 形构造而成的。 比如下图复杂的3D 图形,都有将其分割成细小的三角形面而构成的。然后通过 上色(Color),添加材质(Texture),再添加光照(lighting) ,构造3D 效果的图形: 点,线段,三角形都是通过顶点来定义的,也就是顶点数组来定义。对应平面上 的一系列顶点,可以看出一个个孤立的点(Point),也可以两个两个连接成线段 (Line Segment) ,也可以三个三个连成三角形(Triangle) 。这些对一组顶点的不 同解释就定义了Android OpenGL ES 可以绘制的基本几何图形,下面定义了 OpenGL ES 定义的几种模式: GL_POINTS 绘制独立的点。

GL_LINE_STRIP 绘制一系列线段。 GL_LINE_LOOP 类同上,但是首尾相连,构成一个封闭曲线。 GL_LINES 顶点两两连接,为多条线段构成。 GL_TRIANGLES 每隔三个顶点构成一个三角形,为多个三角形组成。GL_TRIANGLE_STRIP 每相邻三个顶点组成一个三角形,为一系列相接三角形构成。 GL_TRIANGLE_FAN 以一个点为三角形公共顶点,组成一系列相邻的三角形。 以上模式对应到Android 渲染方法: OpenGL ES 提供了两类方法来绘制一个空间几何图形: public abstract void glDrawArrays(int mode, int first, int count) 使用VetexBuffer 来绘制,顶点的顺序由vertexBuffer 中的顺序指定。 public abstract void glDrawElements(int mode, int count, int type,Buffer indices) ,可以重新定义顶点的顺序,顶点的顺序由indices Buffer指定。 其中mode为上述解释顶点的模式。
前面说过顶点一般使用数组来定义,并使用Buffer 来存储以提高绘图性能,参 见Android OpenGL ES开发中的Buffer 使用 如下面定义三个顶点坐标,并把它们存放在FloatBuffer中: float[] vertexArray = new float[]{ 1 -0.8f , -0.4f * 1.732f , 0.0f , 2 0.8f , -0.4f * 1.732f , 0.0f , 3 0.0f , 0.4f * 1.732f , 0.0f , 4 }; 5 ByteBuffer vbb 6 = 7ByteBuffer.allocateDirect(vertexArray.length* 84); 9 vbb.order(ByteOrder.nativeOrder()); 10 FloatBuffer vertex = vbb.asFloatBuffer(); 11 vertex.put(vertexArray); 12 vertex.position(0); 有了顶点的定义,下面就可以通过打开OpenGL ES 管道(Pipeline)的相应开关将 顶点参数传给OpenGL库: 打开顶点开关和关闭顶点开关的方法如下:12gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);3...4gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);5 在打开顶点开关后,将顶点坐标传给OpenGL管道的方法为:glVertexPointer : public void glVertexPointer(int size,int type,int stride,Buffer pointer) size: 每个顶点坐标维数,可以为2,3 ,4 。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-113773-2.html
浪费材料与资金