mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-04 10:33:30 +00:00
libobs-d3d11: Store shader samplers as pointers
This allows having them be a part of a linked list later.
This commit is contained in:
parent
d4d0cd479d
commit
7321cc38e8
|
@ -181,14 +181,14 @@ void ShaderProcessor::BuildParams(vector<gs_shader_param> ¶ms)
|
|||
}
|
||||
|
||||
static inline void AddSampler(gs_device_t *device, shader_sampler &sampler,
|
||||
vector<ShaderSampler> &samplers)
|
||||
vector<unique_ptr<ShaderSampler>> &samplers)
|
||||
{
|
||||
gs_sampler_info si;
|
||||
shader_sampler_convert(&sampler, &si);
|
||||
samplers.push_back(ShaderSampler(sampler.name, device, &si));
|
||||
samplers.emplace_back(new ShaderSampler(sampler.name, device, &si));
|
||||
}
|
||||
|
||||
void ShaderProcessor::BuildSamplers(vector<ShaderSampler> &samplers)
|
||||
void ShaderProcessor::BuildSamplers(vector<unique_ptr<ShaderSampler>> &samplers)
|
||||
{
|
||||
for (size_t i = 0; i < parser.samplers.num; i++)
|
||||
AddSampler(device, parser.samplers.array[i], samplers);
|
||||
|
|
|
@ -30,7 +30,7 @@ struct ShaderProcessor {
|
|||
|
||||
void BuildInputLayout(vector<D3D11_INPUT_ELEMENT_DESC> &inputs);
|
||||
void BuildParams(vector<gs_shader_param> ¶ms);
|
||||
void BuildSamplers(vector<ShaderSampler> &samplers);
|
||||
void BuildSamplers(vector<unique_ptr<ShaderSampler>> &samplers);
|
||||
void BuildString(string &outputString);
|
||||
void Process(const char *shader_string, const char *file);
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
|
||||
#include <windows.h>
|
||||
#include <dxgi.h>
|
||||
|
@ -459,13 +460,13 @@ struct gs_duplicator {
|
|||
|
||||
struct gs_pixel_shader : gs_shader {
|
||||
ComPtr<ID3D11PixelShader> shader;
|
||||
vector<ShaderSampler> samplers;
|
||||
vector<unique_ptr<ShaderSampler>> samplers;
|
||||
|
||||
inline void GetSamplerStates(ID3D11SamplerState **states)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < samplers.size(); i++)
|
||||
states[i] = samplers[i].sampler.state;
|
||||
states[i] = samplers[i]->sampler.state;
|
||||
for (; i < GS_MAX_TEXTURES; i++)
|
||||
states[i] = NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue