pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
54 lines (50 loc) • 2.05 kB
JavaScript
;
var isWebGLSupported = require('../../utils/browser/isWebGLSupported.js');
var isWebGPUSupported = require('../../utils/browser/isWebGPUSupported.js');
var AbstractRenderer = require('./shared/system/AbstractRenderer.js');
;
const renderPriority = ["webgl", "webgpu", "canvas"];
async function autoDetectRenderer(options) {
let preferredOrder = [];
if (options.preference) {
preferredOrder.push(options.preference);
renderPriority.forEach((item) => {
if (item !== options.preference) {
preferredOrder.push(item);
}
});
} else {
preferredOrder = renderPriority.slice();
}
let RendererClass;
let finalOptions = {};
for (let i = 0; i < preferredOrder.length; i++) {
const rendererType = preferredOrder[i];
if (rendererType === "webgpu" && await isWebGPUSupported.isWebGPUSupported()) {
const { WebGPURenderer } = await Promise.resolve().then(function () { return require('./gpu/WebGPURenderer.js'); });
RendererClass = WebGPURenderer;
finalOptions = { ...options, ...options.webgpu };
break;
} else if (rendererType === "webgl" && isWebGLSupported.isWebGLSupported(
options.failIfMajorPerformanceCaveat ?? AbstractRenderer.AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat
)) {
const { WebGLRenderer } = await Promise.resolve().then(function () { return require('./gl/WebGLRenderer.js'); });
RendererClass = WebGLRenderer;
finalOptions = { ...options, ...options.webgl };
break;
} else if (rendererType === "canvas") {
finalOptions = { ...options };
throw new Error("CanvasRenderer is not yet implemented");
}
}
delete finalOptions.webgpu;
delete finalOptions.webgl;
if (!RendererClass) {
throw new Error("No available renderer for the current environment");
}
const renderer = new RendererClass();
await renderer.init(finalOptions);
return renderer;
}
exports.autoDetectRenderer = autoDetectRenderer;
//# sourceMappingURL=autoDetectRenderer.js.map