create static method
GpuSampler
create({
- WGPUAddressMode addressMode = WGPUAddressMode.WGPUAddressMode_ClampToEdge,
- WGPUFilterMode filter = WGPUFilterMode.WGPUFilterMode_Linear,
- WGPUCompareFunction compare = WGPUCompareFunction.WGPUCompareFunction_Undefined,
Implementation
static GpuSampler create({
WGPUAddressMode addressMode = WGPUAddressMode.WGPUAddressMode_ClampToEdge,
WGPUFilterMode filter = WGPUFilterMode.WGPUFilterMode_Linear,
WGPUCompareFunction compare =
WGPUCompareFunction.WGPUCompareFunction_Undefined,
}) {
final wgpu = WebgpuRend.instance.wgpu;
return using((arena) {
final desc = arena<WGPUSamplerDescriptor>();
desc.ref.label.data = nullptr;
desc.ref.label.length = 0;
desc.ref.magFilter = filter;
desc.ref.minFilter = filter;
desc.ref.mipmapFilter = filter == WGPUFilterMode.WGPUFilterMode_Linear
? WGPUMipmapFilterMode.WGPUMipmapFilterMode_Linear
: WGPUMipmapFilterMode.WGPUMipmapFilterMode_Nearest;
desc.ref.addressModeU = addressMode;
desc.ref.addressModeV = addressMode;
desc.ref.addressModeW = addressMode;
desc.ref.lodMinClamp = 0.0;
desc.ref.lodMaxClamp = 1000.0;
desc.ref.compare = compare;
desc.ref.maxAnisotropy = 1;
final handle =
wgpu.wgpuDeviceCreateSampler(WebgpuRend.instance.device, desc);
return GpuSampler._(handle.cast());
});
}