Vital
Loading...
Searching...
No Matches
shaders.h
Go to the documentation of this file.
1#pragma once
2
3#include "JuceHeader.h"
4#include "common.h"
5#include <map>
6
19class Shaders {
20public:
51
82
87 Shaders(OpenGLContext& open_gl_context);
88
95 if (vertex_shader_ids_[shader] == 0)
96 vertex_shader_ids_[shader] = createVertexShader(open_gl_context_->extensions, shader);
97 return vertex_shader_ids_[shader];
98 }
99
106 if (fragment_shader_ids_[shader] == 0)
107 fragment_shader_ids_[shader] = createFragmentShader(open_gl_context_->extensions, shader);
108 return fragment_shader_ids_[shader];
109 }
110
118 OpenGLShaderProgram* getShaderProgram(VertexShader vertex_shader, FragmentShader fragment_shader,
119 const GLchar** varyings = nullptr);
120
121private:
127 static const char* getVertexShader(VertexShader shader);
128
134 static const char* getFragmentShader(FragmentShader shader);
135
142 bool checkShaderCorrect(OpenGLExtensionFunctions& extensions, GLuint shader_id) const;
143
150 GLuint createVertexShader(OpenGLExtensionFunctions& extensions, VertexShader shader) const;
151
158 GLuint createFragmentShader(OpenGLExtensionFunctions& extensions, FragmentShader shader) const;
159
160 OpenGLContext* open_gl_context_;
161 GLuint vertex_shader_ids_[kNumVertexShaders];
162 GLuint fragment_shader_ids_[kNumFragmentShaders];
163
164 std::map<int, std::unique_ptr<OpenGLShaderProgram>> shader_programs_;
165};
166
179 OpenGlWrapper(OpenGLContext& c) : context(c), shaders(nullptr), display_scale(1.0f) { }
180
181 OpenGLContext& context;
184};
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