Android OpenGL ES教程Word格式.docx
- 文档编号:20331942
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:25
- 大小:30.94KB
Android OpenGL ES教程Word格式.docx
《Android OpenGL ES教程Word格式.docx》由会员分享,可在线阅读,更多相关《Android OpenGL ES教程Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
@Override
11.
public
void
onCreate(Bundle
savedInstanceState)
12.
super.onCreate(savedInstanceState);
13.
vortexView
new
VortexView(this);
14.
setContentView(vortexView);
15.
}
16.
17.
18.
protected
onPause()
19.
super.onPause();
20.
vortexView.onPause();
21.
22.
23.
24.
onResume()
25.
super.onResume();
26.
vortexView.onResume();
27.
28.}
2.继承GLSurfaceView类的自己的View
android.content.Context;
android.opengl.GLSurfaceView;
5.import
android.view.MotionEvent;
6.
7.public
GLSurfaceView
LOG_TAG
VortexView.class.getSimpleName();
VortexRenderer
renderer;
VortexView(Context
context)
super(context);
renderer
VortexRenderer();
setRenderer(renderer);
boolean
onTouchEvent(final
MotionEvent
event)
queueEvent(new
Runnable()
run()
renderer.setColor(event.getX()
/
getWidth(),
event.getY()
getHeight(),
1.0f);
renderer.setAngle(event.getX()
10);
});
return
super.onTouchEvent(event);
3.实现渲染器renderer类
java.nio.ByteBuffer;
java.nio.ByteOrder;
java.nio.FloatBuffer;
6.import
java.nio.ShortBuffer;
8.import
javax.microedition.khronos.egl.EGLConfig;
9.import
javax.microedition.khronos.opengles.GL10;
11.import
13.public
implements
GLSurfaceView.Renderer
VortexRenderer.class.getSimpleName();
float
red
0f;
green
blue
ShortBuffer
indexBuffer;
FloatBuffer
vertexBuffer;
short[]
indicesArray
0,
1,
2
};
int
numberOfVertices
3;
angle;
initTriangle()
28.
ByteBuffer
vbb
ByteBuffer.allocateDirect(numberOfVertices
*
3
4);
29.
vbb.order(ByteOrder.nativeOrder());
30.
vertexBuffer
vbb.asFloatBuffer();
31.
32.
ibb
2);
33.
ibb.order(ByteOrder.nativeOrder());
34.
indexBuffer
ibb.asShortBuffer();
35.
36.
float[]
coords
-0.5f,
0f,
0.5f,
0f
37.
38.
vertexBuffer.put(coords);
39.
indexBuffer.put(indicesArray);
40.
41.
vertexBuffer.position(0);
42.
indexBuffer.position(0);
43.
44.
45.
setColor(float
red,
green,
blue)
46.
this.red
red;
47.
this.green
green;
48.
this.blue
blue;
49.
50.
51.
setAngle(float
angle){
52.
this.angle
53.
54.
55.
56.
onSurfaceCreated(GL10
gl,
EGLConfig
config)
57.
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
58.
initTriangle();
59.
60.
61.
62.
onSurfaceChanged(GL10
width,
height)
63.
gl.glViewport(0,
height);
64.
65.
66.
67.
onDrawFrame(GL10
gl)
68.
gl.glClearColor(red,
blue,
69.
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
70.
gl.glRotatef(angle,
1f,
0f);
71.
gl.glColor4f(0.5f,
0.5f);
72.
gl.glVertexPointer(3,
GL10.GL_FLOAT,
vertexBuffer);
73.
gl.glDrawElements(GL10.GL_TRIANGLES,
numberOfVertices,
GL10.GL_UNSIGNED_SHORT,
indexBuffer);
74.
75.}
4.封装的三角形的类
7.import
java.util.Random;
9.public
Triangle
myIndecesArray
//
a
raw
buffer
to
hold
indices
allowing
reuse
of
points.
the
vertices
Random
random
Random();
Triangle()
random.nextFloat();
-
(float)
Math.floor(red);
Math.floor(green);
Math.floor(blue);
randomValue(red),
randomValue(green),
randomValue(blue),
randomValue(blue)
for
(int
i
0;
<
numberOfVertices;
i++)
j
j++)
vertexBuffer.put(coords[i
+
j]);
indexBuffer.put(myIndecesArray[i]);
randomValue(float
value)
tmp
random.nextInt
(2);
if
(tmp
==
0)
-1;
value
tmp;
getVertexBuffer()
getIndexBuffer()
getNumberOfVertices()
75.
76.
77.
getGreen()
78.
79.
80.
81.
getRed()
82.
83.
84.
85.
getBlue()
86.
87.
88.}
第二课第一个OpenGL项目
首先,读懂我们的教程,需要有android的初步基础,我们这里只是通过android提供的SDK,来进行OpenGL的学习,所以你必须先学习如何建立一个android的项目,同时了解activity的生命周期和android下的屏幕或键盘响应机制。
好的,开始建立一个android的项目Lesson1,Activity的名字的名字我们叫Lesson
package
com.xinli;
import
android.view.Window;
android.view.WindowManager;
Lesson
Activity{
OpenGLView
mOpenGLView;
@Override
onCreate(BundlesavedInstanceState){
//去标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mOpenGLView
OpenGLView(this);
setContentView(mOpenGLView);
}
我们在这里用了一个OpenGLView类,把这个类直接设为contentView。
GLSurfaceView{
OpenGLRenderer
mRenderer;
OpenGLView(Contextcontext){
mRenderer
OpenGLRenderer();
setRenderer(mRenderer);
TODO
Auto-generatedconstructorstub
OpenGLView类继承自GLSurfaceView,这个类是android提供的用opengl画图的类。
这里用了OpenGLRenderer类,Render是渲染的意思,真正画图的操作在这个类里面。
android.opengl.GLSurfaceView.Renderer;
Renderer{
onDrawFrame(GL10gl){
gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
onSurfaceChanged(GL10gl,
height){
设置输出屏幕大小
gl.glViewport(0,0,width,height);
onSurfaceCreated(GL10gl,EGLConfigconfig){
Auto-gener
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android OpenGL ES教程 ES 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)