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

File diff suppressed because it is too large Load Diff

View File

@@ -15,6 +15,7 @@ Texture :: distinct u32
@(default_calling_convention="c")
foreign webgl {
SetCurrentContextById :: proc(name: string) -> bool ---
DrawingBufferWidth :: proc() -> i32 ---
DrawingBufferHeight :: proc() -> i32 ---

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +1,18 @@
import {WasmMemoryInterface, odinSetupDefaultImports} from "../js/runtime.mjs";
import {WebGLInterface} from "../WebGL/runtime.mjs";
import {WasmMemoryInterface, odinSetupDefaultImports, WebGLInterface} from "./runtime.mjs";
export async function runWasmCanvas(wasmPath, webglCanvasElement, consoleElement, extraForeignImports) {
export async function runWasmCanvas(wasmPath, consoleElement, extraForeignImports) {
let wasmMemoryInterface = new WasmMemoryInterface();
let imports = odinSetupDefaultImports(wasmMemoryInterface, consoleElement);
let exports = {};
if (webglCanvasElement !== undefined) {
let gl_context = new WebGLInterface(
wasmMemoryInterface,
webglCanvasElement,
{antialias: false},
);
if (!gl_context.ctx) {
return "WebGL is not available.";
}
imports["webgl"] = gl_context.getWebGL1Interface();
imports["webgl2"] = gl_context.getWebGL2Interface();
}
let gl_context = new WebGLInterface(
wasmMemoryInterface,
null,
{antialias: false},
);
imports["webgl"] = gl_context.getWebGL1Interface();
imports["webgl2"] = gl_context.getWebGL2Interface();
if (extraForeignImports !== undefined) {
imports = {
@@ -60,4 +54,4 @@ export async function runWasmCanvas(wasmPath, webglCanvasElement, consoleElement
};
export {runWasmCanvas};
export {runWasmCanvas};