Browse Source

Use our own nanovg

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.02
falkTX 3 years ago
parent
commit
14fe8acc04
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
8 changed files with 42 additions and 57 deletions
  1. +9
    -3
      Makefile
  2. +1
    -1
      dpf
  3. +4
    -0
      plugins/Cardinal/CardinalPlugin.cpp
  4. +9
    -2
      plugins/Cardinal/CardinalUI.cpp
  5. +1
    -1
      plugins/Cardinal/DistrhoPluginInfo.h
  6. +11
    -9
      plugins/Cardinal/Makefile
  7. +1
    -1
      plugins/Cardinal/ResizeHandle.hpp
  8. +6
    -40
      plugins/Cardinal/Window.cpp

+ 9
- 3
Makefile View File

@@ -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
dpf

@@ -1 +1 @@
Subproject commit c17c260d08613ab46e13dc578104c74b5713a435
Subproject commit d8f66c1e06cafedf000fe75afcf67b96b3efbc6c

+ 4
- 0
plugins/Cardinal/CardinalPlugin.cpp View File

@@ -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();
} }


+ 9
- 2
plugins/Cardinal/CardinalUI.cpp View File

@@ -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;


+ 1
- 1
plugins/Cardinal/DistrhoPluginInfo.h View File

@@ -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


+ 11
- 9
plugins/Cardinal/Makefile View File

@@ -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


+ 1
- 1
plugins/Cardinal/ResizeHandle.hpp View File

@@ -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


+ 6
- 40
plugins/Cardinal/Window.cpp View File

@@ -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();
} }
} }


Loading…
Cancel
Save