@@ -6,27 +6,33 @@ | |||
include dpf/Makefile.base.mk | |||
all: dgl plugins gen | |||
all: dgl plugins gen resources | |||
# -------------------------------------------------------------- | |||
dgl: | |||
$(MAKE) SKIP_NANOVG=true -C dpf/dgl opengl | |||
$(MAKE) USE_NANOVG_FBO=true USE_RGBA=true -C dpf/dgl opengl | |||
plugins: dgl | |||
$(MAKE) all -C plugins/Cardinal | |||
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 | |||
ifeq ($(MACOS),true) | |||
@$(CURDIR)/dpf/utils/generate-vst-bundles.sh | |||
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: | |||
$(MAKE) -C dpf/utils/lv2-ttl-generator | |||
else | |||
gen: | |||
resources: | |||
endif | |||
# -------------------------------------------------------------- | |||
@@ -1 +1 @@ | |||
Subproject commit c17c260d08613ab46e13dc578104c74b5713a435 | |||
Subproject commit d8f66c1e06cafedf000fe75afcf67b96b3efbc6c |
@@ -32,6 +32,7 @@ | |||
#include <osdialog.h> | |||
#undef DEBUG | |||
#include "DistrhoPlugin.hpp" | |||
START_NAMESPACE_DISTRHO | |||
@@ -124,6 +125,9 @@ struct Initializer { | |||
midi::destroy(); | |||
audio::destroy(); | |||
plugin::destroy(); | |||
#ifndef DPF_AS_GLFW | |||
gamepad::destroy(); | |||
#endif | |||
INFO("Destroying logger"); | |||
logger::destroy(); | |||
} | |||
@@ -24,6 +24,7 @@ | |||
#include <ui/common.hpp> | |||
#include <window/Window.hpp> | |||
#undef DEBUG | |||
#include "DistrhoUI.hpp" | |||
#include "ResizeHandle.hpp" | |||
@@ -96,7 +97,7 @@ public: | |||
License, or (at your option) any later version. | |||
*/ | |||
// Initialize context | |||
INFO("Initializing context"); | |||
d_stdout("UI context ptr %p", NanoVG::getContext()); | |||
#ifdef DPF_AS_GLFW | |||
window::lastUI = this; | |||
#endif | |||
@@ -125,7 +126,7 @@ public: | |||
contextSet(NULL); | |||
} | |||
void onDisplay() override | |||
void onNanoDisplay() override | |||
{ | |||
APP->window->step(); | |||
} | |||
@@ -191,6 +192,12 @@ protected: | |||
case 3: | |||
button = GLFW_MOUSE_BUTTON_RIGHT; | |||
break; | |||
// case 4: | |||
// button = GLFW_MOUSE_WHEELUP; | |||
// break; | |||
// case 5: | |||
// button = GLFW_MOUSE_WHEELDOWN; | |||
// break; | |||
default: | |||
button = 0; | |||
break; | |||
@@ -30,7 +30,7 @@ | |||
// #define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Analyzer" | |||
// #define DISTRHO_PLUGIN_HAS_EMBED_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 DPF_AS_GLFW 1 | |||
@@ -16,14 +16,16 @@ FILES_DSP = \ | |||
CardinalPlugin.cpp | |||
FILES_UI = \ | |||
CardinalUI.cpp \ | |||
Window.cpp | |||
CardinalUI.cpp | |||
FILES_UI += dep.cpp | |||
FILES_UI += Window.cpp | |||
# -------------------------------------------------------------- | |||
# Import base definitions | |||
# UI_TYPE = external | |||
SKIP_NANOVG = true | |||
USE_NANOVG_FBO = true | |||
include ../../dpf/Makefile.base.mk | |||
# -------------------------------------------------------------- | |||
@@ -33,7 +35,7 @@ FILES_DSP += Rack/dep/pffft/pffft.c | |||
FILES_DSP += Rack/dep/pffft/fftpack.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 | |||
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 += $(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)) | |||
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 | |||
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/dep/include | |||
BASE_FLAGS += -IRack/dep/filesystem/include | |||
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/nanovg/src | |||
# BASE_FLAGS += -IRack/dep/nanovg/src | |||
BASE_FLAGS += -IRack/dep/nanosvg/src | |||
BASE_FLAGS += -IRack/dep/osdialog | |||
BASE_FLAGS += -IRack/dep/oui-blendish | |||
@@ -58,7 +58,7 @@ protected: | |||
#ifdef DGL_OPENGL | |||
// glUseProgram(0); | |||
// glMatrixMode(GL_MODELVIEW); | |||
glMatrixMode(GL_MODELVIEW); | |||
#endif | |||
// draw white lines, 1px wide | |||
@@ -2,7 +2,6 @@ | |||
#include <queue> | |||
#include <thread> | |||
#include <stb_image_write.h> | |||
#include <osdialog.h> | |||
#include <window/Window.hpp> | |||
@@ -16,6 +15,7 @@ | |||
#include <plugin.hpp> // used in Window::screenshot | |||
#include <system.hpp> // used in Window::screenshot | |||
#undef DEBUG | |||
#include "DistrhoUI.hpp" | |||
namespace rack { | |||
@@ -94,14 +94,6 @@ Window::Window() { | |||
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* renderer = glGetString(GL_RENDERER); | |||
const GLubyte* version = glGetString(GL_VERSION); | |||
@@ -109,24 +101,9 @@ Window::Window() { | |||
INFO("OpenGL: %s", version); | |||
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 | |||
uiFont = loadFont(asset::system("res/fonts/DejaVuSans.ttf")); | |||
@@ -149,17 +126,6 @@ Window::~Window() { | |||
internal->fontCache.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; | |||
} | |||
@@ -239,7 +205,7 @@ void Window::step() { | |||
bool visible = true; | |||
if (visible) { | |||
// Update and render | |||
nvgBeginFrame(vg, fbWidth, fbHeight, pixelRatio); | |||
// nvgBeginFrame(vg, fbWidth, fbHeight, pixelRatio); | |||
nvgScale(vg, pixelRatio, pixelRatio); | |||
// Draw scene | |||
@@ -252,7 +218,7 @@ void Window::step() { | |||
glViewport(0, 0, fbWidth, fbHeight); | |||
glClearColor(0.0, 0.0, 0.0, 1.0); | |||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); | |||
nvgEndFrame(vg); | |||
// nvgEndFrame(vg); | |||
t4 = system::getTime(); | |||
} | |||
} | |||