UNPKG

simple-nvk

Version:

Graphic libary, using Javascript and Node-Vulkan.<br> It has similarities to WebGPU in some places.<br> ## Features Abstractions of Vulkan features like staged buffers.<br> Much shorter to write than Vulkan.<br> ## Install ````console npm install s

59 lines (48 loc) 1.78 kB
import nvk from "nvk"; import { pushHandle, deleteHandle, InitializedArray, assertVulkan } from "./utils.mjs" import * as enums from "./snvk-enum.mjs"; import DeviceHandle from "./device.mjs"; export default class SNVK { constructor() { Object.assign(this, enums); this.instance = null; this.handles = []; } startWindow(obj) { this.window = new VulkanWindow(obj); } closeWindow() { this.window.close(); }; startVulkan() { this.createInstance(); } shutdown() { this.dh.destroy(); vkDestroyInstance(this.instance, null); } createDevice(createInfo) { return this.dh = new DeviceHandle(this, createInfo); } createInstance() { let validationLayers = ["VK_LAYER_LUNARG_standard_validation", "VK_LAYER_LUNARG_parameter_validation"]; let win = new VulkanWindow({ width: 1, height: 1, title: "title" }); let extensions = [...win.getRequiredInstanceExtensions()]; win.close(); let appInfo = new VkApplicationInfo(); appInfo.pApplicationName = "NVK Mandelbrot"; appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.pEngineName = "engine"; appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0); appInfo.apiVersion = VK_API_VERSION_1_0; let instanceInfo = new VkInstanceCreateInfo(); instanceInfo.pApplicationinfo = appInfo; instanceInfo.enabledLayerCount = validationLayers.length; instanceInfo.ppEnabledLayerNames = validationLayers; instanceInfo.enabledExtensionCount = extensions.length; instanceInfo.ppEnabledExtensionNames = extensions; this.instance = new VkInstance(); let result = vkCreateInstance(instanceInfo, null, this.instance) assertVulkan(result); } }