mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-13 23:26:24 +00:00
Swap chains, part 2 (#94)
This commit is contained in:
@@ -19,9 +19,9 @@
|
||||
|
||||
nxtDevice device;
|
||||
nxtQueue queue;
|
||||
nxtSwapChain swapchain;
|
||||
nxtRenderPipeline pipeline;
|
||||
nxtRenderPass renderpass;
|
||||
nxtFramebuffer framebuffer;
|
||||
|
||||
void init() {
|
||||
device = CreateCppNXTDevice().Release();
|
||||
@@ -32,6 +32,15 @@ void init() {
|
||||
nxtQueueBuilderRelease(builder);
|
||||
}
|
||||
|
||||
{
|
||||
nxtSwapChainBuilder builder = nxtDeviceCreateSwapChainBuilder(device);
|
||||
uint64_t swapchainImpl = GetSwapChainImplementation();
|
||||
nxtSwapChainBuilderSetImplementation(builder, swapchainImpl);
|
||||
swapchain = nxtSwapChainBuilderGetResult(builder);
|
||||
nxtSwapChainBuilderRelease(builder);
|
||||
}
|
||||
nxtSwapChainConfigure(swapchain, NXT_TEXTURE_FORMAT_R8_G8_B8_A8_UNORM, 640, 480);
|
||||
|
||||
const char* vs =
|
||||
"#version 450\n"
|
||||
"const vec2 pos[3] = vec2[3](vec2(0.0f, 0.5f), vec2(-0.5f, -0.5f), vec2(0.5f, -0.5f));\n"
|
||||
@@ -57,13 +66,6 @@ void init() {
|
||||
renderpass = nxtRenderPassBuilderGetResult(builder);
|
||||
nxtRenderPassBuilderRelease(builder);
|
||||
}
|
||||
{
|
||||
nxtFramebufferBuilder builder = nxtDeviceCreateFramebufferBuilder(device);
|
||||
nxtFramebufferBuilderSetRenderPass(builder, renderpass);
|
||||
nxtFramebufferBuilderSetDimensions(builder, 640, 480);
|
||||
framebuffer = nxtFramebufferBuilderGetResult(builder);
|
||||
nxtFramebufferBuilderRelease(builder);
|
||||
}
|
||||
{
|
||||
nxtRenderPipelineBuilder builder = nxtDeviceCreateRenderPipelineBuilder(device);
|
||||
nxtRenderPipelineBuilderSetSubpass(builder, renderpass, 0);
|
||||
@@ -78,6 +80,22 @@ void init() {
|
||||
}
|
||||
|
||||
void frame() {
|
||||
nxtTexture backbuffer = nxtSwapChainGetNextTexture(swapchain);
|
||||
nxtTextureView backbufferView;
|
||||
{
|
||||
nxtTextureViewBuilder builder = nxtTextureCreateTextureViewBuilder(backbuffer);
|
||||
backbufferView = nxtTextureViewBuilderGetResult(builder);
|
||||
nxtTextureViewBuilderRelease(builder);
|
||||
}
|
||||
nxtFramebuffer framebuffer;
|
||||
{
|
||||
nxtFramebufferBuilder builder = nxtDeviceCreateFramebufferBuilder(device);
|
||||
nxtFramebufferBuilderSetRenderPass(builder, renderpass);
|
||||
nxtFramebufferBuilderSetDimensions(builder, 640, 480);
|
||||
nxtFramebufferBuilderSetAttachment(builder, 0, backbufferView);
|
||||
framebuffer = nxtFramebufferBuilderGetResult(builder);
|
||||
nxtFramebufferBuilderRelease(builder);
|
||||
}
|
||||
nxtCommandBuffer commands;
|
||||
{
|
||||
nxtCommandBufferBuilder builder = nxtDeviceCreateCommandBufferBuilder(device);
|
||||
@@ -93,8 +111,12 @@ void frame() {
|
||||
|
||||
nxtQueueSubmit(queue, 1, &commands);
|
||||
nxtCommandBufferRelease(commands);
|
||||
nxtTextureTransitionUsage(backbuffer, NXT_TEXTURE_USAGE_BIT_PRESENT);
|
||||
nxtSwapChainPresent(swapchain, backbuffer);
|
||||
nxtFramebufferRelease(framebuffer);
|
||||
nxtTextureViewRelease(backbufferView);
|
||||
|
||||
DoSwapBuffers();
|
||||
DoFlush();
|
||||
}
|
||||
|
||||
int main(int argc, const char* argv[]) {
|
||||
|
||||
Reference in New Issue
Block a user