您的位置:首页 > 移动开发 > Android开发

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

设置纹理和色彩缓冲

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[]数组。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android opengl es