فهرست منبع

Added wglDeleteContext.

bkaradzic 13 سال پیش
والد
کامیت
80f2deb54a
4فایلهای تغییر یافته به همراه145 افزوده شده و 110 حذف شده
  1. 15 0
      src/bgfx_p.h
  2. 106 104
      src/glimports.h
  3. 21 4
      src/renderer_gl.cpp
  4. 3 2
      src/renderer_gl.h

+ 15 - 0
src/bgfx_p.h

@@ -2487,6 +2487,21 @@ namespace bgfx
 					}
 					return 0;
 
+				case WM_SYSCOMMAND:
+					switch (_wparam)
+					{
+					case SC_MINIMIZE:
+					case SC_RESTORE:
+						{
+							HWND parent = GetWindow(_hwnd, GW_OWNER);
+							if (NULL != parent)
+							{
+								PostMessage(parent, _id, _wparam, _lparam);
+							}
+						}
+					}
+					break;
+
 				default:
 					break;
 				}

+ 106 - 104
src/glimports.h

@@ -12,113 +12,115 @@
 // http://www.opengl.org/sdk/docs/man/
 
 #if BX_PLATFORM_WINDOWS
-GL_IMPORT(false, PFNGLGETERRORPROC,                 glGetError);
-GL_IMPORT(false, PFNGLREADPIXELSPROC,               glReadPixels);
-GL_IMPORT(false, PFNGLTEXIMAGE2DPROC,               glTexImage2D);
-GL_IMPORT(false, PFNGLTEXPARAMETERIPROC,            glTexParameteri);
-GL_IMPORT(false, PFNGLBINDTEXTUREPROC,              glBindTexture);
-GL_IMPORT(false, PFNGLGENTEXTURESPROC,              glGenTextures);
-GL_IMPORT(false, PFNGLDELETETEXTURESPROC,           glDeleteTextures);
-GL_IMPORT(false, PFNGLCOLORMASKPROC,                glColorMask);
-GL_IMPORT(false, PFNGLDEPTHFUNCPROC,                glDepthFunc);
-GL_IMPORT(false, PFNGLDISABLEPROC,                  glDisable);
-GL_IMPORT(false, PFNGLVIEWPORTPROC,                 glViewport);
-GL_IMPORT(false, PFNGLDRAWELEMENTSPROC,             glDrawElements);
-GL_IMPORT(false, PFNGLGETINTEGERVPROC,              glGetIntegerv);
-GL_IMPORT(false, PFNGLGETSTRINGPROC,                glGetString);
-GL_IMPORT(false, PFNGLDRAWARRAYSPROC,               glDrawArrays);
-GL_IMPORT(false, PFNGLBLENDFUNCPROC,                glBlendFunc);
-GL_IMPORT(false, PFNGLPOINTSIZEPROC,                glPointSize);
-GL_IMPORT(false, PFNGLCULLFACEPROC,                 glCullFace);
-GL_IMPORT(false, PFNGLCLEARPROC,                    glClear);
-GL_IMPORT(false, PFNGLSCISSORPROC,                  glScissor);
-GL_IMPORT(false, PFNGLENABLEPROC,                   glEnable);
-GL_IMPORT(false, PFNGLCLEARSTENCILPROC,             glClearStencil);
-GL_IMPORT(false, PFNGLDEPTHMASKPROC,                glDepthMask);
-GL_IMPORT(false, PFNGLCLEARDEPTHPROC,               glClearDepth);
-GL_IMPORT(false, PFNGLCLEARCOLORPROC,               glClearColor);
+GL_IMPORT(false, PFNGLGETERRORPROC,                       glGetError);
+GL_IMPORT(false, PFNGLREADPIXELSPROC,                     glReadPixels);
+GL_IMPORT(false, PFNGLTEXIMAGE2DPROC,                     glTexImage2D);
+GL_IMPORT(false, PFNGLTEXPARAMETERIPROC,                  glTexParameteri);
+GL_IMPORT(false, PFNGLBINDTEXTUREPROC,                    glBindTexture);
+GL_IMPORT(false, PFNGLGENTEXTURESPROC,                    glGenTextures);
+GL_IMPORT(false, PFNGLDELETETEXTURESPROC,                 glDeleteTextures);
+GL_IMPORT(false, PFNGLCOLORMASKPROC,                      glColorMask);
+GL_IMPORT(false, PFNGLDEPTHFUNCPROC,                      glDepthFunc);
+GL_IMPORT(false, PFNGLDISABLEPROC,                        glDisable);
+GL_IMPORT(false, PFNGLVIEWPORTPROC,                       glViewport);
+GL_IMPORT(false, PFNGLDRAWELEMENTSPROC,                   glDrawElements);
+GL_IMPORT(false, PFNGLGETINTEGERVPROC,                    glGetIntegerv);
+GL_IMPORT(false, PFNGLGETSTRINGPROC,                      glGetString);
+GL_IMPORT(false, PFNGLDRAWARRAYSPROC,                     glDrawArrays);
+GL_IMPORT(false, PFNGLBLENDFUNCPROC,                      glBlendFunc);
+GL_IMPORT(false, PFNGLPOINTSIZEPROC,                      glPointSize);
+GL_IMPORT(false, PFNGLCULLFACEPROC,                       glCullFace);
+GL_IMPORT(false, PFNGLCLEARPROC,                          glClear);
+GL_IMPORT(false, PFNGLSCISSORPROC,                        glScissor);
+GL_IMPORT(false, PFNGLENABLEPROC,                         glEnable);
+GL_IMPORT(false, PFNGLCLEARSTENCILPROC,                   glClearStencil);
+GL_IMPORT(false, PFNGLDEPTHMASKPROC,                      glDepthMask);
+GL_IMPORT(false, PFNGLCLEARDEPTHPROC,                     glClearDepth);
+GL_IMPORT(false, PFNGLCLEARCOLORPROC,                     glClearColor);
 #endif // BX_PLATFORM_WINDOWS
 
-GL_IMPORT(false, PFNGLACTIVETEXTUREPROC,            glActiveTexture);
-GL_IMPORT(false, PFNGLCOMPRESSEDTEXIMAGE2DPROC,     glCompressedTexImage2D);
-GL_IMPORT(false, PFNGLCOMPRESSEDTEXIMAGE3DPROC,     glCompressedTexImage3D);
-GL_IMPORT(false, PFNGLBINDBUFFERPROC,               glBindBuffer);
-GL_IMPORT(false, PFNGLDELETEBUFFERSPROC,            glDeleteBuffers);
-GL_IMPORT(false, PFNGLGENBUFFERSPROC,               glGenBuffers);
-GL_IMPORT(false, PFNGLBUFFERDATAPROC,               glBufferData);
-GL_IMPORT(false, PFNGLBUFFERSUBDATAPROC,            glBufferSubData);
-GL_IMPORT(false, PFNGLCREATEPROGRAMPROC,            glCreateProgram);
-GL_IMPORT(false, PFNGLCREATESHADERPROC,             glCreateShader);
-GL_IMPORT(false, PFNGLDELETEPROGRAMPROC,            glDeleteProgram);
-GL_IMPORT(false, PFNGLDELETESHADERPROC,             glDeleteShader);
-GL_IMPORT(false, PFNGLATTACHSHADERPROC,             glAttachShader);
-GL_IMPORT(false, PFNGLCOMPILESHADERPROC,            glCompileShader);
-GL_IMPORT(false, PFNGLSHADERSOURCEPROC,             glShaderSource);
-GL_IMPORT(false, PFNGLGETSHADERIVPROC,              glGetShaderiv);
-GL_IMPORT(false, PFNGLGETSHADERINFOLOGPROC,         glGetShaderInfoLog);
-GL_IMPORT(false, PFNGLLINKPROGRAMPROC,              glLinkProgram);
-GL_IMPORT(false, PFNGLGETPROGRAMIVPROC,             glGetProgramiv);
-GL_IMPORT(false, PFNGLGETPROGRAMINFOLOGPROC,        glGetProgramInfoLog);
-GL_IMPORT(false, PFNGLUSEPROGRAMPROC,               glUseProgram);
-GL_IMPORT(false, PFNGLGETACTIVEATTRIBPROC,          glGetActiveAttrib);
-GL_IMPORT(false, PFNGLGETATTRIBLOCATIONPROC,        glGetAttribLocation);
-GL_IMPORT(false, PFNGLGETACTIVEUNIFORMPROC,         glGetActiveUniform);
-GL_IMPORT(false, PFNGLGETUNIFORMLOCATIONPROC,       glGetUniformLocation);
-GL_IMPORT(false, PFNGLENABLEVERTEXATTRIBARRAYPROC,  glEnableVertexAttribArray);
-GL_IMPORT(false, PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray);
-GL_IMPORT(false, PFNGLVERTEXATTRIBPOINTERPROC,      glVertexAttribPointer);
-GL_IMPORT(false, PFNGLVERTEXATTRIB1FPROC,           glVertexAttrib1f);
-GL_IMPORT(false, PFNGLVERTEXATTRIB2FPROC,           glVertexAttrib2f);
-GL_IMPORT(false, PFNGLVERTEXATTRIB3FPROC,           glVertexAttrib3f);
-GL_IMPORT(false, PFNGLVERTEXATTRIB4FPROC,           glVertexAttrib4f);
-GL_IMPORT(false, PFNGLBINDFRAMEBUFFERPROC,          glBindFramebuffer);
-GL_IMPORT(false, PFNGLGENFRAMEBUFFERSPROC,          glGenFramebuffers);
-GL_IMPORT(false, PFNGLDELETEFRAMEBUFFERSPROC,       glDeleteFramebuffers);
-GL_IMPORT(false, PFNGLCHECKFRAMEBUFFERSTATUSPROC,   glCheckFramebufferStatus);
-GL_IMPORT(false, PFNGLFRAMEBUFFERRENDERBUFFERPROC,  glFramebufferRenderbuffer);
-GL_IMPORT(false, PFNGLFRAMEBUFFERTEXTURE2DPROC,     glFramebufferTexture2D);
-GL_IMPORT(false, PFNGLBINDRENDERBUFFERPROC,         glBindRenderbuffer);
-GL_IMPORT(false, PFNGLGENRENDERBUFFERSPROC,         glGenRenderbuffers);
-GL_IMPORT(false, PFNGLDELETERENDERBUFFERSPROC,      glDeleteRenderbuffers);
-GL_IMPORT(false, PFNGLRENDERBUFFERSTORAGEPROC,      glRenderbufferStorage);
-GL_IMPORT(false, PFNGLUNIFORM1IPROC,                glUniform1i);
-GL_IMPORT(false, PFNGLUNIFORM1IVPROC,               glUniform1iv);
-GL_IMPORT(false, PFNGLUNIFORM1FPROC,                glUniform1f);
-GL_IMPORT(false, PFNGLUNIFORM1FVPROC,               glUniform1fv);
-GL_IMPORT(false, PFNGLUNIFORM2FVPROC,               glUniform2fv);
-GL_IMPORT(false, PFNGLUNIFORM3FVPROC,               glUniform3fv);
-GL_IMPORT(false, PFNGLUNIFORM4FVPROC,               glUniform4fv);
-GL_IMPORT(false, PFNGLUNIFORMMATRIX3FVPROC,         glUniformMatrix3fv);
-GL_IMPORT(false, PFNGLUNIFORMMATRIX4FVPROC,         glUniformMatrix4fv);
-GL_IMPORT(false, PFNGLTEXIMAGE3DPROC,               glTexImage3D);
-GL_IMPORT(false, PFNGLTEXSUBIMAGE3DPROC,            glTexSubImage3D);
-GL_IMPORT(false, PFNGLCOPYTEXSUBIMAGE3DPROC,        glCopyTexSubImage3D);
+GL_IMPORT(false, PFNGLACTIVETEXTUREPROC,                  glActiveTexture);
+GL_IMPORT(false, PFNGLCOMPRESSEDTEXIMAGE2DPROC,           glCompressedTexImage2D);
+GL_IMPORT(false, PFNGLCOMPRESSEDTEXIMAGE3DPROC,           glCompressedTexImage3D);
+GL_IMPORT(false, PFNGLBINDBUFFERPROC,                     glBindBuffer);
+GL_IMPORT(false, PFNGLDELETEBUFFERSPROC,                  glDeleteBuffers);
+GL_IMPORT(false, PFNGLGENBUFFERSPROC,                     glGenBuffers);
+GL_IMPORT(false, PFNGLBUFFERDATAPROC,                     glBufferData);
+GL_IMPORT(false, PFNGLBUFFERSUBDATAPROC,                  glBufferSubData);
+GL_IMPORT(false, PFNGLCREATEPROGRAMPROC,                  glCreateProgram);
+GL_IMPORT(false, PFNGLCREATESHADERPROC,                   glCreateShader);
+GL_IMPORT(false, PFNGLDELETEPROGRAMPROC,                  glDeleteProgram);
+GL_IMPORT(false, PFNGLDELETESHADERPROC,                   glDeleteShader);
+GL_IMPORT(false, PFNGLATTACHSHADERPROC,                   glAttachShader);
+GL_IMPORT(false, PFNGLCOMPILESHADERPROC,                  glCompileShader);
+GL_IMPORT(false, PFNGLSHADERSOURCEPROC,                   glShaderSource);
+GL_IMPORT(false, PFNGLGETSHADERIVPROC,                    glGetShaderiv);
+GL_IMPORT(false, PFNGLGETSHADERINFOLOGPROC,               glGetShaderInfoLog);
+GL_IMPORT(false, PFNGLLINKPROGRAMPROC,                    glLinkProgram);
+GL_IMPORT(false, PFNGLGETPROGRAMIVPROC,                   glGetProgramiv);
+GL_IMPORT(false, PFNGLGETPROGRAMINFOLOGPROC,              glGetProgramInfoLog);
+GL_IMPORT(false, PFNGLUSEPROGRAMPROC,                     glUseProgram);
+GL_IMPORT(false, PFNGLGETACTIVEATTRIBPROC,                glGetActiveAttrib);
+GL_IMPORT(false, PFNGLGETATTRIBLOCATIONPROC,              glGetAttribLocation);
+GL_IMPORT(false, PFNGLGETACTIVEUNIFORMPROC,               glGetActiveUniform);
+GL_IMPORT(false, PFNGLGETUNIFORMLOCATIONPROC,             glGetUniformLocation);
+GL_IMPORT(false, PFNGLENABLEVERTEXATTRIBARRAYPROC,        glEnableVertexAttribArray);
+GL_IMPORT(false, PFNGLDISABLEVERTEXATTRIBARRAYPROC,       glDisableVertexAttribArray);
+GL_IMPORT(false, PFNGLVERTEXATTRIBPOINTERPROC,            glVertexAttribPointer);
+GL_IMPORT(false, PFNGLVERTEXATTRIB1FPROC,                 glVertexAttrib1f);
+GL_IMPORT(false, PFNGLVERTEXATTRIB2FPROC,                 glVertexAttrib2f);
+GL_IMPORT(false, PFNGLVERTEXATTRIB3FPROC,                 glVertexAttrib3f);
+GL_IMPORT(false, PFNGLVERTEXATTRIB4FPROC,                 glVertexAttrib4f);
+GL_IMPORT(false, PFNGLBINDFRAMEBUFFERPROC,                glBindFramebuffer);
+GL_IMPORT(false, PFNGLGENFRAMEBUFFERSPROC,                glGenFramebuffers);
+GL_IMPORT(false, PFNGLDELETEFRAMEBUFFERSPROC,             glDeleteFramebuffers);
+GL_IMPORT(false, PFNGLCHECKFRAMEBUFFERSTATUSPROC,         glCheckFramebufferStatus);
+GL_IMPORT(false, PFNGLFRAMEBUFFERRENDERBUFFERPROC,        glFramebufferRenderbuffer);
+GL_IMPORT(false, PFNGLFRAMEBUFFERTEXTURE2DPROC,           glFramebufferTexture2D);
+GL_IMPORT(false, PFNGLBINDRENDERBUFFERPROC,               glBindRenderbuffer);
+GL_IMPORT(false, PFNGLGENRENDERBUFFERSPROC,               glGenRenderbuffers);
+GL_IMPORT(false, PFNGLDELETERENDERBUFFERSPROC,            glDeleteRenderbuffers);
+GL_IMPORT(false, PFNGLRENDERBUFFERSTORAGEPROC,            glRenderbufferStorage);
+GL_IMPORT(false, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample);
+GL_IMPORT(false, PFNGLUNIFORM1IPROC,                      glUniform1i);
+GL_IMPORT(false, PFNGLUNIFORM1IVPROC,                     glUniform1iv);
+GL_IMPORT(false, PFNGLUNIFORM1FPROC,                      glUniform1f);
+GL_IMPORT(false, PFNGLUNIFORM1FVPROC,                     glUniform1fv);
+GL_IMPORT(false, PFNGLUNIFORM2FVPROC,                     glUniform2fv);
+GL_IMPORT(false, PFNGLUNIFORM3FVPROC,                     glUniform3fv);
+GL_IMPORT(false, PFNGLUNIFORM4FVPROC,                     glUniform4fv);
+GL_IMPORT(false, PFNGLUNIFORMMATRIX3FVPROC,               glUniformMatrix3fv);
+GL_IMPORT(false, PFNGLUNIFORMMATRIX4FVPROC,               glUniformMatrix4fv);
+GL_IMPORT(false, PFNGLTEXIMAGE3DPROC,                     glTexImage3D);
+GL_IMPORT(false, PFNGLTEXSUBIMAGE3DPROC,                  glTexSubImage3D);
+GL_IMPORT(false, PFNGLCOPYTEXSUBIMAGE3DPROC,              glCopyTexSubImage3D);
+GL_IMPORT(false, PFNGLTEXIMAGE2DMULTISAMPLEPROC,          glTexImage2DMultisample);
 
-GL_IMPORT(false, PFNGLGENQUERIESPROC,               glGenQueries);
-GL_IMPORT(false, PFNGLDELETEQUERIESPROC,            glDeleteQueries);
-GL_IMPORT(false, PFNGLBEGINQUERYPROC,               glBeginQuery);
-GL_IMPORT(false, PFNGLENDQUERYPROC,                 glEndQuery);
-GL_IMPORT(false, PFNGLGETQUERYIVPROC,               glGetQueryiv);
-GL_IMPORT(false, PFNGLGETQUERYOBJECTIVPROC,         glGetQueryObjectiv);
-GL_IMPORT(false, PFNGLGETQUERYOBJECTUIVPROC,        glGetQueryObjectuiv);
-
-GL_IMPORT(true,  PFNGLGETPROGRAMBINARYPROC,         glGetProgramBinary);
-GL_IMPORT(true,  PFNGLPROGRAMBINARYPROC,            glProgramBinary);
-GL_IMPORT(true,  PFNGLPROGRAMPARAMETERIPROC,        glProgramParameteri);
-
-GL_IMPORT(true,  PFNGLBLITFRAMEBUFFEREXTPROC,       glBlitFramebufferEXT);
-
-GL_IMPORT(true,  PFNGLQUERYCOUNTERPROC,             glQueryCounter);
-GL_IMPORT(true,  PFNGLGETQUERYOBJECTI64VPROC,       glGetQueryObjecti64v);
-GL_IMPORT(true,  PFNGLGETQUERYOBJECTUI64VPROC,      glGetQueryObjectui64v);
-GL_IMPORT(true,  PFNGLGETQUERYOBJECTI64VEXTPROC,    glGetQueryObjecti64vEXT);
-GL_IMPORT(true,  PFNGLGETQUERYOBJECTUI64VEXTPROC,   glGetQueryObjectui64vEXT);
-
-GL_IMPORT(true,  PFNGLSAMPLECOVERAGEARBPROC,        glSampleCoverageARB);
-
-#if BGFX_CONFIG_DEBUG_GREMEDY
-GL_IMPORT(true,  PFNGLSTRINGMARKERGREMEDYPROC,      glStringMarkerGREMEDY);
-GL_IMPORT(true,  PFNGLFRAMETERMINATORGREMEDYPROC,   glFrameTerminatorGREMEDY);
+GL_IMPORT(false, PFNGLGENQUERIESPROC,                     glGenQueries);
+GL_IMPORT(false, PFNGLDELETEQUERIESPROC,                  glDeleteQueries);
+GL_IMPORT(false, PFNGLBEGINQUERYPROC,                     glBeginQuery);
+GL_IMPORT(false, PFNGLENDQUERYPROC,                       glEndQuery);
+GL_IMPORT(false, PFNGLGETQUERYIVPROC,                     glGetQueryiv);
+GL_IMPORT(false, PFNGLGETQUERYOBJECTIVPROC,               glGetQueryObjectiv);
+GL_IMPORT(false, PFNGLGETQUERYOBJECTUIVPROC,              glGetQueryObjectuiv);
+													
+GL_IMPORT(true,  PFNGLGETPROGRAMBINARYPROC,               glGetProgramBinary);
+GL_IMPORT(true,  PFNGLPROGRAMBINARYPROC,                  glProgramBinary);
+GL_IMPORT(true,  PFNGLPROGRAMPARAMETERIPROC,              glProgramParameteri);
+													
+GL_IMPORT(true,  PFNGLBLITFRAMEBUFFEREXTPROC,             glBlitFramebufferEXT);
+													
+GL_IMPORT(true,  PFNGLQUERYCOUNTERPROC,                   glQueryCounter);
+GL_IMPORT(true,  PFNGLGETQUERYOBJECTI64VPROC,             glGetQueryObjecti64v);
+GL_IMPORT(true,  PFNGLGETQUERYOBJECTUI64VPROC,            glGetQueryObjectui64v);
+GL_IMPORT(true,  PFNGLGETQUERYOBJECTI64VEXTPROC,          glGetQueryObjecti64vEXT);
+GL_IMPORT(true,  PFNGLGETQUERYOBJECTUI64VEXTPROC,         glGetQueryObjectui64vEXT);
+													
+GL_IMPORT(true,  PFNGLSAMPLECOVERAGEARBPROC,              glSampleCoverageARB);
+													
+#if BGFX_CONFIG_DEBUG_GREMEDY						
+GL_IMPORT(true,  PFNGLSTRINGMARKERGREMEDYPROC,            glStringMarkerGREMEDY);
+GL_IMPORT(true,  PFNGLFRAMETERMINATORGREMEDYPROC,         glFrameTerminatorGREMEDY);
 #endif // BGFX_CONFIG_DEBUG_GREMEDY
 
 #else

+ 21 - 4
src/renderer_gl.cpp

@@ -20,6 +20,7 @@ namespace bgfx
 	PFNWGLGETPROCADDRESSPROC wglGetProcAddress;
 	PFNWGLMAKECURRENTPROC wglMakeCurrent;
 	PFNWGLCREATECONTEXTPROC wglCreateContext;
+	PFNWGLDELETECONTEXTPROC wglDeleteContext;
 #endif // BX_PLATFORM_WINDOWS
 
 #define GL_IMPORT(_optional, _proto, _func) _proto _func
@@ -132,6 +133,9 @@ namespace bgfx
 					wglCreateContext = (PFNWGLCREATECONTEXTPROC)GetProcAddress(m_opengl32dll, "wglCreateContext");
 					BGFX_FATAL(NULL != wglCreateContext, bgfx::Fatal::OPENGL_UnableToCreateContext, "Failed get wglCreateContext.");
 
+					wglDeleteContext = (PFNWGLDELETECONTEXTPROC)GetProcAddress(m_opengl32dll, "wglDeleteContext");
+					BGFX_FATAL(NULL != wglDeleteContext, bgfx::Fatal::OPENGL_UnableToCreateContext, "Failed get wglDeleteContext.");
+
 					m_hdc = GetDC(g_bgfxHwnd);
 					BGFX_FATAL(NULL != m_hdc, bgfx::Fatal::OPENGL_UnableToCreateContext, "GetDC failed!");
 
@@ -347,6 +351,12 @@ namespace bgfx
 		void shutdown()
 		{
 #if BX_PLATFORM_WINDOWS
+			if (NULL != m_hdc)
+			{
+				wglMakeCurrent(NULL, NULL);
+				wglDeleteContext(m_context);
+			}
+
 			FreeLibrary(m_opengl32dll);
 #endif // BX_PLATFORM_WINDOWS
 		}
@@ -1288,6 +1298,7 @@ namespace bgfx
 		m_width = _width;
 		m_height = _height;
 
+//		m_msaa = s_msaa[(m_flags&BGFX_RENDER_TARGET_MSAA_MASK)>>BGFX_RENDER_TARGET_MSAA_SHIFT];
 		uint32_t colorFormat = (_flags&BGFX_RENDER_TARGET_COLOR_MASK)>>BGFX_RENDER_TARGET_COLOR_SHIFT;
 		uint32_t depthFormat = (_flags&BGFX_RENDER_TARGET_DEPTH_MASK)>>BGFX_RENDER_TARGET_DEPTH_SHIFT;
 
@@ -1311,7 +1322,7 @@ namespace bgfx
 		{
 			GL_CHECK(glFramebufferTexture2D(GL_FRAMEBUFFER
 							, GL_COLOR_ATTACHMENT0
-							, GL_TEXTURE_2D
+							, m_color.m_target
 							, m_color.m_id
 							, 0
 							) );
@@ -1343,7 +1354,7 @@ namespace bgfx
 			{
 				GL_CHECK(glFramebufferTexture2D(GL_FRAMEBUFFER
 					, GL_DEPTH_ATTACHMENT
-					, GL_TEXTURE_2D
+					, m_depth.m_target
 					, m_depth.m_id
 					, 0
 					) );
@@ -2157,11 +2168,17 @@ namespace bgfx
 											break;
 
 										case BGFX_SAMPLER_RENDERTARGET_COLOR:
-											GL_CHECK(glBindTexture(GL_TEXTURE_2D, s_renderCtx.m_renderTargets[sampler.m_idx].m_color.m_id) );
+											{
+												const RenderTarget& rt = s_renderCtx.m_renderTargets[sampler.m_idx];
+												GL_CHECK(glBindTexture(rt.m_color.m_target, rt.m_color.m_id) );
+											}
 											break;
 
 										case BGFX_SAMPLER_RENDERTARGET_DEPTH:
-											GL_CHECK(glBindTexture(GL_TEXTURE_2D, s_renderCtx.m_renderTargets[sampler.m_idx].m_depth.m_id) );
+											{
+												const RenderTarget& rt = s_renderCtx.m_renderTargets[sampler.m_idx];
+												GL_CHECK(glBindTexture(rt.m_depth.m_target, rt.m_depth.m_id) );
+											}
 											break;
 										}
 									}

+ 3 - 2
src/renderer_gl.h

@@ -65,8 +65,9 @@ typedef void (*PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC)(GLuint shader, GLsizei b
 
 #if BX_PLATFORM_WINDOWS
 typedef PROC (APIENTRYP PFNWGLGETPROCADDRESSPROC) (LPCSTR lpszProc);
-typedef BOOL (APIENTRYP PFNWGLMAKECURRENTPROC) (HDC hDc, HGLRC newContext);
-typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXTPROC) (HDC hDc);
+typedef BOOL (APIENTRYP PFNWGLMAKECURRENTPROC) (HDC hdc, HGLRC hglrc);
+typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXTPROC) (HDC hdc);
+typedef BOOL (APIENTRYP PFNWGLDELETECONTEXTPROC) (HGLRC hglrc);
 //
 typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
 typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);