Android上使用OpenGL画3D菱形

本文详细介绍了如何在Android平台上利用OpenGL ES绘制3D菱形。通过建立顶点数组、边缘数组,将图形信息传递给OpenGL服务,并创建渲染环境,最终将3D菱形显示在Android界面上。同时,展示了如何通过旋转实现动态效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android是用OpenGL来实现3d的。OpenGL的处理机制是把所有的数据都用代码传递给opengl service,如果用户(这里是应用程序)想要画什么东西,就用告诉opengl 什么东西是可用的,然后在开始画。

这个例子一共分三步:
1."
"一个3d的图形(这里画的是菱形),把它传递给opengl service 端,然后建立一个画自己的方法。
2.
创建这个图形运行的环境。
3.
把这个环境,加载到android 的界面上去。

下面是具体的实现方法:
首先需要建两个array,第一array是用来告诉opengl这个图形有哪些顶点:
画一个三维的坐标轴,然后把你要画的点都算出来,然后放在这个array里。

float l=1.5f;
float[] vertex={

0.0f,l,0.0f,

l,0.0f,0.0f,

0.0f,0.0f,l,

-l,0.0f,0.0f,

0.0f,0.0f,-l,

0.0f,-l,0.0f

};
第二个array是告诉opengl 你要怎样组织这些点:
这里我要画三角形,所以每三个点是一组。
byte[] edge=

{

0,1,2,

1,2,5,



0,2,3,

5,2,3,



0,3,4,

5,3,4,



0,4,1,

5,4,1

};

这里的数字,是第一个arrayindex
下面你要建立两个Buffer它们是用来存放这两个array的。


ByteBuffer bb = ByteBuffer.allocateDirect(vertex.length*4);

bb.order(ByteOrder.nativeOrder());

fbv=bb.asFloatBuffer();

fbv.put(vertex);

fbv.position(0);




ffe=ByteBuffer.allocateDirect(edge.length);

ffe.put(edge);

ffe.position(0);
这样一个三维的菱形就画好了。

下面你要写一个方法能让它自己把自己画出来!
public void draw(GL10 gl)

{

gl.glFrontFace(GL10.GL_CW);

gl.glVertexPointer(3, GL10.GL_FLOAT, 0, fbv);

gl.glDrawElements(GL10.GL_TRIANGLES, 24, GL10.GL_UNSIGNED_BYTE, ffe);

}
这几句话费了我好大力气去理解。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值