PSPGU文档翻译



掌叔
2008-06-17 09:36:38

摘自:pspchina
作者:sd3655633

PSP使用类似D3D的可变顶点格式(FVF),以一下顺序定义:
1. 纹理坐标,可以用到的标志:
n GU_TEXTURE_32BITF:32位浮点类型;
n GU_TEXTURE_16BIT:16位整型;
n GU_TEXTURE_8BIT:8位整型;
2. 权重,用于骨骼动画:
n GU_NORMAL_8BIT – 8位法向量
n GU_NORMAL_16BIT – 16位法向量
n GU_NORMAL_32BITF – 32位法向量,浮点类型

3. 顶点颜色(漫反射颜色,之前是否有境面高光), 可以用到的标志:
n GU_COLOR_8888: 32位,R_8,G_8,B_8,A_8;
n GU_COLOR_4444: 16位,R_4,G_4,B_4,A_4;
n GU_COLOR_5650: 16位,R_5,G_6,B_5,A_0;
n GU_COLOR_5551: 16位,R_5,G_5,B_5,A_1;

4. 法向量,可以用到的标志:
n GU_NORMAL_32BITF:32位浮点类型;
n GU_NORMAL_16BIT:16位整型;
n GU_NORMAL_8BIT:8位整型;

5. 顶点向量,可以用到的标志:
n GU_VERTEX_32BITF(同上);
n GU_VERTEX_16BIT;
n GU_VERTEX_8BIT;

顶点定义必须安以下顺序:
[for vertices(1-8)] [texture uv] [weights (0-8)] [color] [normal] [vertex] [/for]
注意:这是在文档中给出的定义顺序,在samplesguskinning这个例子中定义顺序又有不同,在samplegumorphskin中也是同样的,在按照文档的顺序来定义顶点在渲染后出了错误的结果,所以,正确的顺序应该如下:
[for vertices(1-8)] [weights (0-8)] [texture uv] [color] [normal] [vertex] [/for]
[for vertices(1-8)][/for]是告诉GE,一个结构中有几个顶点,通过GU_VERTICES(n)标志来设置.

以下为显示函数:

int sceGuDisplay(int state)
打开或者关闭显示
可用的参数:
n GU_TRUE (1) – 打开显示
n GU_FALSE (0) – 关闭显示

返回:
返回这次调用之间的状态

void sceGuInit(void)
初始化GU System.
这个函数必须比其他显示函数先调用,否则一些错误状态将被使用

void sceGuTerm(void)
关闭GU System
当不在需要GU的时候调用

void sceGuStart(int cid,void* list)
开始填充一个显示上下文
参数:
n cid 上下文类型
n list 显示列表(16字节对其)

void sceGuFinish(void)
结束填充当前的上下文,并回到上一级显示上下文

void sceGuDepthBuffer(void* zbp,int zbw)
设置深度缓存参数.
参数:
n zbp 指向深度缓存
n zbw 深度缓存宽度(内存对其)
注意:z-buffer始终是16bit的

void sceGuDisplay(int width,int height,void* dispbp,int dispbw)
设置显示缓存的参数
参数:
n width 显示缓存的宽,以象素为单位
n height 显示缓存的高,以象素为单位
n dispbp 指向显示缓存
n dispbw 显示缓存的宽(内存对其)

void sceGuDrawBuffer(int psm,void* fbp,int fbw)
设置绘制缓存参数
参数:
n psm 显示缓存的格式
u GU_PSM_5650
u GU_PSM_5551
u GU_PSM_4444
u GU_PSM_8888

n fbp 指向显示缓存
n fbw 显示缓存的宽度
主意:SceGuDrawBuffer和 sceGuDisplay会形成一个换页链,DisplayBuffer中的格式就是DrawBuffer中的格式,而DisplayBuffer的长宽就是DrawBuffer的长宽,DisplayBuffer和DrawBuffer通过sceGuSwapBuffers()来进行交换

void sceGuDepthFunc(int function)
选择一个深度测试函数
参数:
n function 一个将要被用到的深度测试函数
u GU_NEVER – 测试总是失败
u GU_ALWAYS – 测试总是成功
u GU_EQUAL – 相等则通过
u GU_NOTEQUAL – 不等则通过
u GU_LESS – 小于则通过
u GU_LEQUAL – 小于等于则通过
u GU_GREATER – 大于则通过
u GU_GEQUAL – 大于等于则通过

void sceGuDepthMask(int mask)
设置Z –buffer是否可写
参数:mask GU_TRUE 不可写
GU_FALSE 可写

void sceGuDepthRange(int near,int far)
设置深度缓存的范围
参数:
n near 近端
n far 远端
注意:z-buffer始终是16bit的,即范围在0xFFFF-0x0之间
例子:sceGuDepthRange(0xc350,0x2710);

void sceGuFog(float near,float far, unsigned int color)
设置雾参数
参数:
n near,far雾的范围
n color 雾的颜色

void sceGuSendCommandf (int cmd, float argument)
向GE发送命令,参数必须是24-bit以上浮点类型
参数:
n cmd 将要发送的命令
n argument 命令的参数

void sceGuSendCommandi(int cmd, int argument)
向GE发送命令,参数的低24-bit将会被传送
参数:
n cmd将要发送的命令
n argument命令的参数

void * sceGuGetMemory (int size)
从当前的显示列表中分配一段内存
参数:
n size 将要分配的内存大小,以字节为单位
返回:指向分配的内存地址

void sceGuCallList(const void * list)
调用先前产生的显示列表
参数:
n list 被调用的显示列表
返回:无

void sceGuCallMode (int mode)
设置使用信号模式还是堆栈模式
参数
n mode – GU_TRUE 信号模式,GU_FALSE 一般模式(堆栈)

int sceGuCheckList(void)
检查当前的display-list的大小
返回:当前display-list的长度

void sceGuSendList(int mode, const void* list, PspGeContext* context)
发送链表到GE
可用到的方式:
n GU_TAIL – 队列最后,安顺序执行
n GU_HEAD – 队列开始,会尽可能快的被执行
参数:
n mode - 链表在队列中的位置,是开始还是在最后
n list - 将要发送的链表
n context - GE上下文
返回:无



void* sceGuSwapBuffers(void)
翻页,交换DrawBuffer和DisplayBuffer,仅交互指针
参数:
n 无
返回:新的DrawBuffer的指针

int sceGuSync(int mode,int a1)
等到display-list执行完毕后返回
参数:
n mode – 未知,设置为0
n a1 – 未知,设置为0
返回: Unknown at this time
例子:
sceGuSync(0,0);

void sceGuDrawArray(int prim,int vtype,int count,
const void* indices,const void* vertices)
根据原始顶点作图
可用到的原始类型:
n GU_POINTS – 单一点,每个点一个顶点
n GU_LINES – 单一线段,每个线段两个顶点
n GU_LINE_STRIP - 连续线段,第一个线段两个顶点,以后的线段在前一个线段的末端加一个顶点连成新的线段
n GU_TRIANGLES – 单一三角形,三个顶点
n GU_TRIANGLES_STRIP – 三角形带,头一个三角形三个顶点,以后每个三角形追加一个顶点
n GU_TRIANGLE_FAN – 扇面三角形, ,头一个三角形三个顶点,以后每个三角形追加一个顶点
n GU_SPRITES – 精灵(矩形),每个两个顶点
顶点类型描述将自定义的顶点格式包含那些内容给GE.下面的标志可以通过OR操作组合在一起来描述一个自定义的顶点格式:


GU_TEXTURE_8BIT – 8位纹理坐标
GU_TEXTURE _16BIT – 16位纹理坐标
GU_TEXTURE_32BITF - 32位纹理坐标,浮点类型
GU_COLOR_5650 – 16 位颜色值(R5G6B5A0)
GU_COLOR_5551 – 16位颜色值(R5G5B5A1)
GU_COLOR_4444 – 16位颜色值(R4G4B4A4)
GU_COLOR_8888 – 32位颜色值(R8G8B8A8)
GU_NORMAL_8BIT – 8位法向量
GU_NORMAL_16BIT – 16位法向量
GU_NORMAL_32BITF – 32位法向量,浮点类型
GU_VERTEX_8BIT – 8位顶点位置向量
GU_VERTEX_16BIT – 16位顶点位置向量
GU_VERTEX_32BITF - 32位顶点位置向量 浮点类型
GU_WEIGHT_8BIT – 8位权重
GU_WEIGHT_16BIT – 16位权重
GU_WEIGHT_32BITF – 32位权重,浮点类型
GU_INDEX_8BIT – 8位顶点索引
GU_INDEX_16BIT – 16位顶点索引
GU_WEIGHTS(n) – 权重数量(1-8)
GU_VERTICES(n) – 一个自定义顶点格式中的顶点数量
GU_TRANSFORM_2D – 直接光栅化
GU_TRANSFORM_3D – 光栅化前变换







注意:每个顶点必须32位对齐,如果不足要补齐32的倍数
顶点格式顺序: [for vertices(1-8)] [texture uv] [weights (0-8)] [color] [normal] [vertex] [/for]
注意开头关于格式部分
例子:渲染400个三角形,使用浮点纹理坐标(GU_TEXTURE_32BITF)和浮点顶点向量sceGuDrawArray (GU_TRIANGLES,GU_TEXTURE_32BITF | GU_VERTEX_32BITF,400*3,0,vertices);
参数:
n prim – 原始数据的类型
n vtype – 类型描述
n count – 顶点数量
n indices – 索引列表
n vertices – 顶点列表

void sceGuBeginObject(int type,int ai,const void* indices,const void* vertices);
Begin conditional rendering of object.
If no vertices passed into this function are inside the scissor region, it will skip rendering the object. There can be up to 32 levels of conditional testing, and all levels HAVE to be terminated by sceGuEndObject().
Example: test a boundingbox against the frustum, and if visible, render object
sceGuBeginObject(GU_VERTEX_32BITF,8,0,boundingBox);
sceGuDrawArray(GU_TRIANGLES,GU_TEXTURE_32BITF|GU_VERTEX_32BITF,vertexCount,0,vertices);
sceGuEndObject();
参数:
n vtype - Vertex type to process
n count - Number of vertices to test
n indices - Optional list to an index-list
n vertices - Pointer to a vertex-list

void sceGuEndObject(void);
End conditional rendering of object

void sceGuSetStatus(int state,
int status)
设置相关渲染状态,相关状态参考sceGuEnable;
参数:
n state – 那个状态将要改变
n status – disable 还是enable

int sceGuGetStatus(int state)
取得指定渲染状态是disabled 还是enabled, 相关状态参考sceGuEnable;
参数:
n state – 指定要检查的渲染状态
返回:指定渲染状态是enabled,还是disabled;

void sceGuSetAllStatus(int status)
设置所有的22个可用的渲染状态, 相关状态参考sceGuEnable;
参数:
n status – Bit-mask(0-21)位掩码,22个可用的渲染状态通过OR包含在一起

int sceGuGetAllStatus(void)
查询所有的22个渲染状态
返回:22个渲染状态是否可用

void sceGuEnable(int state)
使指定渲染状态可用
当前可用的渲染状态
GU_ALPHA_TEST
GU_DEPTH_TEST
GU_SCISSOR_TEST
GU_BLEND
GU_CULL_FACE
GU_DITHER
GU_CLIP_PLANES
GU_TEXTURE_2D
GU_LIGHTING
GU_LIGHT0
GU_LIGHT1
GU_LIGHT2
GU_LIGHT3
GU_COLOR_LOGIC_OP
参数:
n state – 指定可用的渲染状态

void sceGuDisable(int state)
使指定的渲染状态失效
参数
n state – 指定失效的渲染状态


void sceGuLight(int light,
int type,
int components,
const ScePspFVector3* position)
设置光源参数
光源类型:
GU_DIRECTIONAL – 方向光
GU_POINTLIGHT – 点光源
GU_SPOTLIGHT – 聚光灯
可用的光源分量:
GU_AMBIENT_AND_DIFFUSE – 环境光和漫反射
GU_DIFFUSE_AND_SPECULAR – 漫反射和境面高光
GU_UNKNOWN_LIGHT_COMPONEN – 未知
参数:
n light – 光源索引
n type – 光源类型
n components – 光源分量
n position – 光源位子



void sceGuLightAtt(int light,
float atten0,
float atten1,
float atten2)
设置光源的衰减
参数:
n light – 光源索引
n atten0 –衰减常数
n atten1 – 线性衰减
n atten2 – 二次衰减
void sceGuLightColor(int light,
int components,
unsigned int color)
设置光源颜色
可用的光源分量
· GU_AMBIENT
· GU_DIFFUSE
· GU_SPECULAR
· GU_AMBIENT_AND_DIFFUSE
· GU_DIFFUSE_AND_SPECULAR
参数:
n light – 光源索引
n component – 光源分量
n color 光源颜色

void sceGuLightMode (int mode)
光源的模式
模式:
· GU_SINGLE_COLOR
· GU_SEPARATE_APECULAR_COLOR

Separate specular colors are used to interpolate the specular component independently, so that it can be added to the fragment after the texture color
参数
n mode – 那个模式将被使用

void sceGuLightSpot (int light, const ScePspFVector3 *direction, float exponent, float cutoff)
聚光灯参数
参数:
n light – 光源参数
n direction – 光源方向
n exponent – 聚光灯指数
n cutoff – 发射光锥角度,以弧度为单位


void sceGuClear(int flags)
清理当前的drawbuffer
可用的标志(可以OR来使用)
· GU_COLOR_BUFFER_BIT – 清理颜色缓存
· GU_STENCIL_BUFFER_BIT – 清理模版缓存
· GU_DEPTH_BUFFER_BIT – 清理深度缓存
参数:
n flags – 要清理的缓冲

void sceGuClearColor(unsigned int color)
设置用于清空DrawBuffer的颜色
参数
n color – 用于清空buffer的颜色


void sceGuClearDepth(unsigned int depth)
设置用于清空z - Buffer的值
参数
n depth - 用于清空buffer的值 0x0 – 0xffff

void sceGuClearStencil(unsigned int stencil)
设置用于清空stencil - Buffer的值
参数
n stencil – 用于清空buffer的值,0 – 255


void sceGuPixelMask(unsigned int mask)
设置象素的可写的掩码
参数:
n mask – 象素那些位可写的位掩码

void sceGuColor(unsigned int color)
设置当前顶点的颜色
参数
n color – 颜色

void sceGuColorFunc(int func,
unsigned int color,
unsigned int mask)
颜色测试函数.
颜色测试只有在GU_COLOR_TEST被使用时有效
颜色测试函数
· GU_NEVER
· GU_ALWAYS
· GU_EQUAL
· GU_NOTEQUAL
例子:蓝色通道不为0的象素都不被使用
sceGuColorFunc(GU_EQUAL,0,0XFF0000);
参数:
· func –颜色测试函数
· color – 测试用颜色
· mask – 位掩码,决定那些颜色的那些位参与测试,源和目标都有效

void sceGuColorMaterial(int components)
设置材质的分量
可以将以下的标志通过或组合在一起
· GU_AMBIENT
· GU_DIFFUSE
· GU_SPECULAR
参数:
n Components – 传入的材质分量

void sceGuAlphaFunc(int func,
int value,
int mask)
设置alpha测试的参数
alpha测试参数如下:
· GU_NEVER
· GU_ALWAYS
· GU_EQUAL
· GU_NOTEQUAL
· GU_LESS
· GU_LEQUAL
· GU_GREATER
· GU_GEQUAL
参数:
n func – alpha测试函数
n value – 参与测试的alpha值
n mask – 位掩码,那些位参与测试,对源和目标都有效


void sceGuAmbient(unsigned int color)
设置环境光
参数:
n color – 环境光颜色


void sceGuAmbientColor(unsigned int color)


void sceGuBlendFunc(int op,
int src,
int dest,
unsigned int srcfix,
unsigned int destfix)
设置混合模式
混合操作变量:
· Cs – 源颜色
· Cd – 目标颜色
· Bs – 源混合函数
· Bd – 目标混合函数
混合操作:
· GU_ADD – (Cs * Bs) + (Cd * Bd)
· GU_SUBTRACT – (Cs*Bs) – (Cd * Bd)
· GU_REVERSE_SUBTRACT – (Cd*Bd) – (Cs*Bs)
· GU_MIN – Cs· GU_MAX – Cs· GU_ABS - |Cs - Cd|
混合超作函数:
· GU_SRC_COLOR
· GU_ONE_MINUS_SRC_COLOR
· GU_SRC_ALPHA
· GU_ONE_MINUS_SRC_ALPHA
· GU_DST_ALPHA
· GU_ONE_MINUS_DST_ALPHA
· GU_DST_COLOR
· GU_ONE_MINUS_DST_COLOR
· GU_FIX
参数:
n op – 合成操作
n src – 源混合函数
n dest –目标混合函数
n srcfix – 源固定值,GU_FIX
n destfix – 目标固定值GU_FIX


void sceGuMaterial (int mode, int color)


void sceGuModelColor (unsigned int emissive, unsigned int ambient, unsigned int diffuse, unsigned int specular)

void sceGuStencilFunc(int func,int ref,int mask)
模版测试函数,和参考值
测试函数:
· GU_NEVER
· GU_ALWAYS
· GU_EQUAL
· GU_NOTEQUAL
· GU_LESS
· GU_LEQUAL
· GU_GREATER
· GU_GEQUAL
参数:
n func – 测试函数
n ref – 参考值
n mask – 位掩码,对测试前和测试后的值有效













void sceGuStencilOp(int fail,
int zfail,
int zpass)
设置模版操作




· GU_KEEP – 保持当前值
· GU_ZERO – 对模版buffer清零
· GU_REPLACE – 用参考值替换当前值,参看sceStencilFunc
· GU_INCR – 对当前的值进行加一操作
· GU_DECT – 对当前的值进行减一操作
· GU_INVERT – 对当前的值进行位反操作
参数
n fail – 模版测试失败的动作
n zfail – 模版测试成功,但是深度测试失败的操作
n zpass – 模版和深度测试成功后的操作


void sceGuSpecular(float power)
设置材质的境面高光亮度
参数
n power – 亮度


void sceGuFrontFace(int order)
设置对三角形的背面消隐方式,只有GU_CULL_FACE被启用才有效
选择方式:
· GU_CW – 顺时针方式将会被使用, 逆时针被精选掉
· GU_CCW – 逆时针方式将会被使用, 顺时针方式被精选掉
参数
n order – 使用的顺序

void sceGuLogicalOp(int op)
设置颜色的逻辑操作,只有当GU_COLOR_LOGIC_OP启用才有效
操作:
· GU_CLEAR
· GU_AND
· GU_AND_REVERSE
· GU_COPY
· GU_AND_INVERTED
· GU_NOOP
· GU_XOR
· GU_OR
· GU_EQUIV
· GU_INVERTED
· GU_OR_REVERSE
· GU_COPY_INVERTED
· GU_OR_INVERTED
· GU_NAND
· GU_SET
参数:
n op – 执行的操作

void sceGuSetDither(const ScePsplMatrix4* matrix)
Set ordered pixel dither matrix.
This dither matrix is only applied if GU_DITHER is enabled.
Parameters:
n matrix - Dither matrix


void sceGuShadeModel(int mode)
作色方式
· GU_FLAT – 平面作色
· GU_SMOOTH – gouraud作色
参数
n mode – 将被使用的作色方式

void sceGuCopyImage(int psm,
int sx,
int sy,
int width,
int height,
int srcw,
void* src,
int dx,
int dy,
int destw,
void dest)
使用GE来copy图象
注意:数据必须16字节对其
例子:从RAM拷贝一个全屏32位图象到VRAM
sceGuCopyImage(GU_PSM_8888,0,0,480,272,512,pixels,0,0,512,(void*)(((unsigned int)framebuffer)+0x4000000));
参数:
n psm – 象素格式
n sx – 源x坐标
n sy – 源y坐标
n width – 图象宽
n height – 图象高
n srcw – 源buffer宽
n src – 源buffer
n dx – 目标x坐标
n dy – 目标y坐标
n destw – 源buffer宽
n dest – 目标buffer


void sceGuTexEnvColor(unsigned int color)
设置纹理的环境色,具体参见sceGuTexFunc
参数
n color – 颜色常数(0x00bbggrr)

void sceGuTexFilter(int min,
int mag)
设置纹理的filter
filter:
· GU_NEAREST
· GU_LINEAR
· GU_NEAREST_MIPMAP_NEAREST
· GU_LINEAR_MIPMAP_NEAREST
· GU_NEAREST_MIPMAP_LINAR
· GU_LINEAR_MIPMAP_LINEAR
参数
n min – 缩小filter
n mag – 放大filter


void sceGuTexFlush(void)
清空纹理页面缓存
Do this if you have copied/rendered into an area currently in the texture-cache

void sceGuTexImage(int mipmap,
int width,
int height,
int tbw,
const void* tbp)
设置当前的纹理
纹理可能在住存中,不过这样会有很大的速度损失.调配纹理以取得最大速度
注意:数据要16字节对其
参数
n mipmap – mipmap 层
n width – 纹理宽(2的指数倍)
n height – 纹理高(2的指数倍)
n tbw – 纹理buffer宽(16字节对齐)
n tbp – 纹理buffer


void sceGuTexLevelMode(unsigned int a0,
float f12)

void sceGuTexMapMode(int mode,
unsigned int a1,
unsigned int a2)
设置纹理的映射方式
· GU_TEXTURE_COORDS
· GU_TEXTURE_MATRIX
· GU_ENVIRONMENT_MAP
参数:
n mode – 纹理映射方式
n a1 –未知
n a2 - 未知

void sceGuTexMode(int tpsm,
int maxmips,
int a2,
int swizzle)
设置纹理参数
纹理格式:
· GU_PSM_5650 – 高彩,16位
· GU_PSM_5551 – 高彩,16位
· GU_PSM_4444 -高彩,16位
· GU_PSM_8888 –真彩,32位
· GU_PSM_T4 – 调色板 4位(两个象素一字节)
· GU_PSM_T8 – 调色把 8位
参数
n tpsm – 纹理格式
n maxmips – mipmap的数量(0-8)
n a2 – 未知,设置0
n swizzle – GU_TRUE 优化纹理读取




void sceGuTexOffset(float u,
float v)
设置纹理偏移
注意:只用于3d T&L管线,GU_TRANSFORM_2D不受影响
参数
n u – U轴的偏移
n v – V轴的偏移


void sceGuTexProjMapMode(int mode)
设置纹理投影方式
· GU_POSITION
· GU_UV
· GU_NORMALIZED_NORMAL
· GU_NORMAL
参数
n mode – 投影方式


void sceGuTexScale(float u,
float v)
设置纹理的缩放
注意:只用于3d T&L管线,GU_TRANSFORM_2D不受影响
参数
n u – U轴的缩放
n v –V轴的缩放


void sceGuTexSlope(float slope)


void sceGuTexSync()
同步渲染管线,等到sceGuCopyImage完成


void sceGuTexWrap(int u,
int v)
设置纹理的包装方式
· GU_REPEAT – 重复
· GU_CLAMP – 边界色填充
参数

n u – U轴包装方式
n v – V轴包装方式

void sceGuClutLoad(int num_blocks,
const void* cbp)
载入CLUT(color lookup table颜色查找表)
注意:数据16字节对齐
参数
n num_blocks – 块的数量,每块8个元素
n cbp – 调色板(16字节对齐)
void sceGuClutMode(unsigned int cpsm,
unsigned int a1,
unsigned int a2,
unsigned int a3)
设置当前的CLUT方式
调色板的格式:
· GU_PSM_5650
· GU_PSM_5551
· GU_PSM_4444
· GU_PSM_8888
参数
n cpsm – 调色板的格式
n a1 – 未知,置0
n a2 – 未知,置0
n a3 – 未知,置0




void sceGuOffset(unsigned int x,
unsigned int y)
设置虚轴的偏移
PSP有一个虚轴空间为4096*4096,用以控制渲染的呈现
例子:设置渲染的中心
sceGuOffset(2048 – (480/2),2048 – (480/2))
参数
n x – 偏移(0-4098)
n y - 偏移(0-4098)


void sceGuScissor(int x,int y,int w,int h)
在当前的视口中设置裁减区域
只有当GU_SCISSOR_TEST启用后有效
参数
n x – 裁减区域X轴起始坐标
n y – 裁减区域Y轴起始坐标
n w – 裁减区域宽
n h - 裁减区域高

void sceGuViewport(int cx,
int cy,
int width,
int height)
设置视口
例子:设置一个大小为480*272的视口
sceGuViewport(2048,2048,480,272);
参数:
n cx –视口中心的X坐标
n cy – 视口中心的Y坐标
n width – 视口宽
n height – 视口高


void sceGuDrawBezier(int vtype,
int ucount,
int vcount,
const void* indices,
const void* vertices)
Bezier页面
参数:
n vtype – 顶点类型,具体参见sceGuDrawArray
n ucount – 行上的顶点数量
n vcount - 列上的顶点数量
n indices – 顶点索引buffer
n vertices – 顶点buffer

void sceGuPatchDivide (unsigned int a0, unsigned int a1)
void sceGuPatchFrontFace (unsigned int a0)
void sceGuPatchPrim (unsigned int a0)
void sceGuDrawSpline (int vtype, int ucount, int vcount, int uedge, int vedge, const void *indices, const void *vertices)


void sceGuSetMatrix(int type,
const ScePspFMatrix4* matrix)
设置转换矩阵
· GU_PROJECTION – View -> Project matrix
· GU_VIEW – World ->View matrix
· GU_MODEL – Model ->World matrix
· GU_TEXTURE – Texture matrix
参数
n type – 设置矩阵类型
n matrix – 矩阵



void sceGuBoneMatrix(unsigned int index,
const ScePspFMatrix4* matrix)
骨骼矩阵
具体参见sceGuDrawArray中的顶点定义
参数:
n index – 将被设置的矩阵索引
n matrix – 载入的矩阵

void sceGuMorphWeight(int index,
float weight)
设置举证的权重
具体参见sceGuDrawArray中的顶点定义
参数
n index – 将被设置的权重索引
n weight – 设置权重

void sceGuDrawArrayN (int primitive_type, int vertex_type, int count, int a3, const void *indices, const void *vertices)
void guSwapBuffersBehaviour(int behaviour)
void guSwapBuffersCallback(GuSwapBuffersCallback callback)