1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

move wglSwapIntervalEXT to opengl.c

This commit is contained in:
FunkyFr3sh 2018-05-23 02:03:45 +02:00
parent 5ed60e662e
commit 90758a08c8
3 changed files with 16 additions and 5 deletions

View File

@ -8,6 +8,8 @@ BOOL OpenGL_ExtExists(char *ext);
GLuint OpenGL_BuildProgram(const GLchar *vertSource, const GLchar *fragSource); GLuint OpenGL_BuildProgram(const GLchar *vertSource, const GLchar *fragSource);
GLuint OpenGL_BuildProgramFromFile(const char *filePath); GLuint OpenGL_BuildProgramFromFile(const char *filePath);
typedef void (APIENTRYP PFNWGLSWAPINTERVALEXT) (int interval);
// Program // Program
extern PFNGLCREATEPROGRAMPROC glCreateProgram; extern PFNGLCREATEPROGRAMPROC glCreateProgram;
extern PFNGLDELETEPROGRAMPROC glDeleteProgram; extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
@ -66,3 +68,5 @@ extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
extern PFNGLDRAWBUFFERSPROC glDrawBuffers; extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus; extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
extern PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT;

View File

@ -62,6 +62,8 @@ PFNGLDRAWBUFFERSPROC glDrawBuffers = NULL;
PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus = NULL; PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus = NULL;
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = NULL; PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = NULL;
PFNWGLSWAPINTERVALEXT wglSwapIntervalEXT = NULL;
void OpenGL_Init() void OpenGL_Init()
{ {
// Program // Program
@ -120,6 +122,8 @@ void OpenGL_Init()
glDrawBuffers = (PFNGLDRAWBUFFERSPROC)wglGetProcAddress("glDrawBuffers"); glDrawBuffers = (PFNGLDRAWBUFFERSPROC)wglGetProcAddress("glDrawBuffers");
glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)wglGetProcAddress("glCheckFramebufferStatus"); glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)wglGetProcAddress("glCheckFramebufferStatus");
glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)wglGetProcAddress("glDeleteFramebuffers"); glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)wglGetProcAddress("glDeleteFramebuffers");
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXT)wglGetProcAddress("wglSwapIntervalEXT");
} }
BOOL OpenGL_ExtExists(char *ext) BOOL OpenGL_ExtExists(char *ext)

View File

@ -49,7 +49,6 @@ DWORD WINAPI render_main(void)
if (OpenGL_ExtExists("WGL_EXT_swap_control")) if (OpenGL_ExtExists("WGL_EXT_swap_control"))
{ {
BOOL(APIENTRY *wglSwapIntervalEXT)(int) = (BOOL(APIENTRY *)(int))wglGetProcAddress("wglSwapIntervalEXT");
if (wglSwapIntervalEXT) if (wglSwapIntervalEXT)
{ {
if (ddraw->vsync) if (ddraw->vsync)
@ -532,15 +531,19 @@ DWORD WINAPI render_main(void)
} }
} }
if (scaleProgram && paletteConvProgram) if (paletteConvProgram)
{ {
// draw surface into framebuffer
glUseProgram(paletteConvProgram);
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, surfaceTexId); glBindTexture(GL_TEXTURE_2D, surfaceTexId);
glActiveTexture(GL_TEXTURE1); glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, paletteTexId); glBindTexture(GL_TEXTURE_2D, paletteTexId);
glActiveTexture(GL_TEXTURE0);
}
if (scaleProgram && paletteConvProgram)
{
// draw surface into framebuffer
glUseProgram(paletteConvProgram);
glViewport(0, 0, ddraw->width, ddraw->height); glViewport(0, 0, ddraw->width, ddraw->height);