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
30 lines (24 loc) • 1.17 kB
JavaScript
import { assertVulkan, InitializedArray } from "../utils.mjs"
import Handle from "./handle.mjs";
export default class SurfaceHandle extends Handle {
constructor(owner,{window}){
super(owner);
let { physicalDevice } = owner;
let surface = new VkSurfaceKHR();
if (window.createSurface(owner.instance, null, surface) !== 0)
console.error("createSurface failed");
let surfaceSupport = { $: false };
vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, 0, surface, surfaceSupport);
let surfaceCapabilities = new VkSurfaceCapabilitiesKHR()
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, surfaceCapabilities);
let surfaceFormatCount = { $: 0 };
vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, surfaceFormatCount, null);
let surfaceFormats = new InitializedArray(VkSurfaceFormatKHR, surfaceFormatCount.$);
vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, surfaceFormatCount, surfaceFormats);
this.vkSurface = surface;
}
destroy(){
this.super_destroy();
vkDestroySurfaceKHR(this.owner.instance, this.vkSurface, null);
}
}