added mesh rendering

This commit is contained in:
2025-05-28 14:36:57 +03:00
parent 60fa98e240
commit b83078553e
53 changed files with 1436 additions and 363 deletions

View File

@@ -1,7 +1,8 @@
#include "god/build.h"
#include "god/c.h"
#include "god/ld.h"
char* tier0_dll = 0;
char* tier0_lib = 0;
void tier0_build(struct build_data b)
{
char* files[] = {
@@ -33,9 +34,9 @@ void tier0_build(struct build_data b)
NULL,
};
tier0_dll = ld_link_project(o, (struct link_settings){
tier0_lib = ld_link_project(o, (struct link_settings){
.type = LINK_TYPE_DYNAMIC,
.libs = libs,
});
mv("build/"GAME_NAME"/game/bin/libtier0.so",tier0_dll);
}
mv("build/"GAME_NAME"/game/bin/libtier0.so",tier0_lib);
}

View File

@@ -3,11 +3,16 @@
#include "stdarg.h"
#include "unistd.h"
#include "sys/stat.h"
#include "execinfo.h"
#include "dirent.h"
#include "dlfcn.h"
#include "time.h"
#ifdef __linux__
#include "dlfcn.h"
#include "execinfo.h"
#endif
#ifdef __WIN32__
#include "windows.h"
#include "dbghelp.h"
#endif
PLATFORM_INTERFACE void Plat_FatalErrorFunc(const char* szFormat, ...)
{
va_list list;
@@ -76,6 +81,7 @@ PLATFORM_INTERFACE char *Plat_GetExtension( const char *szPath )
PLATFORM_INTERFACE void Plat_Backtrace( void )
{
#ifdef __linux__
void *buffer[64];
int nptrs = backtrace(buffer, 64);
char **symbols = backtrace_symbols(buffer, nptrs);
@@ -90,22 +96,64 @@ PLATFORM_INTERFACE void Plat_Backtrace( void )
}
free(symbols);
#endif
#ifdef __WIN32__
void* buffer[64];
USHORT nptrs = CaptureStackBackTrace(0, 64, buffer, NULL);
HANDLE process = GetCurrentProcess();
SymInitialize(process, NULL, TRUE);
SYMBOL_INFO* symbol = (SYMBOL_INFO*)calloc(sizeof(SYMBOL_INFO) + 256, 1);
symbol->MaxNameLen = 255;
symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
if (!symbol) {
V_printf("Backtrace failed\n");
return;
}
for (USHORT i = 0; i < nptrs; i++) {
if (SymFromAddr(process, (DWORD64)(buffer[i]), 0, symbol)) {
V_printf(" [%d] %s - 0x%0llX\n", i, symbol->Name, symbol->Address);
} else {
V_printf(" [%d] ??? - 0x%0llX\n", i, (DWORD64)(buffer[i]));
}
}
free(symbol);
#endif
};
PLATFORM_INTERFACE void *Plat_LoadLibrary( const char *psz )
{
#ifdef __linux__
void *lib = dlopen(psz, RTLD_GLOBAL | RTLD_NOW);
if (!lib)
V_printf("Failed to open %s\n\t%s\n", psz, dlerror());
return lib;
#endif
#ifdef __WIN32__
return LoadLibraryA(psz);
#endif
}
PLATFORM_INTERFACE void *Plat_GetProc( void *lib, const char *psz )
{
#ifdef __linux__
return dlsym(lib, psz);
#endif
#ifdef __WIN32__
return (void*)GetProcAddress((HMODULE)lib, psz);
#endif
}
PLATFORM_INTERFACE void Plat_UnloadLibrary( void *lib )
{
#ifdef __linux__
dlclose(lib);
#endif
#ifdef __WIN32__
FreeLibrary((HMODULE)lib);
#endif
};
PLATFORM_INTERFACE double Plat_GetTime( void )