Skip to content

Commit

Permalink
renderer-as-plugins: port-msc: Added support for Microsoft Compiler
Browse files Browse the repository at this point in the history
including renderer as plugins support, \o/
  • Loading branch information
andreasdr committed Jan 10, 2022
1 parent 2efab81 commit 9feba1e
Show file tree
Hide file tree
Showing 115 changed files with 652 additions and 4,578 deletions.
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -863,12 +863,13 @@ MAIN_SRCS = \
src/tdme/tools/cli/converttotm-main.cpp \
src/tdme/tools/cli/copyanimationsetups-main.cpp \
src/tdme/tools/cli/createinstaller-main.cpp \
src/tdme/tools/cli/recreatevkcache-main.cpp \
src/tdme/tools/cli/msclib2dll-main.cpp \
src/tdme/tools/cli/fixdoxygen-main.cpp \
src/tdme/tools/cli/generatelicenses-main.cpp \
src/tdme/tools/cli/importtmodel-main.cpp \
src/tdme/tools/cli/makefilegenerator-main.cpp \
src/tdme/tools/cli/optimizemodel-main.cpp \
src/tdme/tools/cli/recreatevkcache-main.cpp \
src/tdme/tools/cli/scenefixmodelszup2yup-main.cpp \
src/tdme/tools/cli/sortincludes-main.cpp

Expand Down
898 changes: 0 additions & 898 deletions Makefile-Vulkan.nmake

This file was deleted.

297 changes: 229 additions & 68 deletions Makefile.nmake

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion documentation/doxygen.private.config
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ JAVADOC_AUTOBRIEF = YES
OUTPUT_DIRECTORY = private
PERL_PATH = /usr/local/bin/perl
PROJECT_NAME = TDME2
PROJECT_NUMBER = 1.9.113
PROJECT_NUMBER = 1.9.114
RECURSIVE = YES
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
Expand Down
2 changes: 1 addition & 1 deletion documentation/doxygen.public.config
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ JAVADOC_AUTOBRIEF = YES
OUTPUT_DIRECTORY = public
PERL_PATH = /usr/local/bin/perl
PROJECT_NAME = TDME2
PROJECT_NUMBER = 1.9.113
PROJECT_NUMBER = 1.9.114
RECURSIVE = NO
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
Expand Down
Binary file added ext/windows-msc/tools.zip
Binary file not shown.
3,282 changes: 0 additions & 3,282 deletions patches/220109-msc-renderer-as-plugins.diff

This file was deleted.

91 changes: 63 additions & 28 deletions src/tdme/application/Application.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
#if defined(_MSC_VER)
// this suppresses a warning redefinition of APIENTRY macro
#define NOMINMAX
#include <windows.h>
#endif
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>

Expand All @@ -7,6 +12,7 @@
#endif

#if defined(_WIN32)
#define NOMINMAX
#include <windows.h>
#include <dbghelp.h>
#include <stdio.h>
Expand All @@ -18,7 +24,10 @@
#include <Carbon/Carbon.h>
#endif

#include <dlfcn.h>
#if !defined(_MSC_VER)
#include <dlfcn.h>
#endif

#include <stdlib.h>

#include <array>
Expand Down Expand Up @@ -515,14 +524,14 @@ static void glfwErrorCallback(int error, const char* description) {
}

void Application::run(int argc, char** argv, const string& title, InputEventHandler* inputEventHandler, int windowHints) {
string rendererLibrary = "libopengl3corerenderer.so";
string rendererLibrary = "libopengl3corerenderer";
for (auto i = 1; i < argc; i++) {
auto argValue = string(argv[i]);
if (argValue == "--debug") debuggingEnabled = true; else
if (argValue == "--gles2") rendererLibrary = "libopengles2renderer.so"; else
if (argValue == "--gl2") rendererLibrary = "libopengl2renderer.so"; else
if (argValue == "--gl3core") rendererLibrary = "libopengl3corerenderer.so"; else
if (argValue == "--vulkan") rendererLibrary = "libvulkanrenderer.so";
if (argValue == "--gles2") rendererLibrary = "libopengles2renderer"; else
if (argValue == "--gl2") rendererLibrary = "libopengl2renderer"; else
if (argValue == "--gl3core") rendererLibrary = "libopengl3corerenderer"; else
if (argValue == "--vulkan") rendererLibrary = "libvulkanrenderer";
}

//
Expand Down Expand Up @@ -558,28 +567,54 @@ void Application::run(int argc, char** argv, const string& title, InputEventHand

Console::println("Application::run(): Opening renderer library: " + rendererLibrary);

//
auto rendererLibraryHandle = dlopen(rendererLibrary.c_str(), RTLD_NOW);
if (rendererLibraryHandle == nullptr) {
Console::println("Application::run(): Could not open renderer library");
glfwTerminate();
return;
}
//
Renderer* (*rendererCreateInstance)() = (Renderer*(*)())dlsym(rendererLibraryHandle, "createInstance");
//
if (rendererCreateInstance == nullptr) {
Console::println("Application::run(): Could not find renderer library createInstance() entry point");
glfwTerminate();
return;
}
//
renderer = (Renderer*)rendererCreateInstance();
if (renderer == nullptr) {
Console::println("Application::run(): Could not create renderer");
glfwTerminate();
return;
}
// load renderer library
#if defined(_MSC_VER)
//
auto rendererLibraryHandle = LoadLibrary((rendererLibrary + ".dll").c_str());
if (rendererLibraryHandle == nullptr) {
Console::println("Application::run(): Could not open renderer library");
glfwTerminate();
return;
}
//
Renderer* (*rendererCreateInstance)() = (Renderer*(*)())GetProcAddress(rendererLibraryHandle, "createInstance");
//
if (rendererCreateInstance == nullptr) {
Console::println("Application::run(): Could not find renderer library createInstance() entry point");
glfwTerminate();
return;
}
//
renderer = (Renderer*)rendererCreateInstance();
if (renderer == nullptr) {
Console::println("Application::run(): Could not create renderer");
glfwTerminate();
return;
}
#else
//
auto rendererLibraryHandle = dlopen((rendererLibrary + ".so").c_str(), RTLD_NOW);
if (rendererLibraryHandle == nullptr) {
Console::println("Application::run(): Could not open renderer library");
glfwTerminate();
return;
}
//
Renderer* (*rendererCreateInstance)() = (Renderer*(*)())dlsym(rendererLibraryHandle, "createInstance");
//
if (rendererCreateInstance == nullptr) {
Console::println("Application::run(): Could not find renderer library createInstance() entry point");
glfwTerminate();
return;
}
//
renderer = (Renderer*)rendererCreateInstance();
if (renderer == nullptr) {
Console::println("Application::run(): Could not create renderer");
glfwTerminate();
return;
}
#endif

// window hints
if ((windowHints & WINDOW_HINT_NOTRESIZEABLE) == WINDOW_HINT_NOTRESIZEABLE) glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
Expand Down
30 changes: 16 additions & 14 deletions src/tdme/application/Application.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
#pragma once

#if defined(VULKAN)
#define GLFW_INCLUDE_VULKAN
#else
#define GLFW_INCLUDE_NONE
#if defined(_MSC_VER)
// this suppresses a warning redefinition of APIENTRY macro
#define NOMINMAX
#include <windows.h>
#endif
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>

#define MOUSE_CURSOR_DISABLED 0
#define MOUSE_CURSOR_ENABLED 1
#define MOUSE_CURSOR_NORMAL 1
Expand Down Expand Up @@ -308,9 +310,9 @@ class tdme::application::Application
virtual void onClose();

private:
static Renderer* renderer;
static Application* application;
static InputEventHandler* inputEventHandler;
STATIC_DLL_IMPEXT static Renderer* renderer;
STATIC_DLL_IMPEXT static Application* application;
STATIC_DLL_IMPEXT static InputEventHandler* inputEventHandler;
int windowHints { WINDOW_HINT_NONE };
string executableFileName;
bool debuggingEnabled { false };
Expand All @@ -320,16 +322,16 @@ class tdme::application::Application
int windowXPosition { -1 };
int windowYPosition { -1 };
bool fullScreen { false };
static int64_t timeLast;
static bool limitFPS;
STATIC_DLL_IMPEXT static int64_t timeLast;
STATIC_DLL_IMPEXT static bool limitFPS;
string title;
int exitCode { 0 };

static GLFWwindow* glfwWindow;
static array<unsigned int, 10> glfwMouseButtonDownFrames;
static int glfwMouseButtonLast;
static bool glfwCapsLockEnabled;
static GLFWcursor* glfwHandCursor;
STATIC_DLL_IMPEXT static GLFWwindow* glfwWindow;
STATIC_DLL_IMPEXT static array<unsigned int, 10> glfwMouseButtonDownFrames;
STATIC_DLL_IMPEXT static int glfwMouseButtonLast;
STATIC_DLL_IMPEXT static bool glfwCapsLockEnabled;
STATIC_DLL_IMPEXT static GLFWcursor* glfwHandCursor;

/**
* Set application icon
Expand Down
5 changes: 5 additions & 0 deletions src/tdme/application/InputDefinitions.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#pragma once

#if defined(_MSC_VER)
// this suppresses a warning redefinition of APIENTRY macro
#define NOMINMAX
#include <windows.h>
#endif
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>

Expand Down
2 changes: 1 addition & 1 deletion src/tdme/audio/Audio.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class tdme::audio::Audio final
private:
static constexpr int32_t ALBUFFERID_NONE { -1 };
static constexpr int32_t ALSOURCEID_NONE { -1 };
static Audio* instance;
STATIC_DLL_IMPEXT static Audio* instance;

ALCdevice* device { nullptr };
ALCcontext* context { nullptr };
Expand Down
2 changes: 1 addition & 1 deletion src/tdme/engine/Camera.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class tdme::engine::Camera final
enum CameraMode { CAMERAMODE_LOOKAT, CAMERAMODE_NONE };

private:
static Vector3 defaultUp;
STATIC_DLL_IMPEXT static Vector3 defaultUp;
Renderer* renderer { nullptr };
int32_t width;
int32_t height;
Expand Down
80 changes: 40 additions & 40 deletions src/tdme/engine/Engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,50 +174,50 @@ class tdme::engine::Engine final
static constexpr int ENGINETHREADSQUEUE_COMPUTE_DISPATCH_COUNT { 5 };

protected:
static Engine* currentEngine;
STATIC_DLL_IMPEXT static Engine* currentEngine;

private:
static Engine* instance;
static Renderer* renderer;

static TextureManager* textureManager;
static VBOManager* vboManager;
static MeshManager* meshManager;
static GUIRenderer* guiRenderer;

static AnimationProcessingTarget animationProcessingTarget;

static EZRShader* ezrShader;
static ShadowMapCreationShader* shadowMappingShaderPre;
static ShadowMapRenderShader* shadowMappingShaderRender;
static LightingShader* lightingShader;
static ParticlesShader* particlesShader;
static LinesShader* linesShader;
static SkinningShader* skinningShader;
static GUIShader* guiShader;
static FrameBufferRenderShader* frameBufferRenderShader;
static DeferredLightingRenderShader* deferredLightingRenderShader;
static PostProcessing* postProcessing;
static PostProcessingShader* postProcessingShader;
static Texture2DRenderShader* texture2DRenderShader;
static int threadCount;
static bool have4K;
static float animationBlendingTime;
static int32_t shadowMapWidth;
static int32_t shadowMapHeight;
static int32_t shadowMapRenderLookUps;
static int32_t environmentMappingWidth;
static int32_t environmentMappingHeight;
static float transformationsComputingReduction1Distance;
static float transformationsComputingReduction2Distance;
STATIC_DLL_IMPEXT static Engine* instance;
STATIC_DLL_IMPEXT static Renderer* renderer;

STATIC_DLL_IMPEXT static TextureManager* textureManager;
STATIC_DLL_IMPEXT static VBOManager* vboManager;
STATIC_DLL_IMPEXT static MeshManager* meshManager;
STATIC_DLL_IMPEXT static GUIRenderer* guiRenderer;

STATIC_DLL_IMPEXT static AnimationProcessingTarget animationProcessingTarget;

STATIC_DLL_IMPEXT static EZRShader* ezrShader;
STATIC_DLL_IMPEXT static ShadowMapCreationShader* shadowMappingShaderPre;
STATIC_DLL_IMPEXT static ShadowMapRenderShader* shadowMappingShaderRender;
STATIC_DLL_IMPEXT static LightingShader* lightingShader;
STATIC_DLL_IMPEXT static ParticlesShader* particlesShader;
STATIC_DLL_IMPEXT static LinesShader* linesShader;
STATIC_DLL_IMPEXT static SkinningShader* skinningShader;
STATIC_DLL_IMPEXT static GUIShader* guiShader;
STATIC_DLL_IMPEXT static FrameBufferRenderShader* frameBufferRenderShader;
STATIC_DLL_IMPEXT static DeferredLightingRenderShader* deferredLightingRenderShader;
STATIC_DLL_IMPEXT static PostProcessing* postProcessing;
STATIC_DLL_IMPEXT static PostProcessingShader* postProcessingShader;
STATIC_DLL_IMPEXT static Texture2DRenderShader* texture2DRenderShader;
STATIC_DLL_IMPEXT static int threadCount;
STATIC_DLL_IMPEXT static bool have4K;
STATIC_DLL_IMPEXT static float animationBlendingTime;
STATIC_DLL_IMPEXT static int32_t shadowMapWidth;
STATIC_DLL_IMPEXT static int32_t shadowMapHeight;
STATIC_DLL_IMPEXT static int32_t shadowMapRenderLookUps;
STATIC_DLL_IMPEXT static int32_t environmentMappingWidth;
STATIC_DLL_IMPEXT static int32_t environmentMappingHeight;
STATIC_DLL_IMPEXT static float transformationsComputingReduction1Distance;
STATIC_DLL_IMPEXT static float transformationsComputingReduction2Distance;

struct Shader {
ShaderType type;
string id;
map<string, ShaderParameter> parameterDefaults;
};

static map<string, Shader> shaders;
STATIC_DLL_IMPEXT static map<string, Shader> shaders;

struct DecomposedEntities {
vector<Entity*> noFrustumCullingEntities;
Expand All @@ -238,7 +238,7 @@ class tdme::engine::Engine final
vector<Object3D*> needsComputeTransformationsEntities;
};

static unordered_map<string, uint8_t> uniqueShaderIds;
STATIC_DLL_IMPEXT static unordered_map<string, uint8_t> uniqueShaderIds;

int32_t width { -1 };
int32_t height { -1 };
Expand Down Expand Up @@ -273,7 +273,7 @@ class tdme::engine::Engine final

EntityRenderer* entityRenderer { nullptr };

static bool skinningShaderEnabled;
STATIC_DLL_IMPEXT static bool skinningShaderEnabled;
bool shadowMappingEnabled;
bool renderingInitiated;
bool renderingComputedTransformations;
Expand Down Expand Up @@ -372,9 +372,9 @@ class tdme::engine::Engine final

};

static vector<EngineThread*> engineThreads;
static Queue<EngineThreadQueueElement>* engineThreadsQueue;
static EngineThreadQueueElementPool engineThreadQueueElementPool;
STATIC_DLL_IMPEXT static vector<EngineThread*> engineThreads;
STATIC_DLL_IMPEXT static Queue<EngineThreadQueueElement>* engineThreadsQueue;
STATIC_DLL_IMPEXT static EngineThreadQueueElementPool engineThreadQueueElementPool;

/**
* @return mesh manager
Expand Down
1 change: 0 additions & 1 deletion src/tdme/engine/EngineGL2Renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ using tdme::gui::renderer::GUIShader;

EngineGL2Renderer::EngineGL2Renderer()
{
engine = Engine::getInstance();
}

bool EngineGL2Renderer::prepareWindowSystemRendererContext(int tryIdx) {
Expand Down
7 changes: 5 additions & 2 deletions src/tdme/engine/EngineGL2Renderer.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#pragma once

#if defined(_MSC_VER)
// this suppresses a warning redefinition of APIENTRY macro
#define NOMINMAX
#include <windows.h>
#endif
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>

Expand Down Expand Up @@ -37,6 +42,4 @@ class tdme::engine::EngineGL2Renderer: public GL2Renderer
void onUpdateShader(int contextIdx) override;
void onUpdateShaderParameters(int contextIdx) override;

private:
Engine* engine { nullptr };
};
Loading

0 comments on commit 9feba1e

Please sign in to comment.