35 lines
1.4 KiB
Markdown
35 lines
1.4 KiB
Markdown
---
|
|
title: "Sampler"
|
|
date: 2021-01-25T20:48:35-08:00
|
|
weight: 3
|
|
---
|
|
|
|
You might be familiar with the concept of "sampling" in music, where artists take a small segment of recorded music and recontextualize it in another work. Similarly, in graphics applications, sampling refers to the process of looking up segments of texture information in a shader so the data can be used.
|
|
|
|
Samplers tell the renderer how upscaling or downscaling scenarios should be filtered. They can also cause the texture to repeat or mirror itself, among other possibilities.
|
|
|
|
To create a sampler, define a `SamplerState` struct:
|
|
|
|
```cs
|
|
var mySamplerState = new SamplerState
|
|
{
|
|
MinFilter = Filter.Linear,
|
|
MagFilter = Filter.Linear,
|
|
MipmapMode = SamplerMipmapMode.Linear,
|
|
AddressModeU = SamplerAddressMode.Repeat,
|
|
AddressModeV = SamplerAddressMode.Repeat,
|
|
AddressModeW = SamplerAddressMode.Repeat,
|
|
CompareEnable = false,
|
|
AnisotropyEnable = false,
|
|
MipLodBias = 0f,
|
|
MinLod = 0,
|
|
MaxLod = 1000
|
|
};
|
|
|
|
var mySampler = new Sampler(GraphicsDevice, mySamplerState);
|
|
```
|
|
|
|
The same sampler can be used in conjunction with as many different textures as you like. We will discuss this more when we get into command buffers.
|
|
|
|
There are some common `SamplerState`s that are provided for you, for example `SamplerState.PointClamp`. Have a look at the `SamplerState` definition to see them all.
|