缘由 OpenSL ES 学习到现在已经知道 OpenSL ES 不仅能播放和录制PCM音频数据,还能改变声音大小.设置左声道或右声道播放.还能变速播放,可谓是播放音频的王者.但是变速有一点不好的就是,虽然播放音频的速度变了,但是相应的音调也随之变了,这样的用户体验就不那么好了.所以就想到了用开源的SoundTouch来实现PCM音频变速和变调,OpenSL ES只是单纯的播放PCM数据就可以了. 实现 1.移植SoundTouch(Android) 下载SoundTouch源码,当前最新是:v…
1.优化聚合查询示例 假设我们现在有一些关于电影的数据集,每条数据里面会有一个数组类型的字段存储表演该电影的所有演员的名字. { "actors" : [ "Fred Jones", "Mary Jane", "Elizabeth Worthing" ] } 如果我们想要查询出演影片最多的十个演员以及与他们合作最多的演员,使用聚合是非常简单的: { "aggs" : { "actors"…
通过IExportContext导出类中的Onmaterial()方法,可以获取到材质相关信息,主要是材质ID,再根据材质ID得到材质对象material,然后通过如下代码获取Asset对象: ElementId appearanceId = material.AppearanceAssetId; AppearanceAssetElement appearanceElem = document.GetElement(appearanceId) as AppearanceAssetElement;…
一.Android OpenSL ES 介绍 OpenSL ES (Open Sound Library for Embedded Systems)是无授权费.跨平台.针对嵌入式系统精心优化的硬件音频加速API.它为嵌入式移动多媒体设备上的本地应用程序开发者提供标准化, 高性能,低响应时间的音频功能实现方法,并实现软/硬件音频性能的直接跨平台部署,降低执行难度,促进高级音频市场的发展.简单来说OpenSL ES是一个嵌入式跨平台免费的音频处理库. Android的OpenSL ES库是在NDK的…
Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) : 通过三种方式绘制图片 Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件 Android 音视频开发(三):使用 AudioTrack 播放PCM音频 Android 音视频开发(四):使用 Camera API 采集视频数据 Android 音视频开发(…
一.概念 一般说来,纹理是表示物体表面的一幅或几幅二维图形,也称纹理贴图(texture).当把纹理按照特定的方式映射到物体表面上的时候,能使物体看上去更加真实.当前流行的图形系统中,纹理绘制已经成为一种必不可少的渲染方法.在理解纹理映射时,可以将纹理看做应用在物体表面的像素颜色.在真实世界中,纹理表示一个对象的颜色.图案以及触觉特征.纹理只表示对象表面的彩色图案,它不能改变对象的几何形式.更进一步的说,它只是一种高强度的计算行为. 概括为一句就是:纹理贴图就是把一个纹理(对于2D贴图,可以简单…
一.前期基础储备笔者之前的四篇文综述了Android中使用OpenGL ES绘制基本图形和实现了简单的相机预览,初次接触OpenGL ES开发的读者可能对其中新的概念比较迷惑,尤其是其中的顶点着色器(Vertex Shader)和片元着色器(Fragment Shader),我们知道,在OpenGL中顶点着色器是针对每个顶点执行一次,用于确定顶点的位置.片元着色器是针对每个片元,片元可以理解为每个像素,用于确定每个片元(像素)的颜色或者纹理.如下是在相机预览中使用的两个着色器的代码段: priv…
前面的文章主要是整理的Android 官方文档对OpenGL ES支持的介绍.通过之前的文章,我们基本上可以完成的基本的形状的绘制. 这是本人做的整理笔记: https://github.com/renhui/OpenGLES20Study 目前到这里第一阶段的学习,也就是基本的图形绘制,基本的交互的实现. 平面绘制:三角形.正方形.在相机视角下的三角形.彩色三角形 立体绘制:正方体.圆柱体.圆锥体.球体 基本交互:手绘点.旋转三角形 知道了基本的图形绘制,也知道了基本的交互的实现,现在可能大多…
开发框架介绍请參见:Opengl ES NDK实例开发之中的一个:搭建开发框架 本章在第三章(Opengl ES 1.x NDK实例开发之三:多边形的旋转)的基础上演示怎样使用纹理贴图,分别实现了三角形纹理贴图和正方形纹理贴图. [实例解说] OpenglES要求生成纹理的图片长宽为2的n次方.支持各种格式(BMP, GIF, JPEG, PNG...) 本例中使用的图片为png格式,尺寸为128*128 本例中,在上层GLJNIView.java中生成纹理.将纹理句柄传递给Native层进行绘…
开发框架介绍请參见:Opengl ES NDK实例开发之中的一个:搭建开发框架 本章在第六章(Opengl ES 1.x NDK实例开发之六:纹理贴图)的基础上绘制一个旋转的纹理立方体,原理和纹理贴图一样,须要注意的是定好正方体的顶点数组. [实例解说] 本实例加入了一个显示fps的小功能,在java层实现,原理是统计一分钟内屏幕刷新的次数 [实例源代码] [GLJNIActivity.java] /* * Copyright (C) 2007 The Android Open Source P…
OpenGL(Open Graphics Library) 是开放图形库,是一个跨平台的图形 API.OpenGL ES(OpenGL for Embedded System)是专为移动端提供的一个子集.目前主要版本有1.0/1.1/2.0/3.0/3.1: 1.0:Android 1.0和更高的版本支持这个API规范 2.0:不兼容 OpenGL ES 1.x.Android 2.2(API 8)和更高的版本支持这个API规范 3.0:向下兼容 OpenGL ES 2.x.Android 4.…
感谢,摘自:http://blog.csdn.net/mapdigit/article/details/7526556 Android OpenGL ES 简明开发教程 Android OpenGL ES 简明开发教程一:概述 Android OpenGL ES 简明开发教程二:构造OpenGL ES View Android OpenGL ES 简明开发教程三:3D绘图基本概念 Android OpenGL ES 简明开发教程四:3D 坐标变换 Android OpenGL ES 简明开发教程…
零:环境搭建目的 为了在Android应用程序中使用OpenGL ES绘制图形,必须要为他们创建一个视图容器.其中最直接或者最常用的方式就是实现一个GLSurfaceView和一个GLSurfaceView.Renderer.GLSurfaceView是用OpenGL绘制图形的视图容器,GLSurfaceView.Renderer控制在该视图内绘制的内容. 下面将讲解如何使用GLSurfaceView 和 GLSurfaceView.Renderer 在一个简单的应用程序的Activity上面做…
在上篇文章,我们能够配置好基本的Android OpenGL 使用的环境.但是如果我们不了解OpenGL ES如何定义图像的一些基本知识就使用OpenGL ES进行绘图还是有点棘手的.所以能够在OpenGL ES的View里面定义要绘制的形状是进行高端绘图操作的第一步. 本文主要做的事情就是为了讲解Android设备屏幕相关的OpenGL ES坐标系统,定义形状,形状面的基础知识,以及定义三角形和正方形. 一.定义三角形 OpenGL ES允许你使用三维空间坐标系定义绘制的图像,所以你在绘制一个…
笔者之前写了三篇Android中使用OpenGL ES入门级的文章,从OpenGL ES的相关概念出发,分析了利用OpenGL ES实现3D绘图的重要的两个步骤:定义形状和绘制形状,简单的绘制了一个三角形. 这里再简单回顾下:Android中使用OpenGL一共会涉及到四个类: 1)Activity——自不用说,Android界面展示的类: 2)GLSurfaceView——SurfaceView(API Level 1)的子类,View的孪生兄弟-SurfaceView专用于要求频繁刷新的界面…
博客地址 : http://blog.csdn.net/shulianghan/article/details/46680803 源代码下载 : http://download.csdn.net/detail/han1202012/8903437 正交投影效果 :  透视投影效果 :  一. 投影简单介绍 1. 摄像机位置 摄像机參数 : -- 摄像机位置 : 摄像机的 三维坐标位置 x, y, z 坐标; -- 观察方向 : 摄像机镜头的朝向, 是一个三维向量, 指向一个三维坐标方向; --…
简介OpenGL ES 谈到OpenGL ES,首先我们应该先去了解一下Android的基本架构,基本架构下图: 在这里我们可以找到Libraries里面有我们目前要接触的库,即OpenGL ES. 根据上图可以知道Android 目前是支持使用开放的图形库的,特别是通过OpenGL ES API来支持高性能的2D和3D图形.OpenGL是一个跨平台的图形API.为3D图形处理硬件指定了一个标准的软件接口.OpenGL ES 是适用于嵌入式设备的OpenGL规范. Android 支持OpenG…
http://www.educity.cn/wenda/92368.html OpenGL ES教程VI之纹理贴图(原文对照) OpenGL ES Tutorial for Android – Part VI – Textures December 30th, 2010 by Per-Erik Bergman — Android, Embedded, Java Last tutorial we worked a bit more on meshes and we have also talked…
没想到原文出了那么多错别字,实在对不起观众了.介绍opengl es 2.0的不多.相信介绍基于Cocos2d-x学习OpenGL ES 2.0之多纹理的,我是独此一家吧.~~ 子龙山人出了一个系列:基于Cocos2d-x学习OpenGL ES 2.0.弄c++来搞cocos2dx的可以看看. 教程是参考iphone的教程来写的,坑点也有不少,最主要的坑点还是在版本.所以还是弄个cocos2dx 3.2比较好.前两天辉辉说cocos2dx 3.2也很操蛋,.h里声明的返回值在源码实现的时候返回类…
在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object).IBO(Index Buffer Object)和MVP(Modile-View-Projection)变换. 本文将在基于Cocos2d-x学习OpenGL ES 2.0系列——使用VBO索引(4)的基础之上,添加纹理贴图支持.最后,本文会把纹理贴图扩展至3D立方体上面. 基本方法 当我们把一张图片加载到内存里面之后,它是不能直接被GPU绘制出来的,纹理贴图过程如下: 首先,我们…
纹理可以理解为一个二维数组,它可以存储大量的数据,这些数据可以发送到着色器上.一般情况下我们所说的纹理是表示一副2D图,此时纹理存储的数据就是这个图的像素数据. 所谓的纹理贴图,就是使用Opengl将这个纹理数据渲染出来,这个过程有点像装修工人给墙体贴瓷砖,而瓷砖好比作纹理. 纹理坐标 如果为了将一副纹理图贴到Opengl绘制的一个矩形上,那么就需要解决一个问题,如何知道矩形的具体某个点对应纹理图的某个点呢?为了解决这个问题就引出了纹理坐标, 通过矩形的顶点坐标与纹理坐标关联,这样就明确了每个顶…
在这篇文章中,我们将学习如何在openGL中使用纹理贴图. penGL中纹理可以分为1D,2D和3D纹理,我们在绑定纹理对象的时候需要指定纹理的种类.由于本文将以一张图片为例,因此我们为我们的纹理对象绑定一个GL_TEXTURE_2D的纹理. 本文将分为两个部分,一部分是如何通过图片获取一个2D的纹理,另一部分是如何使用一个纹理. 在上一篇中,我们介绍了如何使用shader来绘制一个多边形,本文是基于上一篇的提高,我们也将继续使用shader,对于shader使用不熟的童鞋可以看上一篇. 首先我…
Texture Filtering and Mipmapping 纹理过滤与多级纹理 前面我们已经讲了单个2D图像的2D纹理的介绍,这篇文章主要讲解多级纹理.纹理坐标是用于生成一个2D索引,当放大和缩小设置为GL_NEAREST时,将发生一个单一纹理将匹配到纹理坐标位置中,这是一个最近点的采样. 当使用一个多级纹理时,我们可以设置过滤模式,,为了达到屏幕像素和纹理图片像素更合适的比例,减少锯齿.因为多级纹理贴图的成功过滤,当在更远处观察时,我们向贴图链后移动,锯齿减少,实现高质量的图像. //…
转:http://blog.csdn.net/junzia/article/details/52842816 前面几篇博客,我们将了Android中利用OpenGL ES 2.0绘制各种形体,并在上一篇博客中专门讲了GLSL语言.但是我们看到的基于OpenGL开发的应用和游戏,可不仅仅是那些规则形体和一些简单的色彩构成,而是各种不规则的形体构成了现实世界或者卡通世界的人和事物,他们都是外面穿着漂亮“衣服”的.本篇博客就是来讲解这些“衣服”的基础的.这些衣服就是纹理贴图. 什么是纹理贴图 一般说来…
在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping) 视差贴图 最近一直在研究如何在我的 iPad 2(只支持 OpenGL ES 2.0, 不支持 3.0) 上实现 视差贴图(Parallax Mapping) 和 位移贴图(Displacement Mapping). 经过一番研究, 搜索阅读了不少文章, 终于确定, OpenGL ES 2.0 可以支持 视差贴图, 不过暂时还没什么好办法支持 位移贴图. 因为就我目前所了解的位移贴图, 有这么两种方法来实现,…
android ndk调用OpenGL 实现纹理贴图Texture 时间 2014-06-25 05:24:39  CSDN博客 原文  http://blog.csdn.net/chrisfxs/article/details/34359265 主题 OpenGL安卓开发 首先必须说,国内在OpenGL这方面特别是ndk上的分享太太太少 这中间遇到很多问题,而这些问题需要在书上,在网上,在各种资料上找,而且书上是java层调用,网上的缺少各种文件案例,只有在java层研究,在各种案例中找需要的…
一.实现说明 OpenSL ES的录音要比播放简单一些,在创建好引擎后,再创建好录音接口基本就可以录音了.在这里我们做的是流式录音,所以需要用至少2个buffer来缓存录制好的PCM数据,这里我们可以动态创建一个二维数组,里面有2个buffer,然后每次录音取出一个,录制好后再写入文件就可以了,2个buffer依次来存储PCM数据,这样就可以连续录制流式音频数据了,二维数组里面自己维护了一个索引,来标识当前处于哪个buffer录制状态,暴露给外部的只是调用方法而已,细节对外也是隐藏的. 二.编码…
OpenGL常用API 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenGL函数采用了以下格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有gl.glu.aux.glut.wgl.glx.agl等等,分别表示该函数属于OpenGL那个开发库,从函数名后面中还可以看出需要多少个参数以及参数的类型.I代表int型,f…
前一节实例代码中有个贴图操作. 今天就简单说明一下纹理贴图... 为了使用纹理贴图.我们首先需要启用纹理贴图功能. 我们可以在Renderer实现的onSurfaceCreated中定义启用: // 启用2D纹理贴图 gl.glEnable(GL10.GL_TEXTURE_2D); 那么接下来我们需要准备作为纹理贴图的图片. 放在res/drawable目录下就行. 那么我们需要把作为纹理贴图的图片给加载进来.如下: private void loadTexture(GL10 gl) { Bit…
OpenGl核心函数库 glAccum 操作累加缓冲区 glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形 glAlphaFunc允许设置alpha检测功能 glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中 glArrayElement 定义一个被用于顶点渲染的数组成分 glBegin,glEnd 定义一个或一组原始的顶点 glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理 glBitmap 绘制一个位图 g…