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

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
dpf

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

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

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


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

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


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

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


+ 11
- 9
plugins/Cardinal/Makefile View File

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


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

@@ -58,7 +58,7 @@ protected:

#ifdef DGL_OPENGL
// glUseProgram(0);
// glMatrixMode(GL_MODELVIEW);
glMatrixMode(GL_MODELVIEW);
#endif

// draw white lines, 1px wide


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

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


Loading…
Cancel
Save