C instance creation

This commit is contained in:
Greg Wells
2025-05-20 22:35:51 -04:00
parent a4166ae5c2
commit fa58a2f2d6
12 changed files with 150 additions and 112 deletions

View File

@@ -6,6 +6,7 @@ gnReturnCode gnCreateInstance(gnInstance* instance, struct gnInstanceInfo_t info
if (!gnIsAPISupported(info.renderingAPI)) return GN_UNSUPPORTED_RENDERING_API;
instance->dynamicLib = gnLoadRenderingDLL(info.renderingAPI);
if (instance->dynamicLib == NULL) return GN_UNABLE_TO_LOAD_DYNAMIC_LIBARRY;
instance->functions = malloc(sizeof(struct gnFunctions_t));
gnLoadFunctions(instance->dynamicLib, instance->functions);
return instance->functions->_gnCreateInstance(instance, info);

View File

@@ -18,7 +18,7 @@ gnRenderingAPI* gnGetSupportedRenderingAPIs(int* count) {
struct gnDynamicLibrary_t* gnLoadDynamicLibrary(const gnString path) {
struct gnDynamicLibrary_t* dll = malloc(sizeof(struct gnDynamicLibrary_t));
dll->dllPtr = dlopen(gnToCString(gnCombineStrings(path, ".dylib")), RTLD_LAZY),
dll->isValid = true
dll->isValid = true;
if (dll->dllPtr == NULL) dll->isValid = false;
return dll;
}

View File

@@ -4,7 +4,8 @@ typedef enum gnReturnCode_t {
GN_SUCCESS,
GN_UNKNOWN_RENDERINGAPI,
GN_UNSUPPORTED_RENDERING_API,
GN_UNABLE_TO_LOAD_DYNAMIC_LIBARRY
GN_UNABLE_TO_LOAD_DYNAMIC_LIBARRY,
GN_FAILED_CREATE_INSTANCE
// GN_UNKNOWN_ERROR,
// GN_UNKNOWN_FRAMEBUFFER_ATTACHMENT,
@@ -19,7 +20,6 @@ typedef enum gnReturnCode_t {
// GN_FAILED_CREATE_PRESENTATION_QUEUE,
// GN_FAILED_TO_CREATE_FRAMEBUFFER,
// GN_FAILED_CREATE_RENDERPASS,
// GN_FAILED_CREATE_INSTANCE,
// GN_FAILED_TO_ATTACH_WINDOW,
// GN_FAILED_TO_CREATE_IMAGE
} gnReturnCode;