gpu: example: use Device.createRenderPipeline
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
4e31e015a4
commit
cc40004a5f
1 changed files with 35 additions and 36 deletions
|
|
@ -101,40 +101,39 @@ pub fn main() !void {
|
||||||
.dst_factor = .one,
|
.dst_factor = .one,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
const color_target = gpu.ColorTargetState{
|
||||||
var color_target = std.mem.zeroes(c.WGPUColorTargetState);
|
.format = window_data.swap_chain_format,
|
||||||
color_target.format = @enumToInt(window_data.swap_chain_format);
|
.blend = &blend,
|
||||||
color_target.blend = @ptrCast(*const c.WGPUBlendState, &blend);
|
.write_mask = .all,
|
||||||
color_target.writeMask = c.WGPUColorWriteMask_All;
|
};
|
||||||
|
const fragment = gpu.FragmentState{
|
||||||
var fragment = std.mem.zeroes(c.WGPUFragmentState);
|
.module = fs_module,
|
||||||
fragment.module = @ptrCast(c.WGPUShaderModule, fs_module.ptr);
|
.entry_point = "main",
|
||||||
fragment.entryPoint = "main";
|
.targets = &.{color_target},
|
||||||
fragment.targetCount = 1;
|
.constants = null,
|
||||||
fragment.targets = &color_target;
|
};
|
||||||
|
const pipeline_descriptor = gpu.RenderPipeline.Descriptor{
|
||||||
var pipeline_descriptor = std.mem.zeroes(c.WGPURenderPipelineDescriptor);
|
.fragment = &fragment,
|
||||||
pipeline_descriptor.fragment = &fragment;
|
.layout = null,
|
||||||
|
.depth_stencil = null,
|
||||||
// Other state
|
.vertex = .{
|
||||||
pipeline_descriptor.layout = null;
|
.module = vs_module,
|
||||||
pipeline_descriptor.depthStencil = null;
|
.entry_point = "main",
|
||||||
|
.buffers = null,
|
||||||
pipeline_descriptor.vertex.module = @ptrCast(c.WGPUShaderModule, vs_module.ptr);
|
},
|
||||||
pipeline_descriptor.vertex.entryPoint = "main";
|
.multisample = .{
|
||||||
pipeline_descriptor.vertex.bufferCount = 0;
|
.count = 1,
|
||||||
pipeline_descriptor.vertex.buffers = null;
|
.mask = 0xFFFFFFFF,
|
||||||
|
.alpha_to_coverage_enabled = false,
|
||||||
pipeline_descriptor.multisample.count = 1;
|
},
|
||||||
pipeline_descriptor.multisample.mask = 0xFFFFFFFF;
|
.primitive = .{
|
||||||
pipeline_descriptor.multisample.alphaToCoverageEnabled = false;
|
.front_face = .ccw,
|
||||||
|
.cull_mode = .none,
|
||||||
pipeline_descriptor.primitive.frontFace = c.WGPUFrontFace_CCW;
|
.topology = .triangle_list,
|
||||||
pipeline_descriptor.primitive.cullMode = c.WGPUCullMode_None;
|
.strip_index_format = .none,
|
||||||
pipeline_descriptor.primitive.topology = c.WGPUPrimitiveTopology_TriangleList;
|
},
|
||||||
pipeline_descriptor.primitive.stripIndexFormat = c.WGPUIndexFormat_Undefined;
|
};
|
||||||
|
const pipeline = setup.device.createRenderPipeline(&pipeline_descriptor);
|
||||||
const pipeline = c.wgpuDeviceCreateRenderPipeline(@ptrCast(c.WGPUDevice, setup.device.ptr), &pipeline_descriptor);
|
|
||||||
|
|
||||||
vs_module.release();
|
vs_module.release();
|
||||||
fs_module.release();
|
fs_module.release();
|
||||||
|
|
@ -172,7 +171,7 @@ const WindowData = struct {
|
||||||
const FrameParams = struct {
|
const FrameParams = struct {
|
||||||
window: glfw.Window,
|
window: glfw.Window,
|
||||||
device: gpu.Device,
|
device: gpu.Device,
|
||||||
pipeline: c.WGPURenderPipeline,
|
pipeline: gpu.RenderPipeline,
|
||||||
queue: gpu.Queue,
|
queue: gpu.Queue,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -209,7 +208,7 @@ fn frame(params: FrameParams) !void {
|
||||||
|
|
||||||
const encoder = c.wgpuDeviceCreateCommandEncoder(@ptrCast(c.WGPUDevice, params.device.ptr), null);
|
const encoder = c.wgpuDeviceCreateCommandEncoder(@ptrCast(c.WGPUDevice, params.device.ptr), null);
|
||||||
const pass = c.wgpuCommandEncoderBeginRenderPass(encoder, &render_pass_info);
|
const pass = c.wgpuCommandEncoderBeginRenderPass(encoder, &render_pass_info);
|
||||||
c.wgpuRenderPassEncoderSetPipeline(pass, params.pipeline);
|
c.wgpuRenderPassEncoderSetPipeline(pass, @ptrCast(c.WGPURenderPipeline, params.pipeline.ptr));
|
||||||
c.wgpuRenderPassEncoderDraw(pass, 3, 1, 0, 0);
|
c.wgpuRenderPassEncoderDraw(pass, 3, 1, 0, 0);
|
||||||
c.wgpuRenderPassEncoderEnd(pass);
|
c.wgpuRenderPassEncoderEnd(pass);
|
||||||
c.wgpuRenderPassEncoderRelease(pass);
|
c.wgpuRenderPassEncoderRelease(pass);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue