diff --git a/.gitignore b/.gitignore index aface6d10e..6e5e388bd5 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ src/libprojectM/build/ # CLion cmake-build-* .idea +.aider* diff --git a/src/libprojectM/MilkdropPreset/Border.cpp b/src/libprojectM/MilkdropPreset/Border.cpp index 2cebe2a541..7f96cb77d4 100644 --- a/src/libprojectM/MilkdropPreset/Border.cpp +++ b/src/libprojectM/MilkdropPreset/Border.cpp @@ -4,10 +4,9 @@ namespace libprojectM { namespace MilkdropPreset { Border::Border(PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) { - RenderItem::Init(); + Init(); } void Border::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/Border.hpp b/src/libprojectM/MilkdropPreset/Border.hpp index 8b258f6d08..fa831ec89b 100644 --- a/src/libprojectM/MilkdropPreset/Border.hpp +++ b/src/libprojectM/MilkdropPreset/Border.hpp @@ -3,16 +3,15 @@ #include "PerFrameContext.hpp" #include "PresetState.hpp" -#include "Renderer/RenderItem.hpp" +#include namespace libprojectM { namespace MilkdropPreset { - /** * @brief Renders a border around the screen. */ -class Border : public Renderer::RenderItem +class Border : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: Border() = delete; diff --git a/src/libprojectM/MilkdropPreset/CustomShape.cpp b/src/libprojectM/MilkdropPreset/CustomShape.cpp index 9eaef3784c..a2c72a77f9 100644 --- a/src/libprojectM/MilkdropPreset/CustomShape.cpp +++ b/src/libprojectM/MilkdropPreset/CustomShape.cpp @@ -3,7 +3,7 @@ #include "PresetFileParser.hpp" #include -#include +#include #include @@ -47,7 +47,7 @@ CustomShape::CustomShape(PresetState& presetState) glBufferData(GL_ARRAY_BUFFER, sizeof(TexturedPoint) * vertexData.size(), vertexData.data(), GL_STREAM_DRAW); - RenderItem::Init(); + Init(); m_perFrameContext.RegisterBuiltinVariables(); } @@ -285,8 +285,8 @@ void CustomShape::Draw() glEnable(GL_LINE_SMOOTH); #endif - glBindVertexArray(m_vaoID); - glBindBuffer(GL_ARRAY_BUFFER, m_vboID); + glBindVertexArray(m_vaoIdUntextured); + glBindBuffer(GL_ARRAY_BUFFER, m_vboIdUntextured); const auto iterations = m_thickOutline ? 4 : 1; diff --git a/src/libprojectM/MilkdropPreset/CustomShape.hpp b/src/libprojectM/MilkdropPreset/CustomShape.hpp index ea59d34e48..cb8aee445a 100644 --- a/src/libprojectM/MilkdropPreset/CustomShape.hpp +++ b/src/libprojectM/MilkdropPreset/CustomShape.hpp @@ -5,7 +5,7 @@ #include "ShapePerFrameContext.hpp" #include - +#include #include namespace libprojectM { @@ -19,7 +19,7 @@ class PresetFileParser; * The class creates two sets of VBO/VAO as it's only known later (in the Draw() call) whether the shape is textured * or not. */ -class CustomShape : public Renderer::RenderItem +class CustomShape : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: CustomShape(PresetState& presetState); diff --git a/src/libprojectM/MilkdropPreset/CustomWaveform.cpp b/src/libprojectM/MilkdropPreset/CustomWaveform.cpp index 9f046d5335..520e3f9963 100644 --- a/src/libprojectM/MilkdropPreset/CustomWaveform.cpp +++ b/src/libprojectM/MilkdropPreset/CustomWaveform.cpp @@ -12,12 +12,11 @@ namespace MilkdropPreset { static constexpr int CustomWaveformMaxSamples = std::max(libprojectM::Audio::WaveformSamples, libprojectM::Audio::SpectrumSamples); CustomWaveform::CustomWaveform(PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) , m_perFrameContext(presetState.globalMemory, &presetState.globalRegisters) , m_perPointContext(presetState.globalMemory, &presetState.globalRegisters) { - RenderItem::Init(); + Init(); m_perFrameContext.RegisterBuiltinVariables(); m_perPointContext.RegisterBuiltinVariables(); diff --git a/src/libprojectM/MilkdropPreset/CustomWaveform.hpp b/src/libprojectM/MilkdropPreset/CustomWaveform.hpp index 31d2bfae0c..c22f13e583 100644 --- a/src/libprojectM/MilkdropPreset/CustomWaveform.hpp +++ b/src/libprojectM/MilkdropPreset/CustomWaveform.hpp @@ -3,7 +3,7 @@ #include "WaveformPerFrameContext.hpp" #include "WaveformPerPointContext.hpp" -#include +#include #include @@ -13,7 +13,7 @@ class PresetFileParser; namespace MilkdropPreset { -class CustomWaveform : public Renderer::RenderItem +class CustomWaveform : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: @@ -23,61 +23,21 @@ class CustomWaveform : public Renderer::RenderItem */ explicit CustomWaveform(PresetState& presetState); - /** - * @brief Initializes the waveform's vertex buffer and attribute data. - */ void InitVertexAttrib() override; - /** - * @brief Loads the initial values and code from the preset file. - * @param parsedFile The file parser with the preset data. - * @param index The waveform index. - */ void Initialize(::libprojectM::PresetFileParser& parsedFile, int index); - /** - * @brief Compiles all code blocks and runs the init expression. - * @throws MilkdropCompileException Thrown if one of the code blocks couldn't be compiled. - * @param presetPerFrameContext The per-frame context to retrieve the init Q vars from. - */ void CompileCodeAndRunInitExpressions(const PerFrameContext& presetPerFrameContext); - /** - * @brief Renders the waveform. - * @param presetPerFrameContext The per-frame context to retrieve the init Q vars from. - */ void Draw(const PerFrameContext& presetPerFrameContext); private: - /** - * @brief Initializes the per-frame context with the preset per-frame state. - * @param presetPerFrameContext The preset per-frame context to pull q vars from. - */ void LoadPerFrameEvaluationVariables(const PerFrameContext& presetPerFrameContext); - /** - * @brief Loads the Q and T variables from the per-frame code into the per-point context. - */ void InitPerPointEvaluationVariables(); - /** - * @brief Loads the variables for each point into the per-point evaluation context. - * @param sample The sample index being rendered. - * @param value1 The left channel value. - * @param value2 The right channel value. - */ void LoadPerPointEvaluationVariables(float sample, float value1, float value2); - /** - * @brief Does a better-than-linear smooth on a wave. - * - * Roughly doubles the number of points. - * - * @param inputVertices Pointer to an array of vertices to be smoothed. - * @param vertexCount Number of vertices/points in the input data. - * @param outputVertices Pointer to a buffer that will receive the smoothed data. Must be able to hold 2 * vertexCount vertices. - * @return The number of vertices in outputVertices after smoothing. - */ static int SmoothWave(const ColoredPoint* inputVertices, int vertexCount, ColoredPoint* outputVertices); int m_index{0}; //!< Custom waveform index in the preset. diff --git a/src/libprojectM/MilkdropPreset/DarkenCenter.cpp b/src/libprojectM/MilkdropPreset/DarkenCenter.cpp index 64899b3242..9c6caa6c2f 100644 --- a/src/libprojectM/MilkdropPreset/DarkenCenter.cpp +++ b/src/libprojectM/MilkdropPreset/DarkenCenter.cpp @@ -4,10 +4,9 @@ namespace libprojectM { namespace MilkdropPreset { DarkenCenter::DarkenCenter(PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) { - RenderItem::Init(); + Init(); } void DarkenCenter::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/DarkenCenter.hpp b/src/libprojectM/MilkdropPreset/DarkenCenter.hpp index 3f04012f7b..60d7b9dd62 100644 --- a/src/libprojectM/MilkdropPreset/DarkenCenter.hpp +++ b/src/libprojectM/MilkdropPreset/DarkenCenter.hpp @@ -2,7 +2,7 @@ #include "PresetState.hpp" -#include +#include namespace libprojectM { namespace MilkdropPreset { @@ -10,14 +10,14 @@ namespace MilkdropPreset { /** * @brief Darkens the screen center a bit on each frame. */ -class DarkenCenter : public Renderer::RenderItem +class DarkenCenter : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: DarkenCenter() = delete; explicit DarkenCenter(PresetState& presetState); - void InitVertexAttrib(); + void InitVertexAttrib() override; /** * Applies the darkening area. diff --git a/src/libprojectM/MilkdropPreset/Filters.cpp b/src/libprojectM/MilkdropPreset/Filters.cpp index 472a0e70b5..40d6890845 100644 --- a/src/libprojectM/MilkdropPreset/Filters.cpp +++ b/src/libprojectM/MilkdropPreset/Filters.cpp @@ -4,10 +4,9 @@ namespace libprojectM { namespace MilkdropPreset { Filters::Filters(const PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) { - RenderItem::Init(); + Init(); } void Filters::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/Filters.hpp b/src/libprojectM/MilkdropPreset/Filters.hpp index c00084654d..875095252a 100644 --- a/src/libprojectM/MilkdropPreset/Filters.hpp +++ b/src/libprojectM/MilkdropPreset/Filters.hpp @@ -2,7 +2,7 @@ #include "PresetState.hpp" -#include +#include namespace libprojectM { namespace MilkdropPreset { @@ -10,13 +10,13 @@ namespace MilkdropPreset { /** * @brief Classic Milkdrop 1 postprocessing effects. */ -class Filters : public Renderer::RenderItem +class Filters : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: Filters() = delete; explicit Filters(const PresetState& presetState); - void InitVertexAttrib(); + void InitVertexAttrib() override; /** * @brief Applies the configured filters to the current output. diff --git a/src/libprojectM/MilkdropPreset/FinalComposite.cpp b/src/libprojectM/MilkdropPreset/FinalComposite.cpp index 549c950437..0250f5250c 100644 --- a/src/libprojectM/MilkdropPreset/FinalComposite.cpp +++ b/src/libprojectM/MilkdropPreset/FinalComposite.cpp @@ -15,7 +15,7 @@ static std::string const defaultCompositeShader = "shader_body\n{\nret = tex2D(s FinalComposite::FinalComposite() { - RenderItem::Init(); + Init(); } void FinalComposite::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/FinalComposite.hpp b/src/libprojectM/MilkdropPreset/FinalComposite.hpp index b9cf50b400..2abfb767e0 100644 --- a/src/libprojectM/MilkdropPreset/FinalComposite.hpp +++ b/src/libprojectM/MilkdropPreset/FinalComposite.hpp @@ -4,7 +4,7 @@ #include "MilkdropShader.hpp" #include "VideoEcho.hpp" -#include +#include #include #include @@ -15,43 +15,23 @@ namespace MilkdropPreset { /** * @brief Draws the final composite effect, either a shader or Milkdrop 1 effects. */ -class FinalComposite : public Renderer::RenderItem +class FinalComposite : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: FinalComposite(); void InitVertexAttrib() override; - /** - * @brief Loads the composite shader, if the preset uses one. - * @param presetState The preset state to retrieve the shader from. - */ void LoadCompositeShader(const PresetState& presetState); - /** - * @brief Loads the required textures and compiles the composite shader. - * @param presetState The preset state to retrieve the configuration values from. - */ void CompileCompositeShader(PresetState& presetState); - /** - * @brief Renders the composite quad with the appropriate effects or shaders. - * @param presetState The preset state to retrieve the configuration values from. - * @param presetPerFrameContext The per-frame context to retrieve the initial vars from. - */ void Draw(const PresetState& presetState, const PerFrameContext& perFrameContext); - /** - * @brief Returns if the final composite is using a shader or classic filters. - * @return true if the final composite is done via a shader, false if not. - */ auto HasCompositeShader() const -> bool; private: - /** - * Composite mesh vertex with all required attributes. - */ struct MeshVertex { float x{}; //!< Vertex X coordinate. float y{}; //!< Vertex Y coordinate. @@ -65,13 +45,6 @@ class FinalComposite : public Renderer::RenderItem float angle{}; }; - /** - * @brief Initializes the vertex array and fills in static data if needed. - * - * The vertices will only be reinitialized if the viewport size changed. - * - * @param presetState The preset state to retrieve the configuration values from. - */ void InitializeMesh(const PresetState& presetState); static float SquishToCenter(float x, float exponent); @@ -79,10 +52,6 @@ class FinalComposite : public Renderer::RenderItem static void UvToMathSpace(float aspectX, float aspectY, float u, float v, float& rad, float& ang); - /** - * @brief Calculates the randomized, slowly changing diffuse colors. - * @param presetState The preset state to retrieve the configuration values from. - */ void ApplyHueShaderColors(const PresetState& presetState); static constexpr int compositeGridWidth{32}; diff --git a/src/libprojectM/MilkdropPreset/MilkdropPreset.cpp b/src/libprojectM/MilkdropPreset/MilkdropPreset.cpp index 110489a808..8154572d69 100755 --- a/src/libprojectM/MilkdropPreset/MilkdropPreset.cpp +++ b/src/libprojectM/MilkdropPreset/MilkdropPreset.cpp @@ -24,6 +24,7 @@ #include "Factory.hpp" #include "MilkdropPresetExceptions.hpp" #include "PresetFileParser.hpp" +#include #ifdef MILKDROP_PRESET_DEBUG #include @@ -40,7 +41,10 @@ MilkdropPreset::MilkdropPreset(const std::string& absoluteFilePath) , m_waveform(m_state) , m_darkenCenter(m_state) , m_border(m_state) + , m_flipTexture(std::make_unique()) { + // Ensure OpenGLCopyTexture is visible to this translation unit + // (include the header if not already included at the top of this file) Load(absoluteFilePath); } @@ -51,7 +55,10 @@ MilkdropPreset::MilkdropPreset(std::istream& presetData) , m_waveform(m_state) , m_darkenCenter(m_state) , m_border(m_state) + , m_flipTexture(std::make_unique()) { + // Ensure OpenGLCopyTexture is visible to this translation unit + // (include the header if not already included at the top of this file) Load(presetData); } @@ -105,8 +112,8 @@ void MilkdropPreset::RenderFrame(const libprojectM::Audio::FrameAudioData& audio } // y-flip the previous frame and assign the flipped texture as "main" - m_flipTexture.Draw(m_framebuffer.GetColorAttachmentTexture(m_previousFrameBuffer, 0), nullptr, true, false); - m_state.mainTexture = m_flipTexture.Texture(); + m_flipTexture->Draw(m_framebuffer.GetColorAttachmentTexture(m_previousFrameBuffer, 0), nullptr, true, false); + m_state.mainTexture = m_flipTexture->Texture(); // We now draw to the current framebuffer. m_framebuffer.Bind(m_currentFrameBuffer); @@ -146,8 +153,8 @@ void MilkdropPreset::RenderFrame(const libprojectM::Audio::FrameAudioData& audio m_border.Draw(m_perFrameContext); // y-flip the image for final compositing again - m_flipTexture.Draw(m_framebuffer.GetColorAttachmentTexture(m_currentFrameBuffer, 0), nullptr, true, false); - m_state.mainTexture = m_flipTexture.Texture(); + m_flipTexture->Draw(m_framebuffer.GetColorAttachmentTexture(m_currentFrameBuffer, 0), nullptr, true, false); + m_state.mainTexture = m_flipTexture->Texture(); // We no longer need the previous frame image, use it to render the final composite. m_framebuffer.BindRead(m_currentFrameBuffer); @@ -158,7 +165,7 @@ void MilkdropPreset::RenderFrame(const libprojectM::Audio::FrameAudioData& audio if (!m_finalComposite.HasCompositeShader()) { // Flip texture again in "previous" framebuffer as old-school effects are still upside down. - m_flipTexture.Draw(m_framebuffer.GetColorAttachmentTexture(m_previousFrameBuffer, 0), m_framebuffer, m_previousFrameBuffer, true, false); + m_flipTexture->Draw(m_framebuffer.GetColorAttachmentTexture(m_previousFrameBuffer, 0), m_framebuffer, m_previousFrameBuffer, true, false); } // Swap framebuffer IDs for the next frame. @@ -170,7 +177,7 @@ void MilkdropPreset::RenderFrame(const libprojectM::Audio::FrameAudioData& audio auto MilkdropPreset::OutputTexture() const -> std::shared_ptr { // the composited image is always stored in the "current" framebuffer after a frame is rendered. - return m_framebuffer.GetColorAttachmentTexture(m_currentFrameBuffer, 0); + return m_flipTexture->Texture(); } void MilkdropPreset::DrawInitialImage(const std::shared_ptr& image, const Renderer::RenderContext& renderContext) @@ -178,7 +185,7 @@ void MilkdropPreset::DrawInitialImage(const std::shared_ptr& m_framebuffer.SetSize(renderContext.viewportSizeX, renderContext.viewportSizeY); // Render to previous framebuffer, as this is the image used to draw the next frame on. - m_flipTexture.Draw(image, m_framebuffer, m_previousFrameBuffer); + m_flipTexture->Draw(image, m_framebuffer, m_previousFrameBuffer); } void MilkdropPreset::BindFramebuffer() diff --git a/src/libprojectM/MilkdropPreset/MilkdropPreset.hpp b/src/libprojectM/MilkdropPreset/MilkdropPreset.hpp index 06fa470bb7..e6c0c718f8 100644 --- a/src/libprojectM/MilkdropPreset/MilkdropPreset.hpp +++ b/src/libprojectM/MilkdropPreset/MilkdropPreset.hpp @@ -127,7 +127,7 @@ class MilkdropPreset : public ::libprojectM::Preset std::array, CustomShapeCount> m_customShapes; //!< Custom shapes in this preset. DarkenCenter m_darkenCenter; //!< Center darkening effect. Border m_border; //!< Inner/outer borders. - Renderer::CopyTexture m_flipTexture; //!< Texture flip filter + std::unique_ptr m_flipTexture; //!< Texture flip filter FinalComposite m_finalComposite; //!< Final composite shader or filters. diff --git a/src/libprojectM/MilkdropPreset/MotionVectors.cpp b/src/libprojectM/MilkdropPreset/MotionVectors.cpp index 3ec34e17e6..c13130447a 100644 --- a/src/libprojectM/MilkdropPreset/MotionVectors.cpp +++ b/src/libprojectM/MilkdropPreset/MotionVectors.cpp @@ -9,10 +9,9 @@ namespace libprojectM { namespace MilkdropPreset { MotionVectors::MotionVectors(PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) { - RenderItem::Init(); + Init(); } void MotionVectors::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/MotionVectors.hpp b/src/libprojectM/MilkdropPreset/MotionVectors.hpp index 4782e03ade..707962ffe6 100644 --- a/src/libprojectM/MilkdropPreset/MotionVectors.hpp +++ b/src/libprojectM/MilkdropPreset/MotionVectors.hpp @@ -3,7 +3,7 @@ #include "PerFrameContext.hpp" #include "PresetState.hpp" -#include +#include #include @@ -12,27 +12,16 @@ namespace MilkdropPreset { /** * @brief Draws a flexible motion vector field. - * - * This is broken right now, as it only renders a relatively static 1px point grid, with no apparent motion trails. - * Milkdrop renders this as lines with trails. - * - * @todo Reverse-engineer the original Milkdrop code and reimplement it properly. - * https://github.com/projectM-visualizer/milkdrop2/blob/f05b0d811a87a17c4624170c26c93bac39b05bde/src/vis_milk2/milkdropfs.cpp#L1239 */ -class MotionVectors : public Renderer::RenderItem +class MotionVectors : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: MotionVectors() = delete; explicit MotionVectors(PresetState& presetState); - void InitVertexAttrib(); + void InitVertexAttrib() override; - /** - * Renders the motion vectors. - * @param presetPerFrameContext The per-frame context variables. - * @param motionTexture The u/v "motion" texture written by the warp shader. - */ void Draw(const PerFrameContext& presetPerFrameContext, std::shared_ptr motionTexture); private: diff --git a/src/libprojectM/MilkdropPreset/PerPixelMesh.cpp b/src/libprojectM/MilkdropPreset/PerPixelMesh.cpp index 5ad57c28d6..1ff71e570f 100644 --- a/src/libprojectM/MilkdropPreset/PerPixelMesh.cpp +++ b/src/libprojectM/MilkdropPreset/PerPixelMesh.cpp @@ -21,9 +21,8 @@ namespace MilkdropPreset { static constexpr uint32_t VerticesPerDrawCall = 1024 * 3; PerPixelMesh::PerPixelMesh() - : RenderItem() { - RenderItem::Init(); + Init(); } void PerPixelMesh::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/PerPixelMesh.hpp b/src/libprojectM/MilkdropPreset/PerPixelMesh.hpp index 98576d30a3..3041c7b086 100644 --- a/src/libprojectM/MilkdropPreset/PerPixelMesh.hpp +++ b/src/libprojectM/MilkdropPreset/PerPixelMesh.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include #include @@ -27,7 +27,7 @@ class MilkdropShader; * * The mesh size can be changed between frames, the class will reallocate the buffers if needed. */ -class PerPixelMesh : public Renderer::RenderItem +class PerPixelMesh : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: PerPixelMesh(); diff --git a/src/libprojectM/MilkdropPreset/VideoEcho.cpp b/src/libprojectM/MilkdropPreset/VideoEcho.cpp index 9bf9ae4f26..eb88331775 100644 --- a/src/libprojectM/MilkdropPreset/VideoEcho.cpp +++ b/src/libprojectM/MilkdropPreset/VideoEcho.cpp @@ -4,10 +4,9 @@ namespace libprojectM { namespace MilkdropPreset { VideoEcho::VideoEcho(const PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) { - RenderItem::Init(); + Init(); } void VideoEcho::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/VideoEcho.hpp b/src/libprojectM/MilkdropPreset/VideoEcho.hpp index dce3cace9f..0c04bdcfb4 100644 --- a/src/libprojectM/MilkdropPreset/VideoEcho.hpp +++ b/src/libprojectM/MilkdropPreset/VideoEcho.hpp @@ -5,7 +5,7 @@ #include -#include +#include namespace libprojectM { namespace MilkdropPreset { @@ -13,15 +13,15 @@ namespace MilkdropPreset { /** * @brief Renders a video "echo" (ghost image) effect and gamma adjustments. */ -class VideoEcho: public Renderer::RenderItem +class VideoEcho : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: - VideoEcho() = delete; + VideoEcho() = delete; explicit VideoEcho(const PresetState& presetState); void InitVertexAttrib() override; - void Draw(); + void Draw(); private: void DrawVideoEcho(); diff --git a/src/libprojectM/MilkdropPreset/Waveform.cpp b/src/libprojectM/MilkdropPreset/Waveform.cpp index ce4351784c..1fadc20686 100644 --- a/src/libprojectM/MilkdropPreset/Waveform.cpp +++ b/src/libprojectM/MilkdropPreset/Waveform.cpp @@ -18,10 +18,9 @@ namespace libprojectM { namespace MilkdropPreset { Waveform::Waveform(PresetState& presetState) - : RenderItem() - , m_presetState(presetState) + : m_presetState(presetState) { - RenderItem::Init(); + Init(); } void Waveform::InitVertexAttrib() diff --git a/src/libprojectM/MilkdropPreset/Waveform.hpp b/src/libprojectM/MilkdropPreset/Waveform.hpp index bad7b944be..9a4c860724 100644 --- a/src/libprojectM/MilkdropPreset/Waveform.hpp +++ b/src/libprojectM/MilkdropPreset/Waveform.hpp @@ -5,7 +5,7 @@ #include "Waveforms/WaveformMath.hpp" -#include +#include #include #include @@ -16,7 +16,7 @@ namespace MilkdropPreset { class PresetState; class PerFrameContext; -class Waveform : public Renderer::RenderItem +class Waveform : public libprojectM::Renderer::Backend::OpenGL::OpenGLRenderItem { public: explicit Waveform(PresetState& presetState); diff --git a/src/libprojectM/ProjectM.cpp b/src/libprojectM/ProjectM.cpp index 495c5d4b7d..92c1126e57 100644 --- a/src/libprojectM/ProjectM.cpp +++ b/src/libprojectM/ProjectM.cpp @@ -24,10 +24,11 @@ #include "Preset.hpp" #include "PresetFactoryManager.hpp" #include "TimeKeeper.hpp" +#include "Renderer/Backend/OpenGL/OpenGLPresetTransition.hpp" #include