gl_engine: dynamic load GL functions with glad

This commit is contained in:
RuiwenTang 2024-07-17 21:45:03 +08:00 committed by Hermet Park
parent d5125bd839
commit 3c5034e145
6 changed files with 27925 additions and 9 deletions

View file

@ -348,7 +348,8 @@ struct GlWindow : Window
//Free in the reverse order of their creation.
delete(canvas);
canvas = nullptr;
// terminate engine before SDL context destruction
tvg::Initializer::term(tvg::CanvasEngine::Gl);
SDL_GL_DeleteContext(context);
}

View file

@ -1,4 +1,6 @@
source_file = [
'tvgGl.cpp',
'tvgGl.h',
'tvgGlCommon.h',
'tvgGlGpuBuffer.h',
'tvgGlList.h',
@ -55,7 +57,6 @@ endif
engine_dep += [declare_dependency(
compile_args : gl_target_profile,
dependencies : gl_dep,
include_directories : include_directories('.'),
sources : source_file,
)]

File diff suppressed because it is too large Load diff

15943
src/renderer/gl_engine/tvgGl.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -25,17 +25,11 @@
#include <assert.h>
#include <memory>
#include "tvgGl.h"
#if defined (THORVG_GL_TARGET_GLES)
#include <GLES3/gl3.h>
#define TVG_REQUIRE_GL_MAJOR_VER 3
#define TVG_REQUIRE_GL_MINOR_VER 0
#else
#if defined(__APPLE__) || defined(__MACH__)
#include <OpenGL/gl3.h>
#else
#define GL_GLEXT_PROTOTYPES 1
#include <GL/gl.h>
#endif
#define TVG_REQUIRE_GL_MAJOR_VER 3
#define TVG_REQUIRE_GL_MINOR_VER 3
#endif

View file

@ -1315,6 +1315,11 @@ int GlRenderer::term()
GlRenderer* GlRenderer::gen()
{
auto init = gladLoaderLoadGL();
if (init == 0) {
TVGERR("GL_ENGINE", "gladLoadGL() failed");
return nullptr;
}
//TODO: GL minimum version check, should be replaced with the runtime linking in GlRenderer::init()
GLint vMajor, vMinor;
glGetIntegerv(GL_MAJOR_VERSION, &vMajor);