- 浏览: 260604 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yzb808:
Arrays.asList(ubs)在每次调用switchCh ...
UnicodeBlock(解决中文中方块乱码) -
ejb2008:
感谢楼主,写的太详细了。谢谢分享。
UML类图几种关系的总结 -
ld1024:
很有帮助,写的很好
UML类图几种关系的总结 -
王静娜:
这篇文章写得真不错
UML类图几种关系的总结 -
binzhao88:
EditText和ImageSpan
今天做了一个OpenGL ES的小例子,中间遇到一些小插曲,创建三角形顶点缓存的时候使用下面的方式。
private IntBuffer triggerBuffer = IntBuffer.wrap(new int[]{ 0,one,0, -one,-one,0, one,-one,0, });
测试环境分别是2.3.1及3.0均报 java.lang.IllegalArgumentException: Must use a native order direct Buffer异常。最后发现不能通过这种方式创建顶点缓存数组。下面是正确的代码,大家可以参考一下噢。
import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.IntBuffer; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.app.Activity; import android.opengl.GLSurfaceView; import android.opengl.GLSurfaceView.Renderer; import android.os.Bundle; import android.util.Log; public class OpenGLActivityDemo1 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Renderer render = new GLRender(); GLSurfaceView glView = new GLSurfaceView(this); glView.setRenderer(render); setContentView(glView); } } class GLRender implements Renderer{ private String TAG = "GLRender"; float roateTri;//用于三角形的角度 float roateQuad;//用于四边形的角度 int one = 0x10000; /*//三角形三个顶点 private IntBuffer triggerBuffer = IntBuffer.wrap(new int[]{ 0,one,0, -one,-one,0, one,-one,0, }); //四边形四个顶点 private IntBuffer quaterBuffer = IntBuffer.wrap(new int[]{ -one,one,0, one,one,0, one,-one,0, -one,-one,0, });*/ int [] colorArray = { one,0,0,one, 0,one,0,one, 0,0,one,one, }; int [] triggerArray ={ 0,one,0, -one,-one,0, one,-one,0}; int [] quaterArray = { one,one,0, -one,one,0, one,-one,0, -one,-one,0 }; @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { // TODO Auto-generated method stub Log.i(TAG, "onSurfaceCreated"); //告诉系统对透视进行修正,会使透视图看起来好看点 gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); //黑色背景 gl.glClearColor(0, 0, 0, 0);//红,绿,蓝,apaha //启动阴影平滑 gl.glShadeModel(GL10.GL_SMOOTH); //设置深度缓存 gl.glClearDepthf(1.0f); //启用深度测试 gl.glEnable(GL10.GL_DEPTH_TEST); //所做深度测试的类型 gl.glDepthFunc(GL10.GL_LEQUAL); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { // TODO Auto-generated method stub Log.i(TAG, "onSurfaceChanged width:"+width+" height:"+height);//1920 944 float radio = (float)width/height; //设置OpenGL场景的大小 gl.glViewport(0, 0, width, height); //设置投影矩阵,投影矩阵负责为场景增加透视 gl.glMatrixMode(GL10.GL_PROJECTION); //重置投影矩阵 gl.glLoadIdentity(); //设置视口的大小 前四个参数去顶窗口的大小,分别是左,右,下,上,后两个参数分别是在场景中所能绘制深度的起点和终点 gl.glFrustumf(-radio, radio, -1, 1, 1, 10); //指明任何新的变换即那个会影响 模型观察矩阵 gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); } @Override public void onDrawFrame(GL10 gl) { // TODO Auto-generated method stub Log.i("GLRender", "onDrawFrame"); roateTri +=0.5f; roateQuad-=0.5f; //清除屏幕和深度缓存 gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT); // 重置当前的模型观察矩阵 gl.glLoadIdentity(); //移动当前中心点,左移1.5单位,并移入屏幕6.0,y不变 //注意:屏幕内移动的单位数必须小于前面我们通过 //glFrustumf方法所设置的最远距离,否则显示不出来。 //腰围OpenGL设置一个顶点数组,故需要告诉OpenGL要设置 //顶点这个功能。 //开启顶点设置功能 gl.glTranslatef(-1.5f, 0.0f, -6.0f); //设置某无题沿着指定的轴旋转 //参数1:旋转的角度 //后三个参数共通决定旋转的方向 //注意:要在画图前,使用旋转 gl.glRotatef(roateTri, 0.0f, -1.0f, 0.0f); //开启颜色渲染功能 gl.glEnableClientState(GL10.GL_COLOR_ARRAY); //设置颜色,平滑着色 gl.glColorPointer(4, GL10.GL_FIXED, 0, bufferUtil(colorArray)); //允许设置顶点 gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); //设置三角形 //参数1:描述顶点的尺寸,本例中使用X,Y,Z坐标系,所以是3 //参数2:描述顶点的类型,本例中数据是固定的,所以使用了GL_FIXED表示固定顶点 //参数3:描述步长 //参数4:顶点缓存,即我们创建的顶点数组 gl.glVertexPointer(3, GL10.GL_FIXED, 0, bufferUtil(triggerArray)); //绘制三角形 //参数1:绘制模式,GL_TRIANGLES:表示绘制三角形 //参数2:开始位置 //参数3:要绘制的顶点计数 gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3); //重置当前的模型观察矩阵 gl.glLoadIdentity(); //关闭颜色渲染 gl.glDisableClientState(GL10.GL_COLOR_ARRAY); //左移1.5单位,并移入屏幕6.0 gl.glTranslatef(1.5f, 0.0f, -6.0f); gl.glRotatef(roateQuad, 1.0f, 0.0f, 0.0f); //开启颜色渲染功能 gl.glEnableClientState(GL10.GL_COLOR_BUFFER_BIT); //设置颜色,单调着色 (r,g,b,a) gl.glColor4f(0.5f, 0.5f, 1.0f, 1.0f); //设置和绘制正方形 gl.glVertexPointer(3, GL10.GL_FIXED, 0, bufferUtil(quaterArray)); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); //关闭颜色渲染 gl.glDisableClientState(GL10.GL_COLOR_BUFFER_BIT); //取消顶点设置 gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); } /* * OpenGL 是一个非常底层的画图接口,它所使用的缓冲区存储结构是和我们的 java 程序中不相同的。 * Java 是大端字节序(BigEdian),而 OpenGL 所需要的数据是小端字节序(LittleEdian)。 * 所以,我们在将 Java 的缓冲区转化为 OpenGL 可用的缓冲区时需要作一些工作。建立buff的方法如下 * */ public Buffer bufferUtil(int []arr){ IntBuffer mBuffer ; //先初始化buffer,数组的长度*4,因为一个int占4个字节 ByteBuffer qbb = ByteBuffer.allocateDirect(arr.length * 4); //数组排列用nativeOrder qbb.order(ByteOrder.nativeOrder()); mBuffer = qbb.asIntBuffer(); mBuffer.put(arr); mBuffer.position(0); return mBuffer; } }
运行效果是画了一个三角形和长方形,并设置了填充颜色,及旋转效果。
发表评论
-
【Android笔记】各个屏幕的logo尺寸要求
2015-07-31 15:29 2805Android Icon Size and Location ... -
oauth2.0认证和授权原理
2015-07-01 16:02 1014【转:http://www.phpddt.com/%E4%B ... -
解决Android单个dex文件不能超过65536个方法问题
2015-06-23 23:50 1858当我们的项目代码过大时,编译运行时会报Unable to e ... -
Android涉及到的设计模式
2015-06-23 18:23 630【转:http://blog.csdn.net/dengsh ... -
android camera拍照失真问题
2015-03-10 18:12 2714项目中遇到各种失真,例如图片变绿,图片曝光严重,出现两个图片 ... -
px,dp,sp
2015-03-05 17:10 9081、px 像素,1px代表屏幕上一个物理的像素点,px单位 ... -
关于build.prop原始Dalvik虚拟机设定与调整
2015-03-05 16:41 1714看了很多帖子,自己亲身实践了一下。有不足希望高手指出来,共同 ... -
android有时候相机对焦成功,照片却模糊
2014-08-07 16:42 2006急急急!!! android有的相机有时候对焦成功, ... -
Android中数据存储--采用SQLite存储数据及在SDCard中创建数据库
2014-07-11 10:57 967SQLite数据库简单的认识 ... -
android 反射的使用场景
2013-12-26 17:34 1349【转】http://mysuperbaby.iteye.co ... -
webview原始大小时如何缩小网页
2013-12-26 14:33 1033webview原始大小的时候,没办法缩小。 这个如何处理, ... -
更改eclipse关联的源码(重新关联源码)
2013-12-26 14:28 1149在项目上点右键-->build path-->co ... -
webview内嵌listview
2013-11-05 16:09 1660webview的header中是一个listview。 想 ... -
default.properties的target和AndroidManifest中的android:minSdkVersion
2013-10-12 10:45 1581客户反馈,在2.X系统运行有问题。 查看工程配置。 发 ... -
自定义ProgressBar的加载效果
2013-09-24 18:19 1492【转】http://gundumw100.iteye.com ... -
sqlite cmd 控制台中文乱码
2013-09-08 15:01 1026打开CMD.exe命令行窗口通过 chcp命令改变代码页,U ... -
ADT17以后关联源码方法
2013-08-26 22:37 827在libs目录下建与jar包同名(包括.jar)的prope ... -
java学习笔记:常见字符编码和编码头BOM
2013-06-28 11:00 1105ANSI(American National Standar ... -
非法字符: \65279 (utf-8 BOM标记)
2013-06-28 10:57 5613Linux先使用grep -r $'\xEF\xBB\xB ... -
如何混淆Android项目代码(ProGuard)
2013-05-09 14:33 2671ProGuard简介 ProGuard是 ...
相关推荐
Android Native层使用opengl es渲染yuv420,通过egl绑定android的surface,直接在native层进行渲染 具体使用见http://blog.csdn.net/lidec/article/details/73732369#comments
《OpenGL ES 2 for Android: A Quick-Start Guide》是一本专为Android开发者设计的实用指南,旨在帮助读者快速掌握OpenGL ES 2的核心概念和技术,并应用于Android应用开发中。本书通过丰富的示例代码和清晰易懂的...
它通常与OpenGL ES不直接交互,但在构建例如3D地理信息系统或可视化应用时,可能会利用Elasticsearch来检索和组织数据,然后通过OpenGL ES进行呈现。 总的来说,OpenGL ES 3.0编程指南涵盖了移动和嵌入式设备图形...
本示例基于GBM (Graphics Buffer Manager) 和DRM (Direct Rendering Manager) 平台,利用EGL (Embedded GL) 进行初始化和上下文管理,为在没有X Server的环境中实现OpenGL ES编程提供了一种方法。 首先,我们来深入...
OpenGL® ES™ is the industry’s leading software interface and graphics library for rendering sophisticated 3D graphics on handheld and embedded devices. The newest version, OpenGL ES 3.0, makes it ...
OpenGL 配置解决方案 OpenGL 是一个跨平台的图形编程接口,允许开发人员创建交互式三维图形应用程序。下面是关于 OpenGL 配置解决方案的一些知识点: 一、OpenGL 坐标系 在 OpenGL 中,默认坐标系与 Windows 中...
OpenGL ES 3.0编程指南是面向初学者的优秀教程,旨在帮助读者深入理解并掌握OpenGL ES 3.0这一移动设备和嵌入式系统上的图形处理标准。OpenGL ES(Embedded Systems)是OpenGL的轻量级版本,专为资源有限但需要高...
### OpenGL与OpenGLES在开发过程中的异同 #### 一、引言 OpenGL与OpenGLES都是由Khronos Group维护的跨平台图形应用程序接口(API)。它们为开发人员提供了绘制高质量2D和3D图形的能力。OpenGL主要用于桌面操作系统...
Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于2D和3D游戏、虚拟现实(VR)和增强现实(AR)应用的制作。...这对于那些需要定制图形解决方案或者需要充分利用硬件性能的应用来说,是一种非常有价值的实践方式。
### OpenGL ES 3.0.2 规范详解 #### 一、概述 OpenGL ES (Open Graphics Library for Embedded Systems) 是一种专为嵌入式设备设计的图形渲染库,广泛应用于移动设备、游戏主机和其他资源受限的系统。OpenGL ES ...
Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt+openglEs2加载3D模型Qt...
OpenGL® ES is a royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems - including consoles, phones, appliances and vehicles. It consists of well-defined subsets of...
OpenGL ES编程指南是一本针对移动设备和嵌入式系统的图形编程权威书籍,主要聚焦于OpenGL ES 2.0版本。OpenGL ES(Embedded Systems)是OpenGL的轻量级版本,专为资源有限但需要高质量3D图形处理能力的平台设计,如...
### OpenGL ES 2.0 for Android 快速入门指南 #### 一、引言 《OpenGL ES 2.0 for Android》是一本针对Android平台上OpenGL ES 2.0技术的全面指南,它不仅包含了深入的技术讲解,还有丰富的实战案例。本书由Kevin ...
OpenGL ES(OpenGL for Embedded Systems)是OpenGL的一个精简版本,专为嵌入式设备,特别是移动设备如智能手机和平板电脑设计,用于处理2D和3D图形。在Android系统中,OpenGL ES是主要的图形库,它允许开发者创建...
在本压缩包“OpenglES3.0完整环境.rar”中,你将找到搭建OpenGL ES 3.0开发环境所需的所有资源,包括仿真模拟器、示例代码和CMake构建工具。 首先,让我们详细了解一下OpenGL ES 3.0的新特性: 1. **增强的顶点...
7. **移植性支持**:针对不同版本的OpenGL ES提供兼容性解决方案,确保代码能在不同设备上运行。 Mali OpenGL ES SDK v2.0.0的发布,带来了以下主要改进: 1. **性能提升**:优化了图形处理流程,减少了延迟,提高...
- **帧缓存的区别**:OpenGLES命令对window-system-provided framebuffers的影响最终由分配帧缓存资源的窗口系统控制。窗口系统决定了OpenGL ES在任何特定上下文中的行为。 #### 六、OpenGL ES 2.0与OpenGL 2.0的...
在OpenGLES编程中,`drawElements`、`Vertex Buffer`和`Index Buffer`是三个非常重要的概念,它们是高效渲染3D图形的关键技术。在这个OpenGLES入门课程的第10章中,我们将深入探讨这三个主题,了解它们的工作原理...
OpenGL ES(Open Graphics Library for Embedded Systems)是OpenGL的嵌入式版本,主要为移动设备如智能手机、平板电脑等提供3D图形渲染能力。在OpenGL ES中,“点精灵”(Point Sprites)是一种特殊的渲染技术,它...