PixelFlinger
2015-11-13 16:01
926 查看
简介
Pixelflinger是Android系统中为OpenGL ES引擎提供的一套软件渲染器(renderer),为OpenGL ES引擎提供了一系列基础绘图功能。这些功能包括定义各种颜色格式像素位置、画点画线、绘制矩形及三角形、填充纹理等等。由于OpenGL ES相当于一个状态机,配置OpenGL ES状态的函数也均由Pixelflinger提供。Pixelflinger的相关源码路径如下:
system/core/libpixelflinger
system/core/include/libpixelflinger
system/core/include/private/pixelflinger
Pixelflinger编译后生成:
libpixelflinger_static.a
libpixelflinger.so
主要数据结构
context_t
该结构是Pixelflinger的主结构,用来存储OpenGL ES状态及数据上下文。context_t结构体中包含GGLContext、state_t、shade_t、iterators_t、generated_vars_t等结构体。system/core/include/private/pixelflinger/ggl_context.h
GGLContext
GGLContext结构体中包含了Pixelflinger库可提供给上层调用的一些函数接口,包括画点画线、绘制多边形、配置OpenGL ES状态机等函数接口。state_t
state_t结构体用来描述OpenGL ES状态机的状态,包含多个子结构体,每个子结构体均负责处理一部分OpenGL ES功能,包括存储贴图及纹理、裁剪操作、光栅操作、混合操作、景深操作、雾化操作等功能。主要接口
初始化
gglInit直接渲染函数
pointx、linex、recti、trianglex裁剪函数
scissor设置纹理和色彩缓冲
activeTexturebindTexture
colorBuffer
readBuffer
depthBuffer
bindTextureLod
功能控制开关
enabledisable
enableDisable
指定片段颜色
shadeModelcolor4xv
指定颜色迭代器
colorGrad12xv指定Z坐标迭代器
zGrad3xv指定W坐标迭代器
wGrad3xv指定雾迭代器与颜色
fogGrad3xvfogColor3xv
指定混合参数
blendFuncblendFuncSeparate
纹理环境(包括四种纹理REPLACE / MODULATE / DECAL / BLEND)
texEnvitexEnvxv
纹理参数(包装及过滤)
texParameteri纹理迭代器
texCoord2itexCoord2x
为纹理ST坐标使用块浮点
texCoordGradScale8xvtexGeni
屏蔽函数
colorMaskdepthMask
stencilMask
alpha函数
alphaFuncx景深函数
depthFunc逻辑操作接口
logicOp清除函数
clearclearColorx
clearDepthx
clearStencil
framebuffer操作
copyPixelsrasterPos2x
rasterPos2i
支持的颜色格式
Pixelflinger在format.cpp中定义了所支持的颜色格式及像素的位置,常用的颜色格式主要有RGBA8888、RGBX8888、RGB565、BGRA8888。从结构体中可以看出,Alpha通道位于32-24位,属于高位,可见RGBA8888使用的是大端顺序。这里定义的颜色格式只能够被Android的OpenGL ES使用,和通过Canvas绘制的图像无关。具体请查看gPixelFormatInfos[]数组。相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories