| @@ -6,27 +6,33 @@ | |||||
| include dpf/Makefile.base.mk | include dpf/Makefile.base.mk | ||||
| all: dgl plugins gen | |||||
| all: dgl plugins gen resources | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| dgl: | dgl: | ||||
| $(MAKE) SKIP_NANOVG=true -C dpf/dgl opengl | |||||
| $(MAKE) USE_NANOVG_FBO=true USE_RGBA=true -C dpf/dgl opengl | |||||
| plugins: dgl | plugins: dgl | ||||
| $(MAKE) all -C plugins/Cardinal | $(MAKE) all -C plugins/Cardinal | ||||
| ifneq ($(CROSS_COMPILING),true) | ifneq ($(CROSS_COMPILING),true) | ||||
| gen: plugins dpf/utils/lv2_ttl_generator | |||||
| gen: plugins resources dpf/utils/lv2_ttl_generator | |||||
| @$(CURDIR)/dpf/utils/generate-ttl.sh | @$(CURDIR)/dpf/utils/generate-ttl.sh | ||||
| ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
| @$(CURDIR)/dpf/utils/generate-vst-bundles.sh | @$(CURDIR)/dpf/utils/generate-vst-bundles.sh | ||||
| endif | endif | ||||
| resources: bin/Cardinal.lv2/res | |||||
| bin/Cardinal.lv2/res: plugins | |||||
| ln -sf $(CURDIR)/plugins/Cardinal/Rack/res bin/Cardinal.lv2/res | |||||
| dpf/utils/lv2_ttl_generator: | dpf/utils/lv2_ttl_generator: | ||||
| $(MAKE) -C dpf/utils/lv2-ttl-generator | $(MAKE) -C dpf/utils/lv2-ttl-generator | ||||
| else | else | ||||
| gen: | gen: | ||||
| resources: | |||||
| endif | endif | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit c17c260d08613ab46e13dc578104c74b5713a435 | |||||
| Subproject commit d8f66c1e06cafedf000fe75afcf67b96b3efbc6c | |||||
| @@ -32,6 +32,7 @@ | |||||
| #include <osdialog.h> | #include <osdialog.h> | ||||
| #undef DEBUG | |||||
| #include "DistrhoPlugin.hpp" | #include "DistrhoPlugin.hpp" | ||||
| START_NAMESPACE_DISTRHO | START_NAMESPACE_DISTRHO | ||||
| @@ -124,6 +125,9 @@ struct Initializer { | |||||
| midi::destroy(); | midi::destroy(); | ||||
| audio::destroy(); | audio::destroy(); | ||||
| plugin::destroy(); | plugin::destroy(); | ||||
| #ifndef DPF_AS_GLFW | |||||
| gamepad::destroy(); | |||||
| #endif | |||||
| INFO("Destroying logger"); | INFO("Destroying logger"); | ||||
| logger::destroy(); | logger::destroy(); | ||||
| } | } | ||||
| @@ -24,6 +24,7 @@ | |||||
| #include <ui/common.hpp> | #include <ui/common.hpp> | ||||
| #include <window/Window.hpp> | #include <window/Window.hpp> | ||||
| #undef DEBUG | |||||
| #include "DistrhoUI.hpp" | #include "DistrhoUI.hpp" | ||||
| #include "ResizeHandle.hpp" | #include "ResizeHandle.hpp" | ||||
| @@ -96,7 +97,7 @@ public: | |||||
| License, or (at your option) any later version. | License, or (at your option) any later version. | ||||
| */ | */ | ||||
| // Initialize context | // Initialize context | ||||
| INFO("Initializing context"); | |||||
| d_stdout("UI context ptr %p", NanoVG::getContext()); | |||||
| #ifdef DPF_AS_GLFW | #ifdef DPF_AS_GLFW | ||||
| window::lastUI = this; | window::lastUI = this; | ||||
| #endif | #endif | ||||
| @@ -125,7 +126,7 @@ public: | |||||
| contextSet(NULL); | contextSet(NULL); | ||||
| } | } | ||||
| void onDisplay() override | |||||
| void onNanoDisplay() override | |||||
| { | { | ||||
| APP->window->step(); | APP->window->step(); | ||||
| } | } | ||||
| @@ -191,6 +192,12 @@ protected: | |||||
| case 3: | case 3: | ||||
| button = GLFW_MOUSE_BUTTON_RIGHT; | button = GLFW_MOUSE_BUTTON_RIGHT; | ||||
| break; | break; | ||||
| // case 4: | |||||
| // button = GLFW_MOUSE_WHEELUP; | |||||
| // break; | |||||
| // case 5: | |||||
| // button = GLFW_MOUSE_WHEELDOWN; | |||||
| // break; | |||||
| default: | default: | ||||
| button = 0; | button = 0; | ||||
| break; | break; | ||||
| @@ -30,7 +30,7 @@ | |||||
| // #define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Analyzer" | // #define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Analyzer" | ||||
| // #define DISTRHO_PLUGIN_HAS_EMBED_UI 1 | // #define DISTRHO_PLUGIN_HAS_EMBED_UI 1 | ||||
| // #define DISTRHO_PLUGIN_HAS_EXTERNAL_UI 1 | // #define DISTRHO_PLUGIN_HAS_EXTERNAL_UI 1 | ||||
| // #define DISTRHO_UI_USE_NANOVG 1 | |||||
| #define DISTRHO_UI_USE_NANOVG 1 | |||||
| #define DISTRHO_UI_USER_RESIZABLE 0 | #define DISTRHO_UI_USER_RESIZABLE 0 | ||||
| #define DPF_AS_GLFW 1 | #define DPF_AS_GLFW 1 | ||||
| @@ -16,14 +16,16 @@ FILES_DSP = \ | |||||
| CardinalPlugin.cpp | CardinalPlugin.cpp | ||||
| FILES_UI = \ | FILES_UI = \ | ||||
| CardinalUI.cpp \ | |||||
| Window.cpp | |||||
| CardinalUI.cpp | |||||
| FILES_UI += dep.cpp | |||||
| FILES_UI += Window.cpp | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Import base definitions | # Import base definitions | ||||
| # UI_TYPE = external | # UI_TYPE = external | ||||
| SKIP_NANOVG = true | |||||
| USE_NANOVG_FBO = true | |||||
| include ../../dpf/Makefile.base.mk | include ../../dpf/Makefile.base.mk | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -33,7 +35,7 @@ FILES_DSP += Rack/dep/pffft/pffft.c | |||||
| FILES_DSP += Rack/dep/pffft/fftpack.c | FILES_DSP += Rack/dep/pffft/fftpack.c | ||||
| FILES_UI += Rack/dep/oui-blendish/blendish.c | FILES_UI += Rack/dep/oui-blendish/blendish.c | ||||
| FILES_UI += Rack/dep/nanovg/src/nanovg.c | |||||
| # FILES_UI += Rack/dep/nanovg/src/nanovg.c | |||||
| # FIXME dont use this | # FIXME dont use this | ||||
| FILES_UI += Rack/dep/osdialog/osdialog.c | FILES_UI += Rack/dep/osdialog/osdialog.c | ||||
| @@ -47,7 +49,7 @@ endif | |||||
| FILES_DSP += $(wildcard Rack/src/*.c) | FILES_DSP += $(wildcard Rack/src/*.c) | ||||
| FILES_DSP += $(wildcard Rack/src/*/*.c) | FILES_DSP += $(wildcard Rack/src/*/*.c) | ||||
| FILES_DSP += $(filter-out Rack/src/discord.cpp Rack/src/gamepad.cpp Rack/src/network.cpp Rack/src/rtaudio.cpp Rack/src/rtmidi.cpp, $(wildcard Rack/src/*.cpp)) | |||||
| FILES_DSP += $(filter-out Rack/src/dep.cpp Rack/src/discord.cpp Rack/src/gamepad.cpp Rack/src/network.cpp Rack/src/rtaudio.cpp Rack/src/rtmidi.cpp, $(wildcard Rack/src/*.cpp)) | |||||
| FILES_DSP += $(filter-out Rack/src/window/Window.cpp, $(wildcard Rack/src/*/*.cpp)) | FILES_DSP += $(filter-out Rack/src/window/Window.cpp, $(wildcard Rack/src/*/*.cpp)) | ||||
| EXTRA_LIBS += Rack/dep/lib/libjansson.a | EXTRA_LIBS += Rack/dep/lib/libjansson.a | ||||
| @@ -93,15 +95,15 @@ Rack/dep/lib/libcrypto.a: Rack/dep/lib/libssl.a | |||||
| # Extra flags for VCV stuff | # Extra flags for VCV stuff | ||||
| BASE_FLAGS += -D_APP_VERSION=2.git.0 | BASE_FLAGS += -D_APP_VERSION=2.git.0 | ||||
| # BASE_FLAGS += -I$(DPF_PATH)/dgl/src/nanovg | |||||
| BASE_FLAGS += -I$(DPF_PATH)/dgl/src/nanovg | |||||
| BASE_FLAGS += -IRack/include | BASE_FLAGS += -IRack/include | ||||
| BASE_FLAGS += -IRack/dep/include | BASE_FLAGS += -IRack/dep/include | ||||
| BASE_FLAGS += -IRack/dep/filesystem/include | BASE_FLAGS += -IRack/dep/filesystem/include | ||||
| BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src | BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src | ||||
| BASE_FLAGS += -IRack/dep/glew-2.1.0/include | |||||
| BASE_FLAGS += -IRack/dep/glfw/deps | |||||
| # BASE_FLAGS += -IRack/dep/glew-2.1.0/include | |||||
| # BASE_FLAGS += -IRack/dep/glfw/deps | |||||
| BASE_FLAGS += -IRack/dep/glfw/include | BASE_FLAGS += -IRack/dep/glfw/include | ||||
| BASE_FLAGS += -IRack/dep/nanovg/src | |||||
| # BASE_FLAGS += -IRack/dep/nanovg/src | |||||
| BASE_FLAGS += -IRack/dep/nanosvg/src | BASE_FLAGS += -IRack/dep/nanosvg/src | ||||
| BASE_FLAGS += -IRack/dep/osdialog | BASE_FLAGS += -IRack/dep/osdialog | ||||
| BASE_FLAGS += -IRack/dep/oui-blendish | BASE_FLAGS += -IRack/dep/oui-blendish | ||||
| @@ -58,7 +58,7 @@ protected: | |||||
| #ifdef DGL_OPENGL | #ifdef DGL_OPENGL | ||||
| // glUseProgram(0); | // glUseProgram(0); | ||||
| // glMatrixMode(GL_MODELVIEW); | |||||
| glMatrixMode(GL_MODELVIEW); | |||||
| #endif | #endif | ||||
| // draw white lines, 1px wide | // draw white lines, 1px wide | ||||
| @@ -2,7 +2,6 @@ | |||||
| #include <queue> | #include <queue> | ||||
| #include <thread> | #include <thread> | ||||
| #include <stb_image_write.h> | |||||
| #include <osdialog.h> | #include <osdialog.h> | ||||
| #include <window/Window.hpp> | #include <window/Window.hpp> | ||||
| @@ -16,6 +15,7 @@ | |||||
| #include <plugin.hpp> // used in Window::screenshot | #include <plugin.hpp> // used in Window::screenshot | ||||
| #include <system.hpp> // used in Window::screenshot | #include <system.hpp> // used in Window::screenshot | ||||
| #undef DEBUG | |||||
| #include "DistrhoUI.hpp" | #include "DistrhoUI.hpp" | ||||
| namespace rack { | namespace rack { | ||||
| @@ -94,14 +94,6 @@ Window::Window() { | |||||
| int err; | int err; | ||||
| // Set up GLEW | |||||
| glewExperimental = GL_TRUE; | |||||
| err = glewInit(); | |||||
| if (err != GLEW_OK) { | |||||
| osdialog_message(OSDIALOG_ERROR, OSDIALOG_OK, "Could not initialize GLEW. Does your graphics card support OpenGL 2.0 or greater? If so, make sure you have the latest graphics drivers installed."); | |||||
| exit(1); | |||||
| } | |||||
| const GLubyte* vendor = glGetString(GL_VENDOR); | const GLubyte* vendor = glGetString(GL_VENDOR); | ||||
| const GLubyte* renderer = glGetString(GL_RENDERER); | const GLubyte* renderer = glGetString(GL_RENDERER); | ||||
| const GLubyte* version = glGetString(GL_VERSION); | const GLubyte* version = glGetString(GL_VERSION); | ||||
| @@ -109,24 +101,9 @@ Window::Window() { | |||||
| INFO("OpenGL: %s", version); | INFO("OpenGL: %s", version); | ||||
| INFO("UI pointer: %p", lastUI); | INFO("UI pointer: %p", lastUI); | ||||
| // GLEW generates GL error because it calls glGetString(GL_EXTENSIONS), we'll consume it here. | |||||
| glGetError(); | |||||
| // Set up NanoVG | |||||
| int nvgFlags = NVG_ANTIALIAS; | |||||
| #if defined NANOVG_GL2 | |||||
| vg = nvgCreateGL2(nvgFlags); | |||||
| fbVg = nvgCreateSharedGL2(vg, nvgFlags); | |||||
| #elif defined NANOVG_GL3 | |||||
| vg = nvgCreateGL3(nvgFlags); | |||||
| #elif defined NANOVG_GLES2 | |||||
| vg = nvgCreateGLES2(nvgFlags); | |||||
| #endif | |||||
| if (!vg) { | |||||
| osdialog_message(OSDIALOG_ERROR, OSDIALOG_OK, "Could not initialize NanoVG. Does your graphics card support OpenGL 2.0 or greater? If so, make sure you have the latest graphics drivers installed."); | |||||
| exit(1); | |||||
| } | |||||
| d_stderr2("framebuffer is %p", fbVg); | |||||
| vg = lastUI->getContext(); | |||||
| INFO("NanoVG context: %p", vg); | |||||
| // fbVg = nvgCreateSharedGL2(vg, nvgFlags); | |||||
| // Load default Blendish font | // Load default Blendish font | ||||
| uiFont = loadFont(asset::system("res/fonts/DejaVuSans.ttf")); | uiFont = loadFont(asset::system("res/fonts/DejaVuSans.ttf")); | ||||
| @@ -149,17 +126,6 @@ Window::~Window() { | |||||
| internal->fontCache.clear(); | internal->fontCache.clear(); | ||||
| internal->imageCache.clear(); | internal->imageCache.clear(); | ||||
| // nvgDeleteClone(fbVg); | |||||
| #if defined NANOVG_GL2 | |||||
| nvgDeleteGL2(vg); | |||||
| nvgDeleteGL2(fbVg); | |||||
| #elif defined NANOVG_GL3 | |||||
| nvgDeleteGL3(vg); | |||||
| #elif defined NANOVG_GLES2 | |||||
| nvgDeleteGLES2(vg); | |||||
| #endif | |||||
| delete internal; | delete internal; | ||||
| } | } | ||||
| @@ -239,7 +205,7 @@ void Window::step() { | |||||
| bool visible = true; | bool visible = true; | ||||
| if (visible) { | if (visible) { | ||||
| // Update and render | // Update and render | ||||
| nvgBeginFrame(vg, fbWidth, fbHeight, pixelRatio); | |||||
| // nvgBeginFrame(vg, fbWidth, fbHeight, pixelRatio); | |||||
| nvgScale(vg, pixelRatio, pixelRatio); | nvgScale(vg, pixelRatio, pixelRatio); | ||||
| // Draw scene | // Draw scene | ||||
| @@ -252,7 +218,7 @@ void Window::step() { | |||||
| glViewport(0, 0, fbWidth, fbHeight); | glViewport(0, 0, fbWidth, fbHeight); | ||||
| glClearColor(0.0, 0.0, 0.0, 1.0); | glClearColor(0.0, 0.0, 0.0, 1.0); | ||||
| glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | ||||
| nvgEndFrame(vg); | |||||
| // nvgEndFrame(vg); | |||||
| t4 = system::getTime(); | t4 = system::getTime(); | ||||
| } | } | ||||
| } | } | ||||