You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
3.4 KiB
JavaScript

import { BoundingRectangle } from "../../Source/Cesium.js";
import { Color } from "../../Source/Cesium.js";
import { ClearCommand } from "../../Source/Cesium.js";
import { Framebuffer } from "../../Source/Cesium.js";
import { RenderState } from "../../Source/Cesium.js";
import { Texture } from "../../Source/Cesium.js";
import createContext from "../createContext.js";
describe(
"Renderer/Clear",
function () {
var context;
beforeAll(function () {
context = createContext();
});
afterAll(function () {
context.destroyForSpecs();
});
it("default clear", function () {
ClearCommand.ALL.execute(context);
expect(context).toReadPixels([0, 0, 0, 255]);
});
it("clears to white", function () {
ClearCommand.ALL.execute(context);
expect(context).toReadPixels([0, 0, 0, 255]);
var command = new ClearCommand({
color: Color.WHITE,
});
command.execute(context);
expect(context).toReadPixels([255, 255, 255, 255]);
});
it("clears with a color mask", function () {
ClearCommand.ALL.execute(context);
expect(context).toReadPixels([0, 0, 0, 255]);
var command = new ClearCommand({
color: Color.WHITE,
renderState: RenderState.fromCache({
colorMask: {
red: true,
green: false,
blue: true,
alpha: true,
},
}),
});
command.execute(context);
expect(context).toReadPixels([255, 0, 255, 255]);
});
it("clears with scissor test", function () {
var command = new ClearCommand({
color: Color.WHITE,
});
command.execute(context);
expect(context).toReadPixels([255, 255, 255, 255]);
command.color = Color.BLACK;
command.renderState = RenderState.fromCache({
scissorTest: {
enabled: true,
rectangle: new BoundingRectangle(),
},
});
command.execute(context);
expect(context).toReadPixels([255, 255, 255, 255]);
command.renderState = RenderState.fromCache({
scissorTest: {
enabled: true,
rectangle: new BoundingRectangle(0, 0, 1, 1),
},
});
command.execute(context);
expect(context).toReadPixels([0, 0, 0, 255]);
});
it("clears a framebuffer color attachment", function () {
var colorTexture = new Texture({
context: context,
width: 1,
height: 1,
});
var framebuffer = new Framebuffer({
context: context,
colorTextures: [colorTexture],
});
var command = new ClearCommand({
color: new Color(0.0, 1.0, 0.0, 1.0),
framebuffer: framebuffer,
});
command.execute(context);
expect({
context: context,
framebuffer: framebuffer,
}).toReadPixels([0, 255, 0, 255]);
framebuffer = framebuffer.destroy();
});
it("fails to read pixels (width)", function () {
expect(function () {
expect(
context.readPixels({
width: -1,
})
).toEqual([0, 0, 0, 0]);
}).toThrowDeveloperError();
});
it("fails to read pixels (height)", function () {
expect(function () {
expect(
context.readPixels({
height: -1,
})
).toEqual([0, 0, 0, 0]);
}).toThrowDeveloperError();
});
},
"WebGL"
);