add error message if webgl is not supported
This commit is contained in:
parent
8cf2b9b523
commit
85c6f18c00
|
@ -89,8 +89,8 @@ export default class MarkdownParser {
|
||||||
// beginning of line
|
// beginning of line
|
||||||
const paraLineStart = iter;
|
const paraLineStart = iter;
|
||||||
if (indent && this.getIndent(text, paraLineStart) <= indent) {
|
if (indent && this.getIndent(text, paraLineStart) <= indent) {
|
||||||
//smaller indent occured
|
// smaller indent occured
|
||||||
|
|
||||||
}
|
}
|
||||||
iter = this.skipSpaces(text, iter);
|
iter = this.skipSpaces(text, iter);
|
||||||
if (stoppingCondition(text, iter)) {
|
if (stoppingCondition(text, iter)) {
|
||||||
|
|
|
@ -316,3 +316,16 @@ export function createNameRegExp(name: string) {
|
||||||
if (!name) return null;
|
if (!name) return null;
|
||||||
return new RegExp(`(^|\\s+)(@${escapeRegExp(name)})(\\s+|$)`, 'g');
|
return new RegExp(`(^|\\s+)(@${escapeRegExp(name)})(\\s+|$)`, 'g');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check if webGL2 is available
|
||||||
|
* @return boolean true if available
|
||||||
|
*/
|
||||||
|
export function isWebGL2Available() {
|
||||||
|
try {
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -6,15 +6,22 @@
|
||||||
* @flow
|
* @flow
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Renderer2D from './Renderer2D';
|
import { t } from 'ttag';
|
||||||
|
|
||||||
let renderer = {
|
import Renderer2D from './Renderer2D';
|
||||||
|
import { sweetAlert } from '../actions';
|
||||||
|
import { isWebGL2Available } from '../core/utils';
|
||||||
|
|
||||||
|
const dummyRenderer = {
|
||||||
|
is3D: null,
|
||||||
render: () => null,
|
render: () => null,
|
||||||
destructor: () => null,
|
destructor: () => null,
|
||||||
renderPixel: () => null,
|
renderPixel: () => null,
|
||||||
updateCanvasData: () => null,
|
updateCanvasData: () => null,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let renderer = dummyRenderer;
|
||||||
|
|
||||||
function animationLoop() {
|
function animationLoop() {
|
||||||
renderer.render();
|
renderer.render();
|
||||||
window.requestAnimationFrame(animationLoop);
|
window.requestAnimationFrame(animationLoop);
|
||||||
|
@ -24,10 +31,20 @@ animationLoop();
|
||||||
export async function initRenderer(store, is3D: boolean) {
|
export async function initRenderer(store, is3D: boolean) {
|
||||||
renderer.destructor();
|
renderer.destructor();
|
||||||
if (is3D) {
|
if (is3D) {
|
||||||
/* eslint-disable-next-line max-len */
|
if (!isWebGL2Available()) {
|
||||||
const module = await import(/* webpackChunkName: "voxel" */ '../ui/Renderer3D');
|
store.dispatch(sweetAlert(
|
||||||
const Renderer3D = module.default;
|
t`Canvas Error`,
|
||||||
renderer = new Renderer3D(store);
|
t`Can't render 3D canvas, do you have WebGL2 disabled?`,
|
||||||
|
'error',
|
||||||
|
'OK',
|
||||||
|
));
|
||||||
|
renderer = dummyRenderer;
|
||||||
|
} else {
|
||||||
|
/* eslint-disable-next-line max-len */
|
||||||
|
const module = await import(/* webpackChunkName: "voxel" */ '../ui/Renderer3D');
|
||||||
|
const Renderer3D = module.default;
|
||||||
|
renderer = new Renderer3D(store);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
renderer = new Renderer2D(store);
|
renderer = new Renderer2D(store);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user