mirror of https://github.com/bjornbytes/lovr.git
lovrPlatformGetProcAddress;
Seems nicer than a global and allows for logging/hooks;
This commit is contained in:
parent
2f9400a5f7
commit
c87d6dec3d
|
@ -53,10 +53,6 @@ typedef void (*windowResizeCallback)(int width, int height);
|
||||||
typedef void (*mouseButtonCallback)(MouseButton button, ButtonAction action);
|
typedef void (*mouseButtonCallback)(MouseButton button, ButtonAction action);
|
||||||
typedef void (*keyboardCallback)(KeyCode key, ButtonAction action);
|
typedef void (*keyboardCallback)(KeyCode key, ButtonAction action);
|
||||||
|
|
||||||
typedef void (*gpuProc)(void);
|
|
||||||
typedef gpuProc (*getProcAddressProc)(const char*);
|
|
||||||
extern getProcAddressProc lovrGetProcAddress;
|
|
||||||
|
|
||||||
bool lovrPlatformInit(void);
|
bool lovrPlatformInit(void);
|
||||||
void lovrPlatformDestroy(void);
|
void lovrPlatformDestroy(void);
|
||||||
const char* lovrPlatformGetName(void);
|
const char* lovrPlatformGetName(void);
|
||||||
|
@ -70,6 +66,7 @@ void lovrPlatformGetWindowSize(int* width, int* height);
|
||||||
void lovrPlatformGetFramebufferSize(int* width, int* height);
|
void lovrPlatformGetFramebufferSize(int* width, int* height);
|
||||||
void lovrPlatformSetSwapInterval(int interval);
|
void lovrPlatformSetSwapInterval(int interval);
|
||||||
void lovrPlatformSwapBuffers(void);
|
void lovrPlatformSwapBuffers(void);
|
||||||
|
void* lovrPlatformGetProcAddress(const char* function);
|
||||||
void lovrPlatformOnWindowClose(windowCloseCallback callback);
|
void lovrPlatformOnWindowClose(windowCloseCallback callback);
|
||||||
void lovrPlatformOnWindowResize(windowResizeCallback callback);
|
void lovrPlatformOnWindowResize(windowResizeCallback callback);
|
||||||
void lovrPlatformOnMouseButton(mouseButtonCallback callback);
|
void lovrPlatformOnMouseButton(mouseButtonCallback callback);
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <EGL/egl.h>
|
||||||
|
#include <EGL/eglext.h>
|
||||||
|
|
||||||
bool lovrPlatformInit() {
|
bool lovrPlatformInit() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -51,6 +53,10 @@ void lovrPlatformSwapBuffers() {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* lovrPlatformGetProcAddress(const char* function) {
|
||||||
|
return (void*) eglGetProcAddress(function)
|
||||||
|
}
|
||||||
|
|
||||||
void lovrPlatformOnWindowClose(windowCloseCallback callback) {
|
void lovrPlatformOnWindowClose(windowCloseCallback callback) {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@ -86,7 +92,3 @@ bool lovrPlatformIsKeyDown(KeyCode key) {
|
||||||
void lovrPlatformSleep(double seconds) {
|
void lovrPlatformSleep(double seconds) {
|
||||||
usleep((unsigned int) (seconds * 1000000));
|
usleep((unsigned int) (seconds * 1000000));
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <EGL/egl.h>
|
|
||||||
#include <EGL/eglext.h>
|
|
||||||
getProcAddressProc lovrGetProcAddress = eglGetProcAddress;
|
|
||||||
|
|
|
@ -12,8 +12,6 @@
|
||||||
#include <GLFW/glfw3native.h>
|
#include <GLFW/glfw3native.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
getProcAddressProc lovrGetProcAddress = glfwGetProcAddress;
|
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
GLFWwindow* window;
|
GLFWwindow* window;
|
||||||
windowCloseCallback onWindowClose;
|
windowCloseCallback onWindowClose;
|
||||||
|
@ -202,6 +200,10 @@ void lovrPlatformSwapBuffers() {
|
||||||
glfwSwapBuffers(state.window);
|
glfwSwapBuffers(state.window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* lovrPlatformGetProcAddress(const char* function) {
|
||||||
|
return (void*) glfwGetProcAddress(function);
|
||||||
|
}
|
||||||
|
|
||||||
void lovrPlatformOnWindowClose(windowCloseCallback callback) {
|
void lovrPlatformOnWindowClose(windowCloseCallback callback) {
|
||||||
state.onWindowClose = callback;
|
state.onWindowClose = callback;
|
||||||
}
|
}
|
||||||
|
|
|
@ -224,7 +224,7 @@ void lovrGraphicsCreateWindow(WindowFlags* flags) {
|
||||||
lovrPlatformOnWindowClose(onCloseWindow);
|
lovrPlatformOnWindowClose(onCloseWindow);
|
||||||
lovrPlatformOnWindowResize(onResizeWindow);
|
lovrPlatformOnWindowResize(onResizeWindow);
|
||||||
lovrPlatformGetFramebufferSize(&state.width, &state.height);
|
lovrPlatformGetFramebufferSize(&state.width, &state.height);
|
||||||
lovrGpuInit(lovrGetProcAddress);
|
lovrGpuInit(lovrPlatformGetProcAddress);
|
||||||
|
|
||||||
state.defaultCanvas = lovrCanvasCreateFromHandle(state.width, state.height, (CanvasFlags) { .stereo = false }, 0, 0, 0, 1, true);
|
state.defaultCanvas = lovrCanvasCreateFromHandle(state.width, state.height, (CanvasFlags) { .stereo = false }, 0, 0, 0, 1, true);
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ typedef struct {
|
||||||
uint32_t instances;
|
uint32_t instances;
|
||||||
} DrawCommand;
|
} DrawCommand;
|
||||||
|
|
||||||
void lovrGpuInit(getProcAddressProc getProcAddress);
|
void lovrGpuInit(void* (*getProcAddress)(const char*));
|
||||||
void lovrGpuDestroy(void);
|
void lovrGpuDestroy(void);
|
||||||
void lovrGpuClear(struct Canvas* canvas, Color* color, float* depth, int* stencil);
|
void lovrGpuClear(struct Canvas* canvas, Color* color, float* depth, int* stencil);
|
||||||
void lovrGpuCompute(struct Shader* shader, int x, int y, int z);
|
void lovrGpuCompute(struct Shader* shader, int x, int y, int z);
|
||||||
|
|
|
@ -1011,7 +1011,7 @@ static void lovrGpuSetViewports(float* viewport, uint32_t count) {
|
||||||
|
|
||||||
// GPU
|
// GPU
|
||||||
|
|
||||||
void lovrGpuInit(getProcAddressProc getProcAddress) {
|
void lovrGpuInit(void* (*getProcAddress)(const char*)) {
|
||||||
#ifdef LOVR_GL
|
#ifdef LOVR_GL
|
||||||
gladLoadGLLoader((GLADloadproc) getProcAddress);
|
gladLoadGLLoader((GLADloadproc) getProcAddress);
|
||||||
#elif defined(LOVR_GLES)
|
#elif defined(LOVR_GLES)
|
||||||
|
|
Loading…
Reference in New Issue