Files
crushFX/Source/FilterView.h
2026-01-21 20:17:54 +13:00

106 lines
2.5 KiB
C++

/*
==============================================================================
FilterView.h
Created: 16 Jan 2026 5:06:31pm
Author: esca
==============================================================================
*/
#pragma once
#include <JuceHeader.h>
//==============================================================================
/*
*/
/*
* ==============================================================================
*
* CrushView.h
* Created: 16 Jan 2026 5:05:38pm
* Author: esca
*
* ==============================================================================
*/
#pragma once
#include "juce_gui_basics/juce_gui_basics.h"
#include "juce_opengl/juce_opengl.h"
#include <JuceHeader.h>
#include "OpenGLUtils.h"
#include <string>
//==============================================================================
/*
*/
#define CRUSHVIEW_SAMPLECOUNT 200
class FilterView : public juce::Component, public juce::OpenGLRenderer
{
public:
FilterView();
~FilterView() override;
void renderFilter();
void newOpenGLContextCreated() override;
void renderOpenGL() override;
void openGLContextClosing() override;
void paint (juce::Graphics&) override;
void resized() override;
private:
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FilterView)
bool isLowPass;
float cutoff;
float mix;
juce::OpenGLContext ctx;
juce::OpenGLPixelFormat antialiasing;
std::vector<Vertex> filterVertices;
std::vector<unsigned int> filterIndices;
std::vector<Vertex> filterBackgroundVertices;
std::vector<unsigned int> filterBackgroundIndices;
std::vector<Vertex> fftVertices;
std::vector<unsigned int> fftIndices;
std::vector<VertexTexture> backgroundVertices;
std::vector<unsigned int> backgroundIndices;
juce::ComponentListener listener;
GLuint vboFilter;
GLuint iboFilter;
GLuint vbofft;
GLuint ibofft;
GLuint vboBackground;
GLuint iboBackground;
std::string vertexShader;
std::string fragmentShader;
std::string vertexShaderFill;
std::string fragmentShaderFill;
std::string vertexShaderBackground;
std::string fragmentShaderBackground;
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgram;
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgermFilter;
std::unique_ptr<juce::OpenGLShaderProgram> shaderProgramBackground;
juce::Image background;
juce::OpenGLTexture bgTexture;
};