电玩巴士 > PSV > 软件教程 > 正文

PS Suite SDK官方开发帮助文档完整中文翻译

发布时间:2012/5/29 16:33:44 来源:电玩巴士 作者:天楼神威

论坛PSS专区

  Core概要

  Sce.Pss.Core提供了数学函数等游戏系统基本功能。

  数学函数

  FMath是一个提供了数学函数的包装函数和便利函数的静态类。定义了float用的数学函数以及一些便利的函数。

  向量类型

  Matrix4、Vector4、Vector3、Vector2和Quaternion是表示float元素的向量类型结构。定义了4D矩阵、4D以及以下的向量以及四元数。

  包装类型

  Half、Rgba、Rgba4444、Rgba5551和Rgba565是表示图形中使用的数据结构。定义了半精度浮点型以及整数表示的颜色类型。

  单位和坐标系

  角度是以弧度为单位来表示的。矩阵是以右手坐标系来表示的。此外,矩阵乘法的顺序是parent*child和matrix*vector。请注意Cg着色器语言中的矩阵乘法顺序是相反的。例如,在Cg着色器语言的WorldViewProjection语义中,根据Sce.Pss.Core,是按照 projection*view*world来计算的。

  使用举例

  以下代码是生成矩阵和计算矩阵以及访问元素的例子。

  使用举例2

  如果想要的话,可用静态函数来代替成员函数。为了提高性能,也可以使用引用参数的重载函数。

  关于参数限制

  当使用需要传递引用参数的函数时,将this参数或ref参数作为变量指定给out参数将计算不出正确的结果。

  Graphics概要

  Sce.Pss.Core.Graphics提供了图形渲染功能。其功能模型是继续OpenGL ES 2.0的。

  图形上下文

  GraphicsContext控制全部图形渲染,这个类代表OpenGL的图像上下文。这个类的构造函数用来初始化图形设备和屏幕,成员函数用来执行图形渲染。GraphicsContext根据系统的标准设置初始化图形设备和屏幕。如果有必要,屏幕尺寸和像素格式可以通过参数来指定。在初始化后,可以获得图形设备的规格和实际屏幕尺寸,以及像素格式。为了执行图形渲染,需要提前创建一个图形对象(稍后描述),设置图形对象和渲染状态,并使用GraphicsContext的成员函数来渲染图元。

  着色器程序

  ShaderProgram控制着色器功能,这个类代表OpenGL的程序对象。它包含顶点着色器和片段着色器,这个类通过保存这些着色器程序的文件来创建。ShaderProgram拥有多个统一的变量和属性变量。可以设置统一的变量值,并将顶点数据连续地转移到属性变量。通过分配给它们的数字来访问这些变量。如果有必要,可以用指定的数字关联这些变量,这对应用很有用。着色器文件的扩展名是.cgx,它是通过写好的Cg语言源代码转换的二进制文件。使用.vcg和.fcg或.vp.cg和.fp.cg作为源代码的扩展名。当源代码的扩展名是.vcg和fcg时,相同名字的顶点着色器和片段着色器会保存到一个文件中。

  顶点缓冲

  VertexBuffer保存了顶点数据,这个类代表OpenGL的顶点缓冲对象。必要时,这个类可以保存多个顶点数组和一个索引数组,它可以通过指定大小和格式来创建。可以将多个VertexBuffer指定到GraphicsContext。每个顶点数组按顺序被连接到ShaderProgram的属性变量。当多个索引数组启用时,将使用最后一个。

  纹理

  纹理保存了像素数据,这个类代表OpenGL的一个纹理对象。它有衍生类(Texture2D、TextureCube等),可以从一个图像文件或指定它大小和格式来创建一个Texture。可以将多个Texture指定到GraphicsContext。每个Texture按顺序被连接到ShaderProgram的采样器。可用的图像格式是PNG、JPG、BMP和GIF(但是,不支持动画GIF)。

  帧缓冲

  FrameBuffer控制着渲染结果的存储地址,这个类代表OpenGL的一个帧缓冲对象。将渲染结果的存储地址从屏幕改到另一个缓冲,这将启用离屏渲染。使用FrameBuffer可以设置颜色和深度的存储地址。作为颜色的存储地址可以设置为ColorBuffer,作为深度的存储地址可以设置为DepthBuffer。如果在创建时指定了Renderable选项,作为颜色的存储地址可以设置为Texture。根据颜色的存储地址和深度的存储地址,可能不会进行渲染。在当前的组合下是否进行渲染可以通过参考FrameBuffer.Status属性来检查。

  颜色缓冲和深度缓冲

  ColorBuffer和DepthBuffer保存了渲染结果,这些类代表OpenGL的渲染缓冲对象。ColorBuffer保存颜色值,DepthBuffer保存深度值以及模板值,这些类可以通过指定大小和格式来创建。不能将ColorBuffer和DepthBuffer设置给GraphicsContext。这些应设置给FrameBuffer。

  关于功能限制
  为了设备之间的兼容性起见,以下功能无法使用。
  ·纹理的重复模式不是2的乘方
  ·压缩的纹理
  ·顶点纹理
  ·深度纹理
  ·3D纹理
  ·半浮点纹理渲染
  ·亮度阿尔法纹理渲染

  此外,设备的性能只限于以下值。
  ·MaxTextureSize 2048
  ·MaxCubeMapTextureSize 2048
  ·MaxRenderbufferSize 2048
  ·MaxVertexUniformVectors 128
  ·MaxFragmentUniformVectors 64
  ·MaxVertexAttribs 8
  ·MaxVaryingVectors 8
  ·MaxTextureImageUnits 8
  ·MaxAliasedLineWidth 8
  ·MaxAliasedPointSize 128

  着色器描述
  着色器描述与标准Cg语言相比有以下限制。
  ·不能使用与GLSL和Cg保留字相同的名字作为变量和函数名。
  ·注意一些保留字是不区分大小写的(Texture、Matrix、Vector等)。
  ·顶点着色器输出和片段着色器输入的语义必须指定。
  ·顶点着色器输出和片段着色器输入的名字和语义必须匹配。
  ·片段着色器输出必须制定COLOR语义。
  ·着色器不能使用重叠的TEXUNIT语义。
  ·在一些语义中,变量的类型是受限的(NORMAL、PSIZE、FOG等)。
  ·循环迭代次数的最大值必须是一个常数。
  ·为了控制循环迭代次数,可以通过一条break语句来中止循环。
  ·不能使用attribute、varying和sampler变量数组。
  ·不能使用uniform int数组访问uniform float2/3/4 xyzw。
  ·不能使用uniform int数组访问uniform float4x4 columns。
  ·不能对标量变量进行swizzle(f.xxxx等)。
  ·如果没有PSIZE,varying变量可以使用8 packed vectors(不包含POSITION)。
  ·如果有PSIZE,varying变量可以使用8 vectors(不包含POSITION和PSIZE)。

  顶点着色器的输入可以用以下语义来指定
  ·POSITION
  ·NORMAL
  ·TEXCOORD0-7
  ·COLOR0-1
  ·DIFFUSE
  ·SPECULAR
  ·TANGENT
  ·BINORMAL
  ·BLENDWEIGHT
  ·BLENDINDICES
  ·FOGCOORD
  ·POINTSIZE

  顶点着色器的输出可以用以下语义来指定
  ·POSITION(HPOS)
  ·TEXCOORD0-7(TEX0-7)
  ·COLOR0-1(COL0-1)
  ·FOGC(FOG)
  ·PSIZE(PSIZ)

  片段着色器的输入可以用以下语义来指定
  ·TEXCOORD0-7(TEX0-7)
  ·COLOR0-1(COL0-1)
  ·FOGC(FOG)
  ·POINTCOORD
  ·WPOS
  ·FACE

  片段着色器的输出可以用以下语义来指定

  ·COLOR

  Audio概要

  Sce.Pss.Core.Audio提供了播放音效和BGM的功能。

  音效

  Sound类代表音效数据。SoundPlayer类用来播放音效。对于一个Sound类中的一种音效可以同时被多个SoundPlayer类播放。Sound通过wav文件创建。通过调用Sound.CreatePlayer()创建SoundPlayer与Sound对象之间的连接。调用SoundPlayer.Play()将播放音效。

  BGM

  Bgm类代表BGM数据。BgmPlayer类用来播放BGM。任何时间只能播放一个Bgm类中的数据。因此不能创建多个BgmPlayer类。Bgm通过mp3文件创建。通过调用Bgm.CreatePlayer()创建BgmPlayer与Bgm对象之间的连接。调用BgmPlayer.Play()将播放音乐。

  Input概要

  Sce.Pss.Core.Input提供了从输入设备获得信息的功能。

  手柄

  GamePad.GetData()返回GamePadData结构,它保存了手柄状态。定期调用GamePad.GetData()并根据手柄的状态来控制应用。

  触摸屏

  Touch.GetData()返回一个TouchData结构的数组,它保存了手指触摸触摸屏的状态。当多个手指触摸触摸屏时,将返回保存多个TouchData结构的数组。定期调用Touch.GetData()并根据触摸屏的状态来控制应用。

  运动传感器

  Motion.GetData()返回MotionData结构,它保存了运动传感器检测到的加速度和角速度的值。定期调用Motion.GetData()并根据运动传感器的状态来控制应用。

  Imaging概要

  Sce.Pss.Core.Imaging提供了有关图像处理的功能。你可以加载图像文件和在图像中渲染字符。

  图像

  Image类代表图像。Image可以通过PNG、JPG、BMP或者GIF图像文件(但是,不支持动画GIF)创建,同样也可以通过指定的颜色和大小创建一个单色图像。为转换图像提供了如Image.Resize()和Image.Crop()这样的方法。为在图像中粘贴文本或其他图像提供了如Image.DrawText()和Image.DrawImage()这样的方法。为了从Image创建纹理,需要使用Image.ToBuffer()来获得图像的内存镜像,并将它传递给Texture2D.SetPixels()。

  字体和渲染字符

  可以通过调用Image.DrawText()在图像内绘制字符。你可以通过传递给Image.DrawText()的Font对象来指定渲染字符时用的字体。可以通过指定它的名字、大小、风格来创建一个Font。此外,可以通过传递FontAlias来创建一个系统标准字体。Font.GetTextWidth()是用来获得渲染字符图像所需宽度的方法。这个方法根据字符串的长度来确定图像的宽度。此外,Font.GetTextMetrics()是用来获得每个字符度量信息的方法。对于简单的目的这个方法不是必需的,它是用来获得每个字符的宽,高等的。

  Environment概要

  Sce.Pss.Core.Environment提供了保存数据,获得应用的运行时环境和调用其他应用的功能。

  SystemEvents类

  SystemEvents类接收来自系统的事件。它可以在一个应用从最小化状态恢复时响应事件。应用必须在每帧显式调用SystemEvents.CheckEvents()。通过调用CheckEvents()来检查来自系统的事件,并更新其内部的状态。通过注册如SystemEvents.OnRestored的事件处理程序,将会在应用状态改变时收到通知。

  SystemParameters类

  SystemParameters用来获得系统设置。例如,可以从SystemParameters.Language和SystemParameters.GamePadButtonMeaning来获得语言设置和○×按键的含义。

  Storage类

  Storage类是利用文件来保存和加载应用数据的类。使用Storage类,在每个平台应用会自动地使用适当的位置来保存数据。

  PersistentMemory类

  PersistentMemory类提供了永久的内存来自动保存/恢复应用状态。当应用中止时,PersistentMemory类自动将数据保存在提供的64KB非易失性内存区域,当程序重新启动时,它自动读取这段内存。由于可以被保存的内存大小被限制为64KB,所以根据其目的,它必须它必须从Stroage类中分离出来。

  Shell类

  Shell类调用一个shell功能(例如,启动其他应用)。通过Shell.Action.BrowserAction()等来创建一个代表指定调用内容的Action结构,并将这个Action结构传给Shell.Execute()来调用shell功能。

  通用对话框

  通用对话框是用于显示应用通常使用的对话框的功能。ICommonDialog接口是一个代表通用对话框的通用接口。ICommonDialog定义了通用对话框的通用接口,例如,Open()方法和State属性。TextInputDialog是一个用来显示文本输入对话框的通用对话框类。使用TextInputDialog可以显示一个用来输入字符的模态对话框。

  剪贴板

  通过Clipboard类,你可以从运行时环境的剪贴板中得到文本或将文本保存到剪贴板。

  UI概要

  Sce.Pss.HighLevel.UI提供了UI Toolkit,它实现了UI机制。在UI Toolkit上操作UI部件和动画也包含在内。可以通过加载Sce.Pss.HighLevel.UI.dll来使用它。可以很容易地显示按钮和对话框,也可以通过附加的布局工具很简单的放置UI部件。有关详情,请参考UI Toolkit Programming Guide和Sce.Pss.HighLevel.ui的API参考。

  UISystem类

  UISystem类是一个使用UI Toolkit提供的功能的静态类。

  Model概要

  Sce.Pss.HighLevel.Model提供了基本模型显示功能。

  模型

  BasicModel是一个代表基本模型数据的类,它通过加载一个保存模型数据的文件来创建。BasicModel有设置世界矩阵、设置当前运动、动画计算、矩阵计算、图形渲染等API,并通过调用这些可以显示模型。模型文件的扩展名是.mdx,它是通过如COLLADA的一般模型数据转换的二进制文件。模型文件保存了如层次结构、形状数据、材质、纹理和动画的信息。

  程序

  BasicProgram是一个代表基本着色器程序的类,它可以应用如光照、雾和皮肤的基本效果。BasicProgram包含如矩阵、材质、灯光、雾、渲染模式等参数,可以通过设置这些参数来实现着色器功能。根据设置参数可以自动加载着色器文件。所以,BasicProgram需要的所有着色器文件必须复制到应用目录。

  参数

  BasicParameters是一个管理BasicProgram参数的类。上面提到的参数都保存在这个类中。一个BasicProgram有一个BasicParameters,但是多个BasicProgram可以共享一个BasicParameters。这对于例如摄像机和灯光的全局参数设置很有用。

  程序容器

  BasicProgramContainer是一个管理已经加载的程序的类,它可以使用字符串作为键将程序添加到字典中。加载一个模型后,这个类用于连接程序和模型。通过这个,根据字符串键适当的程序可以应用于模型上,或者已经加载的程序可以共享给多个模型。

  纹理容器

  BasicTextureContainer是一个管理已经加载的纹理的类,它可以使用字符串作为键将纹理添加到字典中。加载一个模型后,这个类用于连接纹理和模型。通过这个,根据字符串键适当的纹理可以应用与模型上,或者已经加载的纹理可以共享给多个模型。

  GameEngine2D概要

  Sce.Pss.HighLevel.GameEngine2D提供了一个2D游戏引擎。它有创建2D游戏所需的功能(例如子画面、粒子和瓦片)。一些类如Director、Action和TransitionScene配备了类似Cocos2d(http://www.cocos2d-iphone.org/)的接口。

  基础库

  Sce.Pss.HighLevel.GameEngine2D.Base命名空间提供了2D游戏引擎基础类,如数学相关的类和图形系统类。

  Director类

  Director是一个控制着整个游戏引擎的类。它有管理Scene类的功能和主循环有关的功能。

  Action类

  Action周期性地执行各种功能(如对象移动/旋转、放大/缩小、变色)。

  Node类

  Node是一个代表场景图节点的基类。从Node类继承的类有Scene、SpriteUV和ParticleSystem等类。

  Scene类

  Scene是一个代表场景图根节点的基类。

  SpriteUV类

  SpriteUV是一个代表单个子画面的简单类。你可以指定子画面的纹理显示范围。

  SpriteList类

  SpriteList是一个用于在一条渲染指令中显示多个子画面的类。以渲染的性能为目的,它会适当的将尽可能多的精灵一起渲染。

  SpriteTile类

  SpriteTile是一个用于以瓦片形状排列渲染的类。

  Label类

  Label是一个用于绘制字符串的类。

  ParticleSystem类

  ParitcleSystem是一个用于通过渲染一组小粒子来创建视觉效果(如火焰、烟雾和雨)的类。为了控制粒子移动,引入了各种各样的参数。

  TransitionScene类

  TransitionScene提供了场景转换时的一些视觉效果。

  Physics2D概要

  Sce.Pss.HighLevel.Physics2D提供了基本的2D物理模拟功能。

  PhysicsBody

  PhysicsBody是一个代表基本2D刚体的类,它包含几个参数,如刚体的速度和加速度。

  PhysicsShape

  PhysicsShape是一个代表基本2D碰撞形状的类,它可以表示最多30个顶点的凸多边形。但球体被看做是没有顶点的多边形例外处理。

  PhysicsJoint

  PhysicsJoint是一个代表基本2D关节的类,它给出了刚体对角度和位置的限制。你可以利用这个PhysicsJoint创建球关节和滑动关节。

  PhysicsScene

  PhysicsScene是一个代表基本2D物理场景的类。在每个场景中进行物理模拟。

  PhysicsSolverPair

  PhysicsSolverPair是求解阶段的碰撞信息,它包含一对刚体的碰撞信息。

  PhysicsUtility

  PhysicsUtility是定义了模拟内部使用的常量和静态函数的类。

 << 上一页  [9] [10] [11] [12] [13] [14] [15] [16] 

提示:支持键盘“← →”键翻页 阅读全文

相关推荐

评论