allow custom opengl loader
This commit is contained in:
@@ -1,8 +1,62 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#if !defined(TD_IMPL_OPENGL_ES2) \
|
||||||
#include <GLES3/gl3.h>
|
&& !defined(TD_IMPL_OPENGL_ES3) \
|
||||||
|
&& !defined(TD_IMPL_OPENGL_LOADER_GL3W) \
|
||||||
|
&& !defined(TD_IMPL_OPENGL_LOADER_GLEW) \
|
||||||
|
&& !defined(TD_IMPL_OPENGL_LOADER_GLAD) \
|
||||||
|
&& !defined(TD_IMPL_OPENGL_LOADER_GLBINDING2) \
|
||||||
|
&& !defined(TD_IMPL_OPENGL_LOADER_GLBINDING3) \
|
||||||
|
&& !defined(TD_IMPL_OPENGL_LOADER_CUSTOM) \
|
||||||
|
&& !defined(__ANDROID__)
|
||||||
|
|
||||||
|
#if defined(__has_include)
|
||||||
|
|
||||||
|
#if __has_include(<GL/glew.h>)
|
||||||
|
#define TD_IMPL_OPENGL_LOADER_GLEW
|
||||||
|
#elif __has_include(<glad/glad.h>)
|
||||||
|
#define TD_IMPL_OPENGL_LOADER_GLAD
|
||||||
|
#elif __has_include(<GL/gl3w.h>)
|
||||||
|
#define TD_IMPL_OPENGL_LOADER_GL3W
|
||||||
|
#elif __has_include(<glbinding/glbinding.h>)
|
||||||
|
#define TD_IMPL_OPENGL_LOADER_GLBINDING3
|
||||||
|
#elif __has_include(<glbinding/Binding.h>)
|
||||||
|
#define TD_IMPL_OPENGL_LOADER_GLBINDING2
|
||||||
#else
|
#else
|
||||||
#include "glbinding/gl/gl.h"
|
#error "Cannot detect OpenGL loader!"
|
||||||
using namespace gl;
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
#error "Cannot detect loader with include detection !"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Include correct files
|
||||||
|
|
||||||
|
#if defined(__ANDROID__)
|
||||||
|
#include <GLES3/gl3.h>
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GL3W)
|
||||||
|
#include <GL/gl3w.h> // Needs to be initialized with gl3wInit() in user's code
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLEW)
|
||||||
|
#include <GL/glew.h> // Needs to be initialized with glewInit() in user's code.
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLAD)
|
||||||
|
#include <glad/glad.h> // Needs to be initialized with gladLoadGL() in user's code.
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLBINDING2)
|
||||||
|
#ifndef GLFW_INCLUDE_NONE
|
||||||
|
#define GLFW_INCLUDE_NONE // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
|
||||||
|
#endif
|
||||||
|
#include <glbinding/Binding.h> // Needs to be initialized with glbinding::Binding::initialize() in user's code.
|
||||||
|
#include <glbinding/gl/gl.h>
|
||||||
|
using namespace gl;
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLBINDING3)
|
||||||
|
#ifndef GLFW_INCLUDE_NONE
|
||||||
|
#define GLFW_INCLUDE_NONE // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
|
||||||
|
#endif
|
||||||
|
#include <glbinding/glbinding.h>// Needs to be initialized with glbinding::initialize() in user's code.
|
||||||
|
#include <glbinding/gl/gl.h>
|
||||||
|
using namespace gl;
|
||||||
|
#else
|
||||||
|
#include TD_IMPL_OPENGL_LOADER_CUSTOM
|
||||||
#endif
|
#endif
|
||||||
@@ -107,8 +107,20 @@ namespace ImGui
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#include "render/GL.h"
|
||||||
#define IMGUI_IMPL_OPENGL_ES3
|
|
||||||
|
#if defined(__ANDROID__)
|
||||||
|
#define IMGUI_IMPL_OPENGL_LOADER_ES3
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GL3W)
|
||||||
|
#define IMGUI_IMPL_OPENGL_LOADER_GL3W
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLEW)
|
||||||
|
#define IMGUI_IMPL_OPENGL_LOADER_GLEW
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLAD)
|
||||||
|
#define IMGUI_IMPL_OPENGL_LOADER_GLAD
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLBINDING2)
|
||||||
|
#define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2
|
||||||
|
#elif defined(TD_IMPL_OPENGL_LOADER_GLBINDING3)
|
||||||
|
#define IMGUI_IMPL_OPENGL_LOADER_GLBINDING3
|
||||||
#else
|
#else
|
||||||
#define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2
|
#define IMGUI_IMPL_OPENGL_LOADER_CUSTOM
|
||||||
#endif
|
#endif
|
||||||
@@ -5,9 +5,6 @@
|
|||||||
* Author: simon
|
* Author: simon
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef ANDROID
|
|
||||||
#include <glbinding/Binding.h>
|
|
||||||
#endif
|
|
||||||
#include "render/Renderer.h"
|
#include "render/Renderer.h"
|
||||||
#include "render/GL.h"
|
#include "render/GL.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -43,8 +40,16 @@ void Renderer::InitShaders() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Renderer::Init() {
|
bool Renderer::Init() {
|
||||||
#ifndef ANDROID
|
#if __has_include(<glbinding/glbinding.h>)
|
||||||
glbinding::Binding::initialize();
|
glbinding::initialize();
|
||||||
|
#elif __has_include(<GL/glew.h>)
|
||||||
|
glewInit();
|
||||||
|
#elif __has_include(<glad/glad.h>)
|
||||||
|
gladLoadGL();
|
||||||
|
#elif __has_include(<GL/gl3w.h>)
|
||||||
|
gl3wInit();
|
||||||
|
#elif __has_include(<glbinding/Binding.h>)
|
||||||
|
glbinding::Binding::initialize();
|
||||||
#endif
|
#endif
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
|
|||||||
19
xmake.lua
19
xmake.lua
@@ -1,6 +1,12 @@
|
|||||||
add_rules("mode.debug", "mode.release")
|
add_rules("mode.debug", "mode.release")
|
||||||
|
|
||||||
--add_requires("SDL2", "glfw", "zlib", "glm")
|
if is_os("linux") then
|
||||||
|
GL_LOADER = "glad"
|
||||||
|
add_defines("TD_IMPL_OPENGL_LOADER_GLAD");
|
||||||
|
add_requires("libsdl >= 2", "zlib", GL_LOADER)
|
||||||
|
else
|
||||||
|
add_defines("TD_IMPL_OPENGL_LOADER_GLBINDING2");
|
||||||
|
end
|
||||||
|
|
||||||
target("TowerDefense")
|
target("TowerDefense")
|
||||||
set_kind("binary")
|
set_kind("binary")
|
||||||
@@ -8,15 +14,14 @@ target("TowerDefense")
|
|||||||
add_files("src/*.cpp", "src/*/*.cpp", "src/*/*/*.cpp", "src/*/*/*/*.cpp")
|
add_files("src/*.cpp", "src/*/*.cpp", "src/*/*/*.cpp", "src/*/*/*/*.cpp")
|
||||||
add_cxflags("-pthread")
|
add_cxflags("-pthread")
|
||||||
|
|
||||||
|
add_links("pthread")
|
||||||
|
|
||||||
set_languages("c++17")
|
set_languages("c++17")
|
||||||
|
|
||||||
add_links("glbinding", "z", "SDL2")
|
|
||||||
|
|
||||||
if is_os("linux") then
|
|
||||||
add_links("GL", "pthread")
|
|
||||||
end
|
|
||||||
if is_os("windows") then
|
if is_os("windows") then
|
||||||
add_links("opengl32", "ws2_32", "mingw32", "gdi32", "imm32")
|
add_links("opengl32", "ws2_32", "mingw32", "gdi32", "imm32", "z", "SDL2", "glbinding")
|
||||||
|
else
|
||||||
|
add_packages("zlib", "libsdl", GL_LOADER, "opengl")
|
||||||
end
|
end
|
||||||
|
|
||||||
if is_mode("release") then
|
if is_mode("release") then
|
||||||
|
|||||||
Reference in New Issue
Block a user