Skip to content

Instantly share code, notes, and snippets.

@Hyp-X
Created August 21, 2022 10:50
Show Gist options
  • Save Hyp-X/4d209666ff7ec5b9bb49e6fe7eb4e252 to your computer and use it in GitHub Desktop.
Save Hyp-X/4d209666ff7ec5b9bb49e6fe7eb4e252 to your computer and use it in GitHub Desktop.
package graphics
import "vendor:directx/dxgi"
import "vendor:directx/d3d12"
import "dxc"
IID_PPV_ARGS :: proc(ppv : ^^$T) -> (^dxgi.IID, ^rawptr)
{
return __uuidof(T), cast(^rawptr) ppv
}
__uuidof :: proc($T : typeid) -> ^dxgi.IID
{
when T == d3d12.IDebug {
return d3d12.IDebug_UUID
} else when T == dxgi.IFactory4 {
return dxgi.IFactory4_UUID
} else when T == d3d12.IDevice {
return d3d12.IDevice_UUID
} else when T == d3d12.ICommandQueue {
return d3d12.ICommandQueue_UUID
} else when T == dxgi.ISwapChain3 {
return dxgi.ISwapChain3_UUID
} else when T == d3d12.IDescriptorHeap {
return d3d12.IDescriptorHeap_UUID
} else when T == d3d12.IResource {
return d3d12.IResource_UUID
} else when T == d3d12.IFence {
return d3d12.IFence_UUID
} else when T == d3d12.ICommandAllocator {
return d3d12.ICommandAllocator_UUID
} else when T == d3d12.IGraphicsCommandList {
return d3d12.IGraphicsCommandList_UUID
} else when T == dxc.IUtils {
return dxc.IUtils_UUID
} else when T == dxc.ICompiler3 {
return dxc.ICompiler3_UUID
} else when T == dxc.IResult {
return dxc.IResult_UUID
} else when T == dxc.IBlobUtf8 {
return dxc.IBlobUtf8_UUID
} else {
#assert(false, "Unknown type")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment