不说废话,贴代码,画四棱椎
// 旋转方向
private float xrot, yrot, zrot;
// 正三角顶点
private IntBuffer tvertices =IntBuffer.wrap(new int[] {
0, one, 0,
-one, -one,one,
one, -one, one,
0, one, 0,
one, -one, one,
one, -one,-one,
0, one, 0,
one, -one, -one,
-one, -one, -one,
0, one, 0,
-one, -one, -one,
-one, -one, one
});
//纹理点
private int[] texCoords = {
0, one,
one, one,
0, 0,
one, 0
};
// 初始化
textureids = new int[1];
// 实例化bitmap
bitmap = BitGL.bitmap;
ByteBuffer tbb = ByteBuffer.allocateDirect(texCoords.length * 4 * 6);
tbb.order(ByteOrder.nativeOrder());
texBuffer = tbb.asIntBuffer();
//为每一个面贴上纹理
for (int i = 0; i < 6; i++) {
texBuffer.put(texCoords);
}
texBuffer.position(0);
@Override
public void onDrawFrame(GL10 gl) {
// 清除深度和颜色缓存
gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT);
gl.glLoadIdentity();
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glVertexPointer(3, GL10.GL_FIXED, 0, tvertices);
gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, texBuffer); // Define
//向z轴里移入3.0f
gl.glTranslatef(0.0f, 0.0f, -3.0f);
// 设置旋转的方向
gl.glRotatef(xrot, 0.0f, 1.0f, 0.0f);
// 绘制四棱椎
for (int i = 0; i < 4; i++) {
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i * 3, 3);
}
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
// 设置旋转角度
xrot += 1f;
yrot += 1f;
zrot += 0.3f;
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
// 视角
gl.glViewport(0, 0, width, height);
float ratio = (float) width / height;
// 观察模式
gl.glMatrixMode(GL10.GL_PROJECTION);
// 重置观察布局
gl.glLoadIdentity();
gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// 告诉系统对透视进行修正
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
// 黑色背景
gl.glClearColor(0, 0, 0, 0);
// 启用阴影平滑
gl.glShadeModel(GL10.GL_SMOOTH);
// 清除深度缓存
gl.glClearDepthf(one);
// 启用深度测试
gl.glEnable(GL10.GL_DEPTH_TEST);
// 所做深度测试的类型
gl.glDepthFunc(GL10.GL_LEQUAL);
gl.glEnable(GL10.GL_TEXTURE_2D);
// 创建纹理
gl.glGenTextures(1, textureids, 0);
// 绑定要使用的纹理
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureids[0]);
// 生成纹理
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
// 线性滤波
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);
}
分享到:
相关推荐
在Android系统中,OpenGL ES是主要的图形库,它允许开发者创建丰富的视觉体验,包括“画中画”功能。 画中画(Picture-in-Picture,简称PiP)是一种显示技术,它可以在主屏幕显示的同时,小窗口显示另一个视频或...
android openGl es2.0以画线的模式画成一个矩形 只有4条边中间透明
Android openGL ES 画球
android openGL ES 2.0画等边三角形,正方形
本主题将深入探讨如何在Android环境下使用OpenGL ES进行分小块贴图,并实现画点、画线功能,特别是在10x10矩形范围内操作。 首先,了解基本概念: 1. **纹理贴图(Texture Mapping)**:在OpenGL ES中,贴图是二维...
在Android平台上,OpenGL ES是一种广泛使用的图形库,用于在移动设备上实现高性能的2D和3D图形渲染。本文将深入探讨如何使用OpenGL ES来绘制圆点,并介绍一种方法来优化圆点边缘的锯齿问题,提升视觉效果。 首先,...
### Android OpenGL ES 开发教程详解 #### 概述与历史沿革 OpenGL ES(OpenGL for Embedded Systems)作为OpenGL API的子集,专为移动设备、PDA和游戏主机等嵌入式系统设计,旨在简化3D图形应用的开发流程。自2003...
最后,了解如何与硬件加速的OpenGLES API交互,以及熟悉GLSL语言(OpenGL Shading Language),是成为OpenGL ES 2.0专家的必经之路。通过编写高效、可读性强的着色器代码,可以创造出各种复杂的视觉效果,实现令人...
OpenGL ES 是一种在嵌入式设备上广泛使用的图形库,特别是在Android系统中,它用于创建高性能的2D和3D图形。在这个主题中,我们主要关注如何在Android平台上使用OpenGL ES绘制一个透明的三维/空间坐标系。这个过程...
实现动画效果ES2Renderer,PaintingView.m
在Android平台上,JNI(Java Native Interface)允许开发者使用C++代码来增强应用程序的功能,尤其是在处理图形和计算密集型任务时,如使用OpenGL ES和OpenCV。这个特定的项目旨在通过JNI调用来结合这两个强大的库...
本教程主要探讨如何在Android系统上,利用OpenGLES2.0图形库来处理和显示从Camera获取的YUV原始数据。YUV是一种常见的颜色空间,广泛应用于视频编码和解码,因为它对带宽的要求相对较低,特别适合移动设备。 首先,...
该案例代码为Android 平台OpenGL ES实现举例,有两个作用: ...2、使用 OpenGLES 生成与使用Mipmap纹理,构建远处模糊,近处清晰的效果。 具体案例文章讲解请见: https://xiaxl.blog.csdn.net/article/details/8873106
Android平台,OpenGL ES3.0 点、线、三角形绘制方式源码实现举例。 相关绘制方式文章讲解请参考: https://xiaxl.blog.csdn.net/article/details/8873002
OpenGL ES 是一种在嵌入式设备上广泛使用的图形库,特别是在Android系统中,它用于创建复杂的3D图形和动画。Android OpenGL ES 提供了一个接口,让开发者能够利用硬件加速的图形处理能力,来绘制出立方体、球体、...
`Elasticsearch`标签可能指的是在处理大量数据时,如何利用Elasticsearch这种强大的搜索引擎来检索和存储3D模型或动画的元数据,从而加速内容加载和搜索。 总的来说,"android opengl es 绘画文字和3D动画"是一个...
含有以下4个pdf,主要介绍基本概念和用法,对初学者非常有用。...Android OpenGL ES 简明开发教程.pdf Android_OpenGL_ES_book.pdf OpenGL ES 2 for Android.pdf Apress.Pro.OpenGL.ES.for.Android.Feb.2012.pdf
OpenGL ES在Android平台上的应用是实现3D图形渲染的关键技术,而Obj文件格式是一种常见的3D模型数据交换格式。在Android开发中,如果想要将Obj格式的3D模型导入到应用中,就需要对OpenGL ES有深入的理解,并且掌握...
在本项目"z.h-android openGL 翻折动画效果"中,开发者使用OpenGL ES (Embedded Systems version of OpenGL) 创建了一个日历翻转对折的动画效果。这涉及到多个关键的OpenGL技术和编程概念。 首先,我们需要理解...
这个"Android OpenGL 3D 立方体多纹理贴图源码"是一个很好的学习资源,它涵盖了多个关键的OpenGL ES编程概念。 首先,3D立方体的渲染是OpenGL ES的基本应用之一,它展示了如何构建基本的几何形状。在3D空间中,一个...