Use our own nanovg

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2021-10-09 01:09:52 +01:00
parent c53abef199
commit 14fe8acc04
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
8 changed files with 42 additions and 57 deletions

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

2
dpf

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

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

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;

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

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

View file

@ -58,7 +58,7 @@ protected:
#ifdef DGL_OPENGL
// glUseProgram(0);
// glMatrixMode(GL_MODELVIEW);
glMatrixMode(GL_MODELVIEW);
#endif
// draw white lines, 1px wide

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