PixelFlinger

简介

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

设置纹理和色彩缓冲

activeTexture
bindTexture
colorBuffer
readBuffer
depthBuffer
bindTextureLod

功能控制开关

enable
disable
enableDisable

指定片段颜色

shadeModel
color4xv

指定颜色迭代器

colorGrad12xv

指定Z坐标迭代器

zGrad3xv

指定W坐标迭代器

wGrad3xv

指定雾迭代器与颜色

fogGrad3xv
fogColor3xv

指定混合参数

blendFunc
blendFuncSeparate

纹理环境(包括四种纹理REPLACE / MODULATE / DECAL / BLEND)

texEnvi
texEnvxv

纹理参数(包装及过滤)

texParameteri

纹理迭代器

texCoord2i
texCoord2x

为纹理ST坐标使用块浮点

texCoordGradScale8xv
texGeni

屏蔽函数

colorMask
depthMask
stencilMask

alpha函数

alphaFuncx

景深函数

depthFunc

逻辑操作接口

logicOp

清除函数

clear
clearColorx
clearDepthx
clearStencil

framebuffer操作

copyPixels
rasterPos2x
rasterPos2i

支持的颜色格式

Pixelflinger在format.cpp中定义了所支持的颜色格式及像素的位置,常用的颜色格式主要有RGBA8888、RGBX8888、RGB565、BGRA8888。从结构体中可以看出,Alpha通道位于32-24位,属于高位,可见RGBA8888使用的是大端顺序。这里定义的颜色格式只能够被Android的OpenGL ES使用,和通过Canvas绘制的图像无关。具体请查看gPixelFormatInfos[]数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值