diff --git a/inc/debug.h b/inc/debug.h index 7861154..04e5509 100644 --- a/inc/debug.h +++ b/inc/debug.h @@ -3,6 +3,8 @@ #include #include +void CounterStart(); +double CounterStop(); void DebugPrint(const char *format, ...); //#define _DEBUG 1 diff --git a/inc/opengl.h b/inc/opengl.h index 4386059..394c1ae 100644 --- a/inc/opengl.h +++ b/inc/opengl.h @@ -10,7 +10,6 @@ GLuint OpenGL_BuildProgramFromFile(const char *filePath); typedef void (APIENTRYP PFNWGLSWAPINTERVALEXT) (int interval); -// Program extern PFNGLCREATEPROGRAMPROC glCreateProgram; extern PFNGLDELETEPROGRAMPROC glDeleteProgram; extern PFNGLUSEPROGRAMPROC glUseProgram; @@ -43,17 +42,18 @@ extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray; extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation; extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform; -// Shader extern PFNGLCREATESHADERPROC glCreateShader; extern PFNGLDELETESHADERPROC glDeleteShader; extern PFNGLSHADERSOURCEPROC glShaderSource; extern PFNGLCOMPILESHADERPROC glCompileShader; extern PFNGLGETSHADERIVPROC glGetShaderiv; -// VBO extern PFNGLGENBUFFERSPROC glGenBuffers; extern PFNGLBINDBUFFERPROC glBindBuffer; extern PFNGLBUFFERDATAPROC glBufferData; +extern PFNGLMAPBUFFERPROC glMapBuffer; +extern PFNGLUNMAPBUFFERPROC glUnmapBuffer; +extern PFNGLBUFFERSUBDATAPROC glBufferSubData; extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer; extern PFNGLDELETEBUFFERSPROC glDeleteBuffers; extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays; @@ -70,3 +70,5 @@ extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; extern PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT; + +extern PFNGLTEXBUFFERPROC glTexBuffer; diff --git a/src/debug.c b/src/debug.c index c9df9bb..9c359a5 100644 --- a/src/debug.c +++ b/src/debug.c @@ -2,6 +2,26 @@ #include #include + +static LONGLONG CounterStartTime = 0; +static double CounterFreq = 0.0; + +void CounterStart() +{ + LARGE_INTEGER li; + QueryPerformanceFrequency(&li); + CounterFreq = (double)(li.QuadPart) / 1000.0; + QueryPerformanceCounter(&li); + CounterStartTime = li.QuadPart; +} + +double CounterStop() +{ + LARGE_INTEGER li; + QueryPerformanceCounter(&li); + return (double)(li.QuadPart - CounterStartTime) / CounterFreq; +} + void DebugPrint(const char *format, ...) { va_list args; diff --git a/src/opengl.c b/src/opengl.c index c7d5c67..be8cbcc 100644 --- a/src/opengl.c +++ b/src/opengl.c @@ -36,17 +36,18 @@ PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray = NULL; PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation = NULL; PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform = NULL; -// Shader PFNGLCREATESHADERPROC glCreateShader = NULL; PFNGLDELETESHADERPROC glDeleteShader = NULL; PFNGLSHADERSOURCEPROC glShaderSource = NULL; PFNGLCOMPILESHADERPROC glCompileShader = NULL; PFNGLGETSHADERIVPROC glGetShaderiv = NULL; -// VBO PFNGLGENBUFFERSPROC glGenBuffers = NULL; PFNGLBINDBUFFERPROC glBindBuffer = NULL; PFNGLBUFFERDATAPROC glBufferData = NULL; +PFNGLMAPBUFFERPROC glMapBuffer = NULL; +PFNGLUNMAPBUFFERPROC glUnmapBuffer = NULL; +PFNGLBUFFERSUBDATAPROC glBufferSubData = NULL; PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer = NULL; PFNGLDELETEBUFFERSPROC glDeleteBuffers = NULL; PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = NULL; @@ -64,6 +65,8 @@ PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = NULL; PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT = NULL; +PFNGLTEXBUFFERPROC glTexBuffer = NULL; + void OpenGL_Init() { // Program @@ -97,17 +100,18 @@ void OpenGL_Init() glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)wglGetProcAddress("glEnableVertexAttribArray"); glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)wglGetProcAddress("glBindAttribLocation"); - // Shader glCreateShader = (PFNGLCREATESHADERPROC)wglGetProcAddress("glCreateShader"); glDeleteShader = (PFNGLDELETESHADERPROC)wglGetProcAddress("glDeleteShader"); glShaderSource = (PFNGLSHADERSOURCEPROC)wglGetProcAddress("glShaderSource"); glCompileShader = (PFNGLCOMPILESHADERPROC)wglGetProcAddress("glCompileShader"); glGetShaderiv = (PFNGLGETSHADERIVPROC)wglGetProcAddress("glGetShaderiv"); - // VBO glGenBuffers = (PFNGLGENBUFFERSPROC)wglGetProcAddress("glGenBuffers"); glBindBuffer = (PFNGLBINDBUFFERPROC)wglGetProcAddress("glBindBuffer"); glBufferData = (PFNGLBUFFERDATAPROC)wglGetProcAddress("glBufferData"); + glMapBuffer = (PFNGLMAPBUFFERPROC)wglGetProcAddress("glMapBuffer"); + glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)wglGetProcAddress("glUnmapBuffer"); + glBufferSubData = (PFNGLBUFFERSUBDATAPROC)wglGetProcAddress("glBufferSubData"); glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)wglGetProcAddress("glVertexAttribPointer"); glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)wglGetProcAddress("glDeleteBuffers"); glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)wglGetProcAddress("glGenVertexArrays"); @@ -124,6 +128,8 @@ void OpenGL_Init() glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)wglGetProcAddress("glDeleteFramebuffers"); wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXT)wglGetProcAddress("wglSwapIntervalEXT"); + + glTexBuffer = (PFNGLTEXBUFFERPROC)wglGetProcAddress("glTexBuffer"); } BOOL OpenGL_ExtExists(char *ext)