@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
58 lines • 3.68 kB
JavaScript
import { debug, highlightEnum } from "./../../debug/debug.js";
import { WebglEnumCullFace } from "./../../types/index.js";
export const webglPresetCull = {
off: {
enabled: false,
cullFace: WebglEnumCullFace.BACK,
},
back: {
enabled: true,
cullFace: WebglEnumCullFace.BACK,
},
front: {
enabled: true,
cullFace: WebglEnumCullFace.FRONT,
},
};
export function webglCullSet(gl, cull) {
if (cull.enabled)
gl.enable(gl.CULL_FACE);
else
gl.disable(gl.CULL_FACE);
gl.cullFace(cull.cullFace);
}
export function webglCullGet(gl) {
return {
enabled: Boolean(gl.getParameter(gl.CULL_FACE)),
cullFace: gl.getParameter(gl.CULL_FACE_MODE),
};
}
export function webglCullExec(gl, cull, action) {
const currentState = webglCullGet(gl);
webglCullSet(gl, cull);
try {
action();
}
finally {
webglCullSet(gl, currentState);
}
}
export function webglDebugCull(gl, caption = "Cull test:") {
console.log(caption);
const cull = webglCullGet(gl);
debug([
[caption, cull.enabled, "\n"],
[
{ cls: "code" },
[
"gl.",
cull.enabled ? "enable" : "disable",
"(",
highlightEnum("CULL_FACE"),
")\n",
],
["gl.cullFace(", highlightEnum(cull.cullFace), ")\n"],
],
]);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zdGF0ZS9jdWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sWUFBWSxDQUFBO0FBTzlDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FHeEI7SUFDQSxHQUFHLEVBQUU7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO0tBQ25DO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsT0FBTyxFQUFFLElBQUk7UUFDYixRQUFRLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtLQUNuQztJQUNELEtBQUssRUFBRTtRQUNILE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7S0FDcEM7Q0FDSixDQUFBO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDeEIsRUFBMEIsRUFDMUIsSUFBc0I7SUFFdEIsSUFBSSxJQUFJLENBQUMsT0FBTztRQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFBOztRQUNwQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM3QixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxFQUEwQjtJQUNuRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFXO0tBQ3pELENBQUE7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FDekIsRUFBMEIsRUFDMUIsSUFBc0IsRUFDdEIsTUFBa0I7SUFFbEIsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3JDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEIsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLENBQUE7SUFDWixDQUFDO1lBQVMsQ0FBQztRQUNQLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDbEMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUMxQixFQUEwQixFQUMxQixPQUFPLEdBQUcsWUFBWTtJQUV0QixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUM3QixLQUFLLENBQUM7UUFDRixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztRQUM3QjtZQUNJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtZQUNmO2dCQUNJLEtBQUs7Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNuQyxHQUFHO2dCQUNILGFBQWEsQ0FBQyxXQUFXLENBQUM7Z0JBQzFCLEtBQUs7YUFDUjtZQUNELENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDO1NBQ3hEO0tBQ0osQ0FBQyxDQUFBO0FBQ04sQ0FBQyJ9