87 Shaders(OpenGLContext& open_gl_context);
95 if (vertex_shader_ids_[shader] == 0)
96 vertex_shader_ids_[shader] = createVertexShader(open_gl_context_->extensions, shader);
97 return vertex_shader_ids_[shader];
106 if (fragment_shader_ids_[shader] == 0)
107 fragment_shader_ids_[shader] = createFragmentShader(open_gl_context_->extensions, shader);
108 return fragment_shader_ids_[shader];
119 const GLchar** varyings =
nullptr);
127 static const char* getVertexShader(
VertexShader shader);
142 bool checkShaderCorrect(OpenGLExtensionFunctions& extensions, GLuint shader_id)
const;
150 GLuint createVertexShader(OpenGLExtensionFunctions& extensions,
VertexShader shader)
const;
158 GLuint createFragmentShader(OpenGLExtensionFunctions& extensions,
FragmentShader shader)
const;
160 OpenGLContext* open_gl_context_;
164 std::map<int, std::unique_ptr<OpenGLShaderProgram>> shader_programs_;
Manages and provides access to vertex and fragment shaders used by the OpenGL rendering pipeline.
Definition shaders.h:19
VertexShader
An enumeration of all available vertex shaders.
Definition shaders.h:27
@ kRotaryModulationVertex
Definition shaders.h:31
@ kNumVertexShaders
Definition shaders.h:49
@ kDirtyFilterResponseVertex
Definition shaders.h:40
@ kImageVertex
Definition shaders.h:28
@ kBarVerticalVertex
Definition shaders.h:48
@ kDigitalFilterResponseVertex
Definition shaders.h:38
@ kDiodeFilterResponseVertex
Definition shaders.h:39
@ kAnalogFilterResponseVertex
Definition shaders.h:34
@ kFormantFilterResponseVertex
Definition shaders.h:41
@ kPhaserFilterResponseVertex
Definition shaders.h:43
@ kFillVertex
Definition shaders.h:46
@ kLineVertex
Definition shaders.h:45
@ kScaleVertex
Definition shaders.h:30
@ kGainMeterVertex
Definition shaders.h:33
@ kLadderFilterResponseVertex
Definition shaders.h:42
@ kEqFilterResponseVertex
Definition shaders.h:44
@ kPositiveFlangeFilterResponseVertex
Definition shaders.h:36
@ kBarHorizontalVertex
Definition shaders.h:47
@ kPassthroughVertex
Definition shaders.h:29
@ kCombFilterResponseVertex
Definition shaders.h:35
@ kLinearModulationVertex
Definition shaders.h:32
@ kNegativeFlangeFilterResponseVertex
Definition shaders.h:37
FragmentShader
An enumeration of all available fragment shaders.
Definition shaders.h:58
@ kHorizontalSliderFragment
Definition shaders.h:73
@ kLinearModulationFragment
Definition shaders.h:75
@ kFadeSquareFragment
Definition shaders.h:64
@ kNumFragmentShaders
Definition shaders.h:80
@ kRotarySliderFragment
Definition shaders.h:71
@ kRoundedCornerFragment
Definition shaders.h:68
@ kLineFragment
Definition shaders.h:77
@ kModulationKnobFragment
Definition shaders.h:76
@ kImageFragment
Definition shaders.h:59
@ kRotaryModulationFragment
Definition shaders.h:72
@ kRoundedRectangleBorderFragment
Definition shaders.h:70
@ kDiamondFragment
Definition shaders.h:67
@ kGainMeterFragment
Definition shaders.h:61
@ kVerticalSliderFragment
Definition shaders.h:74
@ kBarFragment
Definition shaders.h:79
@ kRoundedRectangleFragment
Definition shaders.h:69
@ kFilterResponseFragment
Definition shaders.h:62
@ kRingFragment
Definition shaders.h:66
@ kFillFragment
Definition shaders.h:78
@ kTintedImageFragment
Definition shaders.h:60
@ kColorFragment
Definition shaders.h:63
@ kCircleFragment
Definition shaders.h:65
GLuint getVertexShaderId(VertexShader shader)
Retrieves the OpenGL shader ID for a given vertex shader.
Definition shaders.h:94
GLuint getFragmentShaderId(FragmentShader shader)
Retrieves the OpenGL shader ID for a given fragment shader.
Definition shaders.h:105
Shaders(OpenGLContext &open_gl_context)
Constructs a Shaders object associated with an OpenGLContext.
Definition shaders.cpp:1107
OpenGLShaderProgram * getShaderProgram(VertexShader vertex_shader, FragmentShader fragment_shader, const GLchar **varyings=nullptr)
Retrieves or creates an OpenGLShaderProgram from a given vertex and fragment shader pair.
Definition shaders.cpp:953
A helper struct containing references to OpenGL context, shaders, and display scale.
Definition shaders.h:174
OpenGLContext & context
The OpenGLContext for current rendering.
Definition shaders.h:181
OpenGlWrapper(OpenGLContext &c)
Constructs an OpenGlWrapper.
Definition shaders.h:179
float display_scale
Display scaling factor for high-DPI rendering.
Definition shaders.h:183
Shaders * shaders
Pointer to the Shaders instance providing compiled shaders.
Definition shaders.h:182