- 博客(336)
- 资源 (16)
- 收藏
- 关注
原创 GLSL 图形流水线
流水线概述下图描述了一个简化的图形处理流水线,虽然简略但仍然可以展示着色器编程(shader programming)的一些重要概念。一个固定流水线包括如下功能:顶点变换(Vertex Transformation)这里一个顶点是一个信息集合,包括空间中的位置、顶点的颜色、法线、纹理坐标等。这一阶段的输入是独立的顶点信息,固定功能流水线在这一阶段通常进行如下工作
2012-08-16 10:21:08 2865
原创 OpenGL ES着色器语言之操作数
5.1操作数OpenGL ES着色器语言包含如下操作符.5.2数组下标 数组元素通过数组下标操作符([ ])进行访问.这是操作数组的唯一操作符,举个访问数组元素的例子: diffuseColor += lightIntensity[3] * NdotL;5.3函数调用 如果一个函数有返
2012-08-09 10:42:57 3275
原创 OpenGL ES着色语言关键字使用
varying修饰符只能用在float, vec2, vec3, vec4, mat2, mat3, mat4和包含这些类型元素的数组上,不能用于修饰结构体。uniform修饰符可以和任意基本数据类型一起使用,或者包含基本数据类型元素的数组和结构体。attribute修饰符只能修饰float, vec2, vec3, vec4,mat2,mat3,mat4。attribut
2012-08-09 10:36:55 2633
原创 OpenGL ES着色器语言之变量和数据类型
所有变量和函数在使用前必须声明。变量和函数名是标识符。 没有默认类型,所有变量和函数声明必须包含一个声明类型以及可选的修饰符。变量在声明的时候首先要标明类型,后边可以跟多个变量,之间用逗号隔开。很多情况下,变量在声明的时候可以使用等号“=”进行初始化。 用户定义类型可以使用struct,在结构体中所有变量类型都必须是OpenGL ES着色器语言定义的关键字。Op
2012-08-09 10:34:22 25614 2
原创 OpenGL ES着色器语言之着色
OpenGL ES着色语言是两种紧密关联的语言。这些语言用来在OpenGL ES处理管线的可编程处理器创建着色器。 在本文档中,除非另外说明,一个语言功能适用于所有语言,并且通用用法将把他们当做一个语言来看待。特定语言将指出它们的目标处理器:顶点(vertext)或片元(fragment)。任何被着色器使用的OpenGL ES状态值都会自动地被跟踪并且作用于着色器上。这个自动状态跟踪机制允许应
2012-08-09 10:28:58 4577
原创 android 提升性能总结
出色的用户体验有三个特征:速度快、响应及时以及无缝。下面的信息帮助你的应用如何能够在Android上实现这些特征。一、速度快你不能假设手机与桌面系统和服务器一样提速,更多的是你要关注你的代码是否高效。编写高效的Android代码,应遵循两个原则:不要做不必要的事不要分配不必要的内存以下是一些达到此目标的小技巧(有一些技巧是与oo的原则冲突,斟酌使用场景):1、避免建立对
2012-06-01 16:15:12 6855 2
原创 TraceViews使用
什么是TraceView?先看下百度出来的解释吧:Traceview是android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。 关于Traceview的使用 首先,必须在程序当中加入代码,以便生成trace文件,有了这个trace文件才可以将其转化为图形。 要添加的代码如下:Java代码// s
2012-06-01 16:14:53 1174
原创 glBlendFunc()的参数
OpenGL 会把源颜色和目标颜色各自取出,并乘以一个系数(源颜色乘以的系数称为“源因子”,目标颜色乘以的系数称为“目标因子”),然后相加,这样就得到了新的颜 色。(也可以不是相加,新版本的OpenGL可以设置运算方式,包括加、减、取两者中较大的、取两者中较小的、逻辑运算等,但我们这里为了简单起见,不讨 论这个了)下面用数学公式来表达一下这个运算方式。假设源颜色的四个分量(指红色,绿色,蓝色,
2012-05-31 10:43:12 1861
原创 webkit Parser模块
前面把Loader数据加载模块介绍完了,那有了数据以后就可以开始解析了,但在介绍parser模块之前,需要知道数据从curl怎么过来的,因此,本篇先介绍一下ResourceHandleManager.cpp里下面这几个函数:headerCallbackwriteCallbackreadCallback顾名思义,这三个函数是http请求发出以后的回调函数(为了实现异步操作),分别为写
2012-05-30 17:26:07 3359
原创 Webkit模块介绍
一、Webkit模块用到的第三方库如下:cairo一个2D绘图库casqtUnicode处理用的库,从QT中抽取部分代码形成的expat一个XML SAX解析器的库freetype矢量字库接口库,用于存取ttf矢量字体文件l
2012-05-30 17:19:01 7162
原创 webkit学习
一.Webkit的由来1. 十几年前的故事1994年,Netscape浏览器曾占据整个浏览器市场的90%,风头无二(也很嚣张)。但随着微软推出win95后,把IE 1.0做为win95的插件发布,开始挑战Netscape的霸主地位,到发布IE 4.x,短短三年时间,打败Netscape。 这里面虽然说有与windows集成的原因,但从本身的功能上来讲, IE从速度和对标准的支持上来讲,
2012-05-30 17:11:25 5785
原创 egl gles2.0开发
在android中,java层需要创建surface,class MobileViewGLES extends GLSurfaceView implements Callback{ public void surfaceCreated(SurfaceHolder holder) { Log.e("MobileViewGLES", "surfaceCrea
2012-05-18 17:13:55 16780 1
原创 OpenSL 播放声音
在Android中,使用OpenSL播放声音,在Andriod 2.3或以上版本中使用,需要添加-lOpenSLES 动态库#include "jni.h"#include #include "SLES/OpenSLES_Android.h"#include #include typedef void (*AudioCallBackAT)(int event, vo
2012-05-04 14:19:49 15067 1
原创 Android内存溢出
Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M。但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开发的时候,内存的限制问题会给我们带来内存溢出等严重问题。在我们不使用一些内存的时候,我们要尽量在Android或者其他平台上避免在运行其他程序时,保存必要的状态,使得一些死进程所带来的内存问题,应该尽
2012-05-02 13:31:07 1179
原创 OpenGL中位图的操作
1、 BMP文件格式简单介绍BMP文件是一种像素文件,它保存了一幅图象中所有的像素。这种文件格式可以保存单色位图、16色或256色索引模式像素图、24位真彩色图象,每种模式种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节。目前最常见的是256色BMP和24位色BMP。这种文件格式还定义了像素保存的几种方法,包括不压缩、RLE压缩等。常见的BMP文件大多是不压缩的。这
2012-04-13 09:09:13 3308
原创 Texture Wrapping Mode
在进行纹理帖图时,图象会出现在物体表面的(u,v)位置上,而这些值在[0.0,1.0]范围内。但是,如果超出这个值域,会发生什么情况呢?这由纹理的映射函数来决定。在OpenGL中,这类映射函数称为“Texture Wrapping Mode”;在D3D中,称为“Texture Addressing Mode”。常见的有下面几种: 1. 重复(GL_REPEAT):图象在表面上重复出现。在算
2012-04-12 11:23:42 929
原创 android中的surface
在android中,对view及其子类,都是画在surface上的。每个window对应一个surface,各surface对象通过surfaceflinger合成到framebuffer,每个surface都是双缓冲,它有一个back buffer和一个front buffer。back buffer就是画画的地方,front buffer是用来合成的。surface创建Canvas
2012-04-11 14:20:29 4128
原创 freetype渲染字体范例
freetype初始化如下: if (mFTFace == 0 ) { if (FT_Init_FreeType( &mFTLibrary )) return; if (FT_New_Face( mFTLibrary, "/system/fonts/DroidSansFallback.ttf", 0, &mFTFac
2012-04-10 11:07:49 6449
原创 图像解析库使用范例
范例包括libgif,libpng和libjpeg,图像类型判断如下,其中fData是图像数据的首地址 //png if (!png_sig_cmp((png_byte*)fData, (png_size_t)0, 4)) { return EN_IMG_TYIE_PNG; } // gif if (memcmp(GIF
2012-04-10 11:03:08 3781 1
原创 Android动作广播类别消息类型
String BATTERY_CHANGED_ACTION 广播:充电状态,或者电池的电量发生变化 "android.intent.action.BATTERY_CHANGED"String BOOT_COMPLETED_ACTION 广播:在系统启动后,这个动作被广播一次(只有一次) "android.intent.action.BOOT_COMPLETED"String CALL_FO
2012-04-10 10:54:38 4522
原创 Android Service 服务—— bindService与remoteService
一、bindService简介bindService是绑定Service服务,执行service服务中的逻辑流程。service通过Context.startService()方法开始,通过Context.stopService()方法停止;也可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己。只要调用一次stopServ
2012-03-19 19:18:16 1081
原创 Android Service 服务—— BroadcastReceiver
一、 BroadcastReceiver简介BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用Context.sendBroadcast()发送、BroadcastReceiver()接收。广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()、Context.s
2012-03-19 19:15:46 840
原创 Android Service 服务 —— Service
一、 Service简介Service是android 系统中的四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),它跟Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互。service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比
2012-03-19 19:13:07 814
原创 Android Service 前台运行与生命期
在前台运行Service 一个前台的service是被用户强烈关注的从而不会在内存低时被系统杀死.前台service必须在状态栏上提供一个通知,这个通知被放在"正在进行"区域中,这表示这个通知不能被解除,除非服务停止了或者从前台移除了. 例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意它的运行.在状态栏中的通知可能会显示当前的歌曲并且允许用户启动
2012-03-14 12:37:54 1351
原创 FreeType 管理字形
1.字形度量 顾名思义,字形度量是对应每一个字形的特定距离,以此描述如何对文本排版。 通常一个字形有两个度量集:用来排版水平文本排列的字形(拉丁文、西里尔文、阿拉伯文、希伯来文等等)和用来排版垂直文本排列的字形(中文、日文、韩文等等)。 要注意的是只有很少的字体格式提供了垂直度量。你可以使用宏FT_HAS_VERTICAL测试某个给出的face对象是否包含垂
2012-02-13 13:44:25 13832
原创 FreeType 用法
Freetype是一个跨平台、开源的字体渲染器,网上很多文章介绍,本人就不啰嗦了。本文重点在于实现文章标题所属的各种效果,不是Freetype的基本使用方法介绍文档,所以对于Freetype不熟悉的同学们请先学习下Freetype的基本用法,才可以使用本文中所提及的方法。用FreeType实现矢量字体的粗体、斜体、描边、阴影效果不是一件容易的事,本人认为皆因Freetype的接口太过于底层化,
2012-02-02 05:39:04 12922
原创 FreeType字体程序库介绍
FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。支持单色位图、反走样位图的渲染。FreeType库是高度模块化的程序库,虽然它是使用ANSI C开发,但是采用面向对象的思想(下文中将会介绍到)。因此,Fre
2012-02-01 18:34:23 3008
原创 Android 嵌入浏览器
WebView的使用很方便。在学习WebView之前,我们现看看如何通过程序中调浏览器。1、在程序中调起浏览器 Uri uri = Uri.parse("http://commonsware.com"); Intent intent = new Intent(Intent.ACTION_VIEW,uri); startActivity(intent);
2012-01-31 19:22:34 2843
原创 Android Message和Runnable
程序需要相应用户的操作,最要能在200ms(0.2s)之内,如果超过5秒没有反应,ActivityManager会没有提示就kill了activity。然而,activity可能真的需要时间来进行处理,这往往会用到后台线程-background thread。后台线程可以安全地和UI线程进行交互,其中后台线程是不能修改UI的。我不太确切知晓“不能修改UI”到何种程度,例如在下面的例子进度条状态的修
2012-01-31 19:19:59 937
原创 Android 实现 Launcher
具体来说,Launcher中的快捷方式有两种类型: 1 、"伪"快捷方式 —— 应用程序类型 2 、"真"快捷方式 —— Activity具备为ACTION_CREATE_SHORTCUT的配置信息 知识点介绍: 知识点一 、ACTION_PICK_ACTIVITY使用说明 ,具体可以参考SDK Intent类
2012-01-11 17:22:50 2558
转载 Git 中文教程
介绍Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的。Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。Git 的速度很快,这对于诸如 Linux kernel 这
2012-01-05 04:42:39 788
原创 RHEL / CentOS Linux: Mount and Access NTFS Partition
First, you need to install EPEL repo as described here. The following command will turn in EPEL repo on RHEL / CentOS version 6.x:$ cd /tmp$ wget http://download.fedoraproject.org/pub/epel/6/x86
2011-12-28 16:15:10 1112
原创 EGL接口介绍
EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。本章主要讲述 OpenGL ES 的 EGL API ,以及如何用它创建 Context 和绘制Surface 等,并对用于 OpenGL 的其他视窗 API 做了比较分析,比如 WGL 和 GLX 。本章中将涵盖如下几个方面:EGL 综述EGL 主要构成( Display , Context , Configu
2011-12-15 14:40:49 10061 3
原创 java synchronized
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行 它包括两种用法:synchronized 方法和 synchronized 块。1. synchronized 方法: 通过在方法声明中
2011-12-14 15:04:30 926
原创 C 内存分配
C语言程序编译的内存分配:1.栈区(stack) --编译器自动分配释放,主要存放函数的参数值,局部变量值等;2.堆区(heap) --由程序员分配释放;3.全局区或静态区 --存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区;4.字符常量区 --常量字符串放与此,程序结束时由系统释放;5.程序代码区--存放函数体的二进制代码例: //main
2011-12-10 07:44:52 1292
原创 C++移位运算符
关于逻辑移位、算术移位可参见迅雷深大笔试题部分。的一道题。以前看到C++标准上说,移位运算符(>)出界时的行为并不确定:The behavior is undefined if the right operand is negative, orgreater than or equal to the length in bits of the promoted left operand.
2011-12-10 07:43:31 54661 5
原创 C++ volatile
嵌入式编程中经常用到 volatile这个关键字,在网上查了下他的用法可以归结为以下两点:一:告诉compiler不能做任何优化 比如要往某一地址送两指令: int *ip =...; //设备地址 *ip = 1; //第一个指令 *ip = 2; //第二个指令 以上程序c
2011-12-10 07:41:22 1691
原创 C++ 中常见预定义宏的使用
在标准C以及各中编译器中定义了一些对象宏, 这些宏的名称以"__"开头和结尾, 并且都是大写字符. 这些预定义宏可以被#undef, 也可以被重定义。 在ANSI C标准中定义了__FILE__,__LINE__,__DATA__,__TIME__,__STDC__等标准的预定义宏。GCC对其进行扩展,也定义了多个预定义宏。 概括起来GCC中可使用的预定义宏涵盖了如下几
2011-12-10 07:39:50 16934
原创 C++ 变量命名规则
一、程序风格: 1、严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对继行则要求再缩进4格。例如: 2、提示信息字符串的位置 在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。 3、对变量的定义,尽量位
2011-12-10 07:32:50 2027
原创 C++ 编码风格精简
头文件:1.头文件防多重定义define格式:___H_2.能使用前置声明尽量不用头文件包含3.只有当函数只有 10 行甚至更少时才将其定义为内联函数(注意虚函数,递归函数,以及使用了循环语句的函数)4.复杂的内联函数的定义, 放在后缀名为 -inl.h 的头文件中5.定义函数时,输入参数永远放在输出参数之前6.项目内头文件应按照项目源代码目录树结构排列7.exampl
2011-12-10 07:28:17 1281
OpenGL编程指南(第七版)
2012-01-04
testmusic.pcm AudioTrack使用测试文件
2011-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人