Add WebGL runtime into the js/runtime.mjs; Allow for multiple WebGL contexts

This commit is contained in:
gingerBill
2022-05-18 12:31:25 +01:00
parent 223897d224
commit 55556aea77
4 changed files with 1066 additions and 1052 deletions
-1034
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -15,6 +15,7 @@ Texture :: distinct u32
@(default_calling_convention="c") @(default_calling_convention="c")
foreign webgl { foreign webgl {
SetCurrentContextById :: proc(name: string) -> bool ---
DrawingBufferWidth :: proc() -> i32 --- DrawingBufferWidth :: proc() -> i32 ---
DrawingBufferHeight :: proc() -> i32 --- DrawingBufferHeight :: proc() -> i32 ---
+1055 -2
View File
File diff suppressed because it is too large Load Diff
+10 -16
View File
@@ -1,24 +1,18 @@
import {WasmMemoryInterface, odinSetupDefaultImports} from "../js/runtime.mjs"; import {WasmMemoryInterface, odinSetupDefaultImports, WebGLInterface} from "./runtime.mjs";
import {WebGLInterface} from "../WebGL/runtime.mjs";
export async function runWasmCanvas(wasmPath, webglCanvasElement, consoleElement, extraForeignImports) { export async function runWasmCanvas(wasmPath, consoleElement, extraForeignImports) {
let wasmMemoryInterface = new WasmMemoryInterface(); let wasmMemoryInterface = new WasmMemoryInterface();
let imports = odinSetupDefaultImports(wasmMemoryInterface, consoleElement); let imports = odinSetupDefaultImports(wasmMemoryInterface, consoleElement);
let exports = {}; let exports = {};
if (webglCanvasElement !== undefined) { let gl_context = new WebGLInterface(
let gl_context = new WebGLInterface( wasmMemoryInterface,
wasmMemoryInterface, null,
webglCanvasElement, {antialias: false},
{antialias: false}, );
); imports["webgl"] = gl_context.getWebGL1Interface();
if (!gl_context.ctx) { imports["webgl2"] = gl_context.getWebGL2Interface();
return "WebGL is not available.";
}
imports["webgl"] = gl_context.getWebGL1Interface();
imports["webgl2"] = gl_context.getWebGL2Interface();
}
if (extraForeignImports !== undefined) { if (extraForeignImports !== undefined) {
imports = { imports = {
@@ -60,4 +54,4 @@ export async function runWasmCanvas(wasmPath, webglCanvasElement, consoleElement
}; };
export {runWasmCanvas}; export {runWasmCanvas};