|
@@ -12,7 +12,8 @@ import { DataBuffer } from '../Meshes/dataBuffer';
|
|
|
import { Tools } from "../Misc/tools";
|
|
|
import { Observer } from "../Misc/observable";
|
|
|
import { EnvironmentTextureTools, EnvironmentTextureSpecularInfoV1 } from "../Misc/environmentTextureTools";
|
|
|
-import { Color4, Matrix, Viewport, Color3 } from "../Maths/math";
|
|
|
+import { Matrix, Viewport, Color3 } from "../Maths/math";
|
|
|
+import { IColor4Like } from '../Maths/math.like';
|
|
|
import { Scene } from "../scene";
|
|
|
import { RenderTargetCreationOptions } from "../Materials/Textures/renderTargetCreationOptions";
|
|
|
import { IPipelineContext } from './IPipelineContext';
|
|
@@ -89,7 +90,10 @@ interface INativeEngine {
|
|
|
drawIndexed(fillMode: number, indexStart: number, indexCount: number): void;
|
|
|
draw(fillMode: number, vertexStart: number, vertexCount: number): void;
|
|
|
|
|
|
- clear(r: number, g: number, b: number, a: number, backBuffer: boolean, depth: boolean, stencil: boolean): void;
|
|
|
+ clear(flags: number): void;
|
|
|
+ clearColor(r: number, g: number, b: number, a: number): void;
|
|
|
+ clearDepth(depth: number): void;
|
|
|
+ clearStencil(stencil: number): void;
|
|
|
|
|
|
getRenderWidth(): number;
|
|
|
getRenderHeight(): number;
|
|
@@ -145,6 +149,13 @@ class NativeFilter {
|
|
|
public static readonly MINLINEAR_MAGPOINT_MIPPOINT = 10;
|
|
|
}
|
|
|
|
|
|
+// these flags match bgfx.
|
|
|
+class NativeClearFlags
|
|
|
+{
|
|
|
+ public static readonly CLEAR_COLOR = 1;
|
|
|
+ public static readonly CLEAR_DEPTH = 2;
|
|
|
+ public static readonly CLEAR_STENCIL = 4;
|
|
|
+}
|
|
|
// TODO: change this to match bgfx.
|
|
|
// Must match AddressMode enum in SpectreEngine.h.
|
|
|
class NativeAddressMode {
|
|
@@ -280,11 +291,21 @@ export class NativeEngine extends Engine {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public clear(color: Color4, backBuffer: boolean, depth: boolean, stencil: boolean = false): void {
|
|
|
- if (color == null) {
|
|
|
- return;
|
|
|
+ public clear(color: Nullable<IColor4Like>, backBuffer: boolean, depth: boolean, stencil: boolean = false): void {
|
|
|
+ var mode = 0;
|
|
|
+ if (backBuffer && color) {
|
|
|
+ this._native.clearColor(color.r, color.g, color.b, color.a !== undefined ? color.a : 1.0);
|
|
|
+ mode |= NativeClearFlags.CLEAR_COLOR;
|
|
|
+ }
|
|
|
+ if (depth) {
|
|
|
+ this._native.clearDepth(1.0);
|
|
|
+ mode |= NativeClearFlags.CLEAR_DEPTH;
|
|
|
+ }
|
|
|
+ if (stencil) {
|
|
|
+ this._native.clearStencil(0);
|
|
|
+ mode |= NativeClearFlags.CLEAR_STENCIL;
|
|
|
}
|
|
|
- this._native.clear(color.r, color.g, color.b, color.a, backBuffer, depth, stencil);
|
|
|
+ this._native.clear(mode);
|
|
|
}
|
|
|
|
|
|
public createIndexBuffer(indices: IndicesArray): NativeDataBuffer {
|