_RenderDevice

渲染设备类,功能包括渲染相关的大部分操作。 全部展开

单例展开

  • + _rd : _RenderDevice

    程序开始时自动创建。脚本中应该使用此对象。

只读属性展开

  • + x : int
    • 示例

       print(_rd.x)
  • + y : int
    • 示例

       print(_rd.y)

属性展开

  • + alphaFilter : bool

    透明过滤。

    • 示例

       _rd.alphaFilter = true
  • + animaBlendTime : uint

    动画混合时间。

    • 示例

       _rd.animaBlendTime = 5
  • + balanceColor: uint

    白平衡颜色。默认值为白色(0xFFFFFFFF)。

    • 示例

       _rd.balanceColor= 1.0
  • + bgColor : uint

    背景颜色。

    • 示例

       _rd.bgColor = _Color.Blue
  • + blockColor : uint

    半透明遮挡时的颜色。

    • 示例

       _rd.blockColor = _Color.Blue
  • + blockee : bool

    半透明遮挡。

    • 示例

       _rd.blockee = true
  • + blocker : bool

    遮挡。

    • 示例

       _rd.blocker = true
  • + blockQuality : number

    遮挡质量。

    • 示例

       _rd.blockQuality = 0.5
  • + camera : _Camera

    当前摄像机。

    • 示例

       _rd.camera
  • + colorGradingLUT : _Image

    调色的颜色查找表。

    • 示例

      _rd.colorGradingLUT = img
  • + dummyMesh : _Mesh

    设置场景中lowRenderPriorty的结点达到上限后替换的渲染Mesh。

    • 示例

       _rd.dummyMesh
  • + edge : bool

    是否描边。

    • 示例

       _rd.edge = true
  • + edgeColor : uint

    描边使用的颜色。

    • 示例

       _rd.edgeColor = _Color.Blue
  • + edgeQuality : number

    描边质量,默认值是1.0。

    • 示例

       _rd.edgeQuality = 1.0
  • + glowFactor : number

    亮度。数值为[0, 1], 默认值为0。

    • 示例

       _rd.glowFactor = 0.5
  • + h : int

    渲染设备的高度。

    • 示例

       _rd.h = 300
      print(_rd.h)
  • + hdr: bool

    HDR效果。

    • 示例

       _rd.hdr= true
  • + hdrAdaptionSpeed: number

    人眼适应速度,默认值是30。

    • 示例

       _rd.hdrAdaptionSpeed= 1.0
  • + hdrBloomIntensity: number

    泛光强度。

    • 示例

       _rd.hdrBloomIntensity= 5.0
  • + hdrBloomSize1 : number

    泛光内光圈大小。

    • 示例

       _rd.hdrBloomSize1 = true
  • + hdrBloomSize2 : number

    泛光中间光圈大小。

    • 示例

       _rd.hdrBloomSize2 = true
  • + hdrBloomSize3 : number

    泛光外光圈大小。

    • 示例

       _rd.hdrBloomSize3 = true
  • + hdrBrightThreshold: number

    亮度阈值。默认值为5.0。

    • 示例

       _rd.hdrBrightThreshold = 5.0
  • + hdrDebug: bool

    Debug HDR。

    • 示例

       _rd.hdrDebug = true
  • + hdrFactor: number

    HDR影响因子。范围为[0, 1]。]默认值为1.0。

    • 示例

       _rd.hdrFactor= 1.0
  • + hdrGamma: number

    Gamma矫正。

    • 示例

       _rd.hdrGamma = 1.0
  • + hdrLimit: number

    亮度下限。默认值是0.1。

    • 示例

       _rd.hdrLimit = 1.0
  • + hdrQuick: bool

    快速HDR。

    • 示例

       _rd.hdrQuick= true
  • + lightFactor : number

    受光系数。

    • 示例

       _rd.lightFactor = 1.5
  • + lightQuality : uint

    灯光质量。可选值为_RenderDevice.VertexLighting,顶点光照。或_RenderDevice.PixelLighting,像素光照。默认值为_RenderDevice.VertexLighting。

  • + miniPolygonOnly: bool

    只渲染小模型。

    • 示例

       _rd.miniPolygonOnly = true
  • + mip : bool

    纹理采样时是否使用mip信息。

    • 示例

       _rd.mip = true
  • + saturation : number

    对比度。范围为[0, 1]。默认为1。

    • 示例

       _rd.saturation= 1.0
  • + screenBlender : _Blender

    用于做屏幕特效。

  • + shadowCaster : bool

    渲染物是否投射阴影。

    • 示例

       _rd.shadowCaster = true
  • + shadowColor : uint

    阴影颜色。默认值为0(黑色)。

    • 示例

       _rd.shadowColor = 0
  • + shadowLength : number

    阴影的最大长度。默认值为100.0。

    • 示例

       _rd.shadowLength = 100.0
  • + shadowLight : _Vector3

    投射阴影的光的方向,默认值为(0, 0, -1)。

    • 示例

       _rd.shadowLight = _Vector3.new(0, 0, -1)
  • + shadowMapSize : uint

    用来设置阴影贴图的尺寸,默认值为1024。

    • 示例

       _rd.shadowMapSize = 1024
  • + shadowMode : uint

    阴影Mode, 默认_rd.shadowMode = 0, 这时的shadow无锯齿,是唯一可以指定color的shadow,不过caster数量较多时比较耗费性能。

    _rd.shadowMode也可直接赋值为1~4,这种shadow有锯齿,效果↑ 性能↓,当摄像机为平视的时候效果不好,reciver数量较多时比较耗费性能。

    _rd.shadowMode = 5时,给平坦地形做了优化 提高性能和质量

    • 示例

       _rd.shadowMode = 5
  • + shadowQuality : number

    阴影质量。取值范围为[0,1]。

    • 示例

       _rd.shadowQuality = 0.5
  • + shadowReceiver : bool

    渲染物是否被投上阴影。

    • 示例

       _rd.shadowReceiver = true
  • + toonColor : uint

    卡通描边的颜色。

    • 示例

       _rd. toonColor = _Color.Black
  • + toonQuality : number

    卡通描边质量,用于控制描边的宽度,取值0-1,为0时取消描边。

    • 示例

       _rd.toonQuality = 0.2
  • + toonStep : uint

    卡通光照颜色阶数,大于0时有效,为0时取消卡通光照。

    • 示例

       _rd.toonStep = 6
  • + w : int

    渲染设备的宽度。

    • 示例

        _rd.w = 400
      print(_rd.w)
  • + wireframe : bool

    线框模式。

    • 示例

       _rd.wireframe = true

构造方法展开

  • + function _RenderDevice() : _RenderDevice

公共方法展开

  • + function buildRay(x : int, y : int) : object

    从屏幕上的点(x, y)创建pick用的射线。

    • 返回
    • object,有6个属性x1,y1,z1,x2,y2,z2。其中(x1, y1, z1)表示射线的起点,(x2, y2, z2)表示射线的方向向量。
  • + function cleanRect(x1 : int, y1 : int, x2 : int, y2 : int)

    清空矩形范围。

    • 参数
    • (x1, y1) : 矩形的左上角
    • (x2, y2) : 矩形的右下角
    • 示例

       _app:onIdle(function(e) 
      _rd:cleanRect(200, 200, 300, 300)
      end)
  • + function draw3DCircle(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number, radius : number, segment : uint, color : uint)

    画3D的圆。

    • 参数
    • ( x1, y1, z1 ) : 圆心坐标
    • ( x2, y2, z2 ) : 圆的法向量
    • radius : 圆的半径
    • segment : 表示模拟圆的多边形的点数,数值越大越接近圆
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e)
      _rd:drawAxis(80)
      _rd:draw3DCircle(0, 0, 0, 0, 10, 10, 10, 40, _Color.Blue)
      end)
  • + function draw3DLine(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number, color : uint)

    画3D线。

    • 参数
    • (x1, y1, z1) : 线的端点坐标
    • (x2, y2, z2) : 线的端点坐标
    • color : 点的颜色。
    • 示例

       _app:onIdle(function(e) 
      _rd:drawAxis(80)
      _rd:draw3DLine(10, 0, 10, 30, 0, 60, _Color.Orange)
      end)
  • + function draw3DPoint(x : number, y : number, z : float, color : uint)

    画3D点。

    • 参数
    • (x, y, z) : 点的坐标
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e)
      _rd:drawAxis(80)
      _rd:draw3DPoint(10, 20, 20, _Color.Red)
      end)
  • + function draw3DRect(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number, x3 : number, y3 : number, z3 : number, color : number)

    画3d矩形。

    • 参数
    • (x1, y1, z1) : 矩形中心点
    • (x2, y2, z2) : 宽度向量
    • (x3, y3, z3) : 高度向量
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e)
      _rd:drawAxis(80)
      _rd:draw3DRect(0, 0, 0, 30, 10, 0, 0, 20, 10, _Color.Blue)
      end)
  • + function draw3DTriangle(x1 : number, y1 : number, z1 : number, x2 : number, y2 : number, z2 : number, x3 : number, y3 : number, z3 : number, color : uint)

    画3D三角形。

    • 参数
    • (x1, y1, z1) : 三角的端点坐标
    • (x2, y2, z2) : 三角的端点坐标
    • (x3, y3, z3) : 三角的端点坐标
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e)
      _rd:drawAxis(80)
      _rd:draw3DTriangle(50, 0, 0, 0, 50, 0, 0, 10, 50, _Color.Blue)
      end)
  • + function drawAxis(length : number)

    画坐标轴。

    • 参数
    • length : 坐标轴的长度。
    • 示例

       _app:onIdle(function(e) 
      rd:drawAxis(50)
      end)
  • + function drawLine(x1 : int, y1 : int, x2 : int, y2 : int, color : uint)

    画线。

    • 参数
    • (x1, y1) : 线的起点
    • (x2, y2) : 线的终点
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e) 
      _rd:drawLine(200, 200, 400, 400, _Color.Red)
      end)
  • + function drawPoint(x : int, y : int, color : uint)

    画点。

    • 参数
    • (x, y) : 表示点。
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e)
      _rd:drawPoint(400, 400, _Color.Red)
      end)
  • + function drawPolygon(pointArray : array)

    画多边形。

    • 参数
    • pointArray为多边形顶点的数组,每个元素为一个_Vector2对象。
  • + function drawRect(x1 : int, y1 : int, x2 : int, y2 : int, color : uint)

    画矩形。

    • 参数
    • (x1, y1) : 矩形的左上角
    • (x2, y2) : 矩形的右下角
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e) 
      _rd:drawRect(200, 200, 400, 400, _Color.Red)
      end)
  • + function drawTriangle(x1 : int, y1 : int, x2 : int, y2 : int, x3 : int, y3 : int, color : uint)

    画三角形。

    • 参数
    • (x1, y1) : 三角形的端点
    • (x2, y2) : 三角形的端点
    • (x3, y3) : 三角形的端点
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e) 
      _rd:drawTriangle(200, 200, 400, 200, 300, 300, _Color.Red)
      end)
  • + function fillPolygon(pointArray : array)

    填充多边形。

    • 参数
    • pointArray为多边形顶点的数组,每个元素为一个_Vector2对象。
  • + function fillRect(x1 : int, y1 : int, x2 : int, y2 : int, color : uint)

    填充矩形。

    • 参数
    • (x1, y1) : 矩形的左上角
    • (x2, y2) : 矩形的右下角
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e) 
      _rd:fillRect(200, 200, 400, 400, _Color.Red)
      end)
  • + function fillTriangle(x1 : int, y1 : int, x2 : int, y2 : int, x3 : int, y3 : int, color : uint)

    填充三角形。

    • 参数
    • (x1, y1) : 三角形的端点
    • (x2, y2) : 三角形的端点
    • (x3, y3) : 三角形的端点
    • color : 点的颜色
    • 示例

       _app:onIdle(function(e) 
      _rd:fillTriangle(200, 200, 400, 200, 300, 300, _Color.Red)
      end)
  • + function pickXYPlane(x : int, y : int, p : number[, ret : _Vector3] ) : _Vector3

    从屏幕上的点(x, y) pick平面Z = p的结果。

    • 参数
    • ret (_Vector3) : 返回对象。可选参数,缺省值为nil。当此对象不为nil时,用此对象保存返回值,而不创建新的_Vector3
    • 返回
    • pick点。
  • + function pickXZPlane(x : int, y : int, p : number[, ret : _Vector3]) : _Vector3

    从屏幕上的点(x, y) pick平面Y = p的结果。

    • 参数
    • ret (_Vector3) : 返回对象。可选参数,缺省值为nil。当此对象不为nil时,用此对象保存返回值,而不创建新的_Vector3
    • 返回
    • pick点。
  • + function pickYZPlane(x : int, y : int, p : number[, ret : _Vector3]) : _Vector3

    从屏幕上的点(x, y) pick平面X = p的结果。

    • 参数
    • ret (_Vector3) : 返回对象。可选参数,缺省值为nil。当此对象不为nil时,用此对象保存返回值,而不创建新的_Vector3
    • 返回
    • pick点。
  • + function pop2DMatrix(mat : _Matrix2D)

    _Matrix2D栈的栈顶元素弹出。每个或应该对应一个push2DMatrix。

  • + function pop3DMatrix()

    将渲染设备的_Matrix3D栈的栈顶元素弹出。每个或应该对应一个push3DMatrix。

  • + function popBlender()

    渲染设备的_Blender栈的栈顶元素弹出。每个useBlender应该对应一个popBlender。

  • + function popCamera()

    将渲染设备的_Camera栈的栈顶元素弹出,并将_RenderDevice属性camera赋为该弹出的元素值。

  • + function popClip()

    清空当前的clip。每个useClip都要对应一个popClip。

    • 示例

       _app:onIdle(function(e)
      _rd:popClip()
      end)
  • + function popClipper()

    渲染设备的_Clipper栈的栈顶元素弹出。每个useClipper应该对应一个popClipper。

  • + function popFog()

    渲染设备的_Fog栈的栈顶元素弹出。每个useFog应该对应一个popFog。

  • + function popLight()

    渲染设备的光栈的栈顶元素弹出。每个useLight应该对应一个popLight。

  • + function popMask()

    停止使用_Mask

  • + function popMaterial()

    渲染设备的_Material栈的栈顶元素弹出。每个useMaterial应该对应一个popMaterial。

  • + function projectPoint(x : number, y : number, z : number[, ret : _Vector2]) : _Vector2

    将3D的点(x, y, z)投影到屏幕上。

    • 参数
    • ret (_Vector2) : 返回对象。可选参数,缺省值为nil。当此对象不为nil时,用此对象保存返回值,而不创建新的_Vector2
    • 返回
    • 投影得到的点。
  • + function push2DMatrix(mat : _Matrix2D)

    将mat压入渲染设备的_Matrix2D栈。渲染设备会使用_Matrix2D栈顶的元素来渲染。每个应该对应一个pop2DMatrix。

  • + function push3DMatrix(mat : _Matrix3D)

    将mat压入渲染设备的_Matrix3D栈。渲染设备会使用_Matrix3D栈顶的元素来渲染。每个应该对应一个pop3DMatrix。

  • + function pushCamera()

    _RenderDevice属性camera压入渲染设备的_Camera栈。

  • + function pushMul2DMatrixLeft(mat : _Matrix2D)

    将mat左乘当前Matrix2D栈的栈顶值,并将结果压栈。渲染设备会使用Matrix2D栈顶的元素来渲染。每个应该对应一个 pop2DMatrix。

  • + function pushMul2DMatrixRight(mat : _Matrix2D)

    将mat右乘当前_Matrix2D栈的栈顶值,并将结果压栈。渲染设备会使用_Matrix2D栈顶的元素来渲染。每个应该对应一个 pop2DMatrix。

  • + function pushMulMatrix3DLeft(mat : _Matrix3D)

    将mat左乘当前_Matrix3D栈的栈顶值,并将结果压栈。渲染设备会使用_Matrix3D栈顶的元素来渲染。每个应该对应一个 pop3DMatrix。

  • + function pushMulMatrix3DRight(mat : _Matrix3D)

    将mat右乘当前_Matrix3D栈的栈顶值,并将结果压栈。渲染设备会使用_Matrix3D栈顶的元素来渲染。每个应该对应一个 pop3DMatrix。

  • + function resetDrawBoard()

    停止使用_DrawBoard

  • + function resetPickBoard()

    停止使用pickBoard。

  • + function setMissingImage(img : _Image)

    将加载图片失败时的默认图片改为img(默认为红白格),如果img为空,则改回红白格。

  • + function setResolution3D(x : int, y : int)

    降低3D分辨率,参数有效范围0~1

    • 示例

         _rd:setResolution3D(0.5, 0.5)
  • + function useBlender(blender : _Blender)

    将blender压入渲染设备的_Blender栈。渲染设备会使用_Blender栈中的所有元素来渲染。每个useBlender应该对应一个popBlender。

  • + function useClip(x1 : int, y1 : int, x2 : int, y2 : int, clip3d : bool)

    使用clip。

    • 参数
    • clip的范围是点(x1, y1)和(x2, y2)定义的矩形。
    • clip3d : 表示此clip是否是3D的。
    • 示例

       _app:onIdle(function(e)
      _rd:useClip(0, 0, 30, 30, true)
      end)
  • + function useClipper(clip : _Clipper)

    将clip压入渲染设备的_Clipper栈。渲染设备会使用_Clipper栈中的栈顶对象来渲染。每个useClipper应该对应一个popClipper。

  • + function useDrawBoard(drawBoard : _DrawBoard[, color : uint ])

    开始使用_DrawBoard。之后的渲染都会渲染到drawBoard上。

    • 参数
    • drawBoard是_DrawBoard对象。可选参数color为清空_DrawBoard所填充的颜色,默认值为黑色。
  • + function useFog(fog : _Fog)

    将fog压入渲染设备的_Fog栈。渲染设备会使用_Fog栈中的栈顶对象来渲染。每个useFog应该对应一个popFog。

  • + function useLight(light : _AmbientLight)
    function useLight(light : _SkyLight)
    function useLight(light : _PointLight)

    将light压入渲染设备的光栈。渲染设备会使用光栈中的所有元素来渲染。每个useLight应该对应一个popLight。

  • + function useMask(mask : _Mask)

    开始使用_Mask。之后的渲染都会经过_Mask的遮挡。

    • 参数
    • mask是_Mask对象。
  • + function useMaterial(mtl : _Material)

    将材质压入渲染设备的_Material栈。渲染设备会使用_Material栈中的栈顶对象来渲染。每个useMaterial应该对应一个popMaterial。

    • 示例

       _app:onIdle(function(e)
      _rd:useMaterial(mt1)
      end)
  • + function usePickBoard(x1 : int, y1 : int, x2 : int, y2 : int)

    实现在drawBoard渲染的场景中拾取模型节点。点(x1, y1)和(x2, y2)定义的矩形应和drawBoard匹配。每个usePickBoard应该对应一个resetPickBoard。

    • 示例

       _app:onIdle(function(e)
      _rd:usePickBoard(50, 50, 500, 500)
      p = sen:pick(_rd:buildRay())
      _rd:resetPickBoard()
      end)

代码示例

    _dofile('cameracontrol.lua')

    draws = {}
    draws.Axis = function() _rd:drawAxis(50) end
    draws.Point =function() _rd:drawPoint(600, 300, _Color.Yellow) end
    draws.Line = function() _rd:drawLine(500, 200, 600, 400, _Color.Red) end
    draws.Triangle = function() _rd:drawTriangle(500, 200, 600, 400, 500, 300, _Color.Yellow) end
    draws.Rect = function() _rd:drawRect(500, 200, 600, 400, _Color.Blue) end
    draws['3DPoint'] = function() _rd:draw3DPoint(50, 50, 50, _Color.Yellow) end
    draws['3DLine'] = function() _rd:draw3DLine(50, 50, 50, 200, 200, 350, _Color.Purple) end
    draws['3DTriangle'] = function() _rd:draw3DTriangle(50, 50, 50, 25, 25, 50, 75, 25, 50, _Color.Blue) end
    draws['3DCircle'] = function() _rd:draw3DCircle(50, 50, 50, 25, 25, 50, 30, 100, _Color.Yellow) end
    draws['3DRect'] = function() _rd:draw3DRect(50, 50, 50, 10, 10, 5, 20, 15, 10, _Color.Red) end

    curDraw = draws.Axis

    _app:onKeyDown(function(key)
    if key == _System.Key1 then
    curDraw = draws.Axis
    elseif key == _System.Key2 then
    curDraw = draws.Point
    elseif key == _System.Key3 then
    curDraw = draws.Line
    elseif key == _System.Key4 then
    curDraw = draws.Triangle
    elseif key == _System.Key5 then
    curDraw = draws.Rect
    elseif key == _System.Key6 then
    curDraw = draws['3DPoint']
    elseif key == _System.Key7 then
    curDraw = draws['3DLine']
    elseif key == _System.Key8 then
    curDraw = draws['3DTriangle']
    elseif key == _System.Key9 then
    curDraw = draws['3DCircle']
    elseif key == _System.Key0 then
    curDraw = draws['3DRect']
    end
    end)

    noticefont = _Font.new('Arial', 10)
    noticefont.textColor = _Color.Yellow

    _app:onIdle(function(e)
    noticefont:drawText(0, 0, 'Press 1 to draw a Axis')
    noticefont:drawText(0, 14, 'Press 2 to draw a Point')
    noticefont:drawText(0, 28, 'Press 3 to draw a Line')
    noticefont:drawText(0, 42, 'Press 4 to draw a Triangle')
    noticefont:drawText(0, 56, 'Press 5 to draw a Rect')
    noticefont:drawText(0, 70, 'Press 6 to draw a 3DPoint')
    noticefont:drawText(0, 84, 'Press 7 to draw a 3DLine')
    noticefont:drawText(0, 98, 'Press 8 to draw a 3DTriangle')
    noticefont:drawText(0, 112, 'Press 9 to draw a 3DCircle')
    noticefont:drawText(0, 126, 'Press 0 to draw a 3DRect')

    curDraw()
    end)
问题反馈(登录才可以发表哦!)