| OLD | NEW |
| 1 /* | 1 /* |
| 2 ** The OpenGL Extension Wrangler Library | 2 ** The OpenGL Extension Wrangler Library |
| 3 ** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> | 3 ** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> |
| 4 ** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> | 4 ** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> |
| 5 ** Copyright (C) 2002, Lev Povalahev | 5 ** Copyright (C) 2002, Lev Povalahev |
| 6 ** All rights reserved. | 6 ** All rights reserved. |
| 7 ** | 7 ** |
| 8 ** Redistribution and use in source and binary forms, with or without | 8 ** Redistribution and use in source and binary forms, with or without |
| 9 ** modification, are permitted provided that the following conditions are met: | 9 ** modification, are permitted provided that the following conditions are met: |
| 10 ** | 10 ** |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 # define GLEW_CONTEXT_ARG_DEF_LIST void | 65 # define GLEW_CONTEXT_ARG_DEF_LIST void |
| 66 # define WGLEW_CONTEXT_ARG_DEF_INIT void | 66 # define WGLEW_CONTEXT_ARG_DEF_INIT void |
| 67 # define WGLEW_CONTEXT_ARG_DEF_LIST void | 67 # define WGLEW_CONTEXT_ARG_DEF_LIST void |
| 68 # define GLXEW_CONTEXT_ARG_DEF_INIT void | 68 # define GLXEW_CONTEXT_ARG_DEF_INIT void |
| 69 # define GLXEW_CONTEXT_ARG_DEF_LIST void | 69 # define GLXEW_CONTEXT_ARG_DEF_LIST void |
| 70 # define GLXEW_CONTEXT_ARG_DEF_DPY_LIST Display* dpy | 70 # define GLXEW_CONTEXT_ARG_DEF_DPY_LIST Display* dpy |
| 71 # define GLXEW_CONTEXT_ARG_DEF_DPY_INIT | 71 # define GLXEW_CONTEXT_ARG_DEF_DPY_INIT |
| 72 #endif /* GLEW_MX */ | 72 #endif /* GLEW_MX */ |
| 73 | 73 |
| 74 #ifdef _WIN32 | 74 #ifdef _WIN32 |
| 75 |
| 76 #ifndef GLEW_MX |
| 77 void* WinGetProcAddress(const GLubyte* name); |
| 78 |
| 79 GLboolean wglewInit() |
| 80 { |
| 81 GLboolean r = GL_FALSE; |
| 82 |
| 83 r = ((wglewCopyContext = (PFNWGLCOPYCONTEXTPROC)WinGetProcAddress((const GLuby
te*)"wglCopyContext")) == NULL) || r; |
| 84 r = ((wglewCreateContext = (PFNWGLCREATECONTEXTPROC)WinGetProcAddress((const G
Lubyte*)"wglCreateContext")) == NULL) || r; |
| 85 r = ((wglewCreateLayerContext = (PFNWGLCREATELAYERCONTEXTPROC)WinGetProcAddres
s((const GLubyte*)"wglCreateLayerContext")) == NULL) || r; |
| 86 r = ((wglewDeleteContext = (PFNWGLDELETECONTEXTPROC)WinGetProcAddress((const G
Lubyte*)"wglDeleteContext")) == NULL) || r; |
| 87 r = ((wglewGetCurrentContext = (PFNWGLGETCURRENTCONTEXTPROC)WinGetProcAddress(
(const GLubyte*)"wglGetCurrentContext")) == NULL) || r; |
| 88 r = ((wglewGetCurrentDC = (PFNWGLGETCURRENTDCPROC)WinGetProcAddress((const GLu
byte*)"wglGetCurrentDC")) == NULL) || r; |
| 89 r = ((wglewGetProcAddress = (PFNWGLGETPROCADDRESSPROC)WinGetProcAddress((const
GLubyte*)"wglGetProcAddress")) == NULL) || r; |
| 90 r = ((wglewMakeCurrent = (PFNWGLMAKECURRENTPROC)WinGetProcAddress((const GLuby
te*)"wglMakeCurrent")) == NULL) || r; |
| 91 r = ((wglewShareLists = (PFNWGLSHARELISTSPROC)WinGetProcAddress((const GLubyte
*)"wglShareLists")) == NULL) || r; |
| 92 r = ((wglewSwapBuffers = (PFNSWAPBUFFERSPROC)WinGetProcAddress((const GLubyte*
)"SwapBuffers")) == NULL) || r; |
| 93 |
| 94 return !r; |
| 95 } |
| 96 #endif /* !GLEW_MX */ |
| 97 |
| 75 void* WinGetProcAddress(const GLubyte* name) | 98 void* WinGetProcAddress(const GLubyte* name) |
| 76 { | 99 { |
| 77 /* Need to use GetProcAddress to bootstrap things now that we are | 100 /* Need to use GetProcAddress to bootstrap things now that we are |
| 78 dynamically looking up OpenGL 1.1 entry points as well. */ | 101 dynamically looking up OpenGL 1.1 entry points as well. */ |
| 79 static HMODULE oglImage = NULL; | 102 static HMODULE oglImage = NULL; |
| 103 static HMODULE gdi32Image = NULL; // For SwapBuffers. |
| 80 static PFNOSMESAGETPROCADDRESSPROC osmesaGetProcAddress = NULL; | 104 static PFNOSMESAGETPROCADDRESSPROC osmesaGetProcAddress = NULL; |
| 81 void* proc = NULL; | 105 void* proc = NULL; |
| 82 | 106 |
| 83 if (NULL == oglImage) { | 107 if (NULL == oglImage) { |
| 84 oglImage = LoadLibraryA("osmesa.dll"); | 108 oglImage = LoadLibraryA("osmesa.dll"); |
| 85 if (NULL == oglImage) { | 109 if (NULL == oglImage) { |
| 86 oglImage = LoadLibraryA("opengl32.dll"); | 110 oglImage = LoadLibraryA("opengl32.dll"); |
| 111 #ifndef GLEW_MX |
| 112 if (NULL != oglImage) { |
| 113 gdi32Image = LoadLibraryA("gdi32.dll"); |
| 114 wglewInit(); |
| 115 } |
| 116 #endif /* !GLEW_MX */ |
| 87 } | 117 } |
| 88 else { | 118 else { |
| 89 osmesaGetProcAddress = (PFNOSMESAGETPROCADDRESSPROC) GetProcAddress(oglIma
ge, "OSMesaGetProcAddress"); | 119 osmesaGetProcAddress = (PFNOSMESAGETPROCADDRESSPROC) GetProcAddress(oglIma
ge, "OSMesaGetProcAddress"); |
| 90 } | 120 } |
| 91 } | 121 } |
| 92 if (NULL != oglImage) { | 122 if (NULL != oglImage) { |
| 93 proc = (void*) GetProcAddress(oglImage, (LPCSTR) name); | 123 proc = (void*) GetProcAddress(oglImage, (LPCSTR) name); |
| 124 #ifndef GLEW_MX |
| 125 if (NULL == proc) { |
| 126 proc = (void*) GetProcAddress(gdi32Image, (LPCSTR) name); |
| 127 } |
| 128 #endif |
| 94 } | 129 } |
| 95 if (NULL == proc) { | 130 if (NULL == proc) { |
| 96 if (osmesaGetProcAddress) { | 131 if (osmesaGetProcAddress) { |
| 97 proc = osmesaGetProcAddress(name); | 132 proc = osmesaGetProcAddress(name); |
| 98 } | 133 } |
| 134 #ifdef GLEW_MX |
| 99 else { | 135 else { |
| 100 proc = wglGetProcAddress((LPCSTR) name); | 136 proc = wglGetProcAddress((LPCSTR) name); |
| 101 } | 137 } |
| 138 #else |
| 139 else if (wglewGetProcAddress) { |
| 140 proc = wglewGetProcAddress((LPCSTR) name); |
| 141 } |
| 142 #endif |
| 102 } | 143 } |
| 103 return proc; | 144 return proc; |
| 104 } | 145 } |
| 105 | 146 |
| 106 #endif /* _WIN32 */ | 147 #endif /* _WIN32 */ |
| 107 | 148 |
| 108 #if defined(__APPLE__) | 149 #if defined(__APPLE__) |
| 109 #include <dlfcn.h> | 150 #include <dlfcn.h> |
| 110 #include <stdlib.h> | 151 #include <stdlib.h> |
| 111 #include <string.h> | 152 #include <string.h> |
| (...skipping 7958 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8070 #endif /* GL_WIN_swap_hint */ | 8111 #endif /* GL_WIN_swap_hint */ |
| 8071 | 8112 |
| 8072 return GLEW_OK; | 8113 return GLEW_OK; |
| 8073 } | 8114 } |
| 8074 | 8115 |
| 8075 | 8116 |
| 8076 #if defined(_WIN32) | 8117 #if defined(_WIN32) |
| 8077 | 8118 |
| 8078 #if !defined(GLEW_MX) | 8119 #if !defined(GLEW_MX) |
| 8079 | 8120 |
| 8121 PFNWGLCOPYCONTEXTPROC __wglewCopyContext = NULL; |
| 8122 PFNWGLCREATECONTEXTPROC __wglewCreateContext = NULL; |
| 8123 PFNWGLCREATELAYERCONTEXTPROC __wglewCreateLayerContext = NULL; |
| 8124 PFNWGLDELETECONTEXTPROC __wglewDeleteContext = NULL; |
| 8125 PFNWGLGETCURRENTCONTEXTPROC __wglewGetCurrentContext = NULL; |
| 8126 PFNWGLGETCURRENTDCPROC __wglewGetCurrentDC = NULL; |
| 8127 PFNWGLGETPROCADDRESSPROC __wglewGetProcAddress = NULL; |
| 8128 PFNWGLMAKECURRENTPROC __wglewMakeCurrent = NULL; |
| 8129 PFNWGLSHARELISTSPROC __wglewShareLists = NULL; |
| 8130 PFNSWAPBUFFERSPROC __wglewSwapBuffers = NULL; |
| 8131 |
| 8080 PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL = NULL; | 8132 PFNWGLSETSTEREOEMITTERSTATE3DLPROC __wglewSetStereoEmitterState3DL = NULL; |
| 8081 | 8133 |
| 8082 PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB = NULL; | 8134 PFNWGLCREATEBUFFERREGIONARBPROC __wglewCreateBufferRegionARB = NULL; |
| 8083 PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB = NULL; | 8135 PFNWGLDELETEBUFFERREGIONARBPROC __wglewDeleteBufferRegionARB = NULL; |
| 8084 PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB = NULL; | 8136 PFNWGLRESTOREBUFFERREGIONARBPROC __wglewRestoreBufferRegionARB = NULL; |
| 8085 PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB = NULL; | 8137 PFNWGLSAVEBUFFERREGIONARBPROC __wglewSaveBufferRegionARB = NULL; |
| 8086 | 8138 |
| 8087 PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB = NULL; | 8139 PFNWGLCREATECONTEXTATTRIBSARBPROC __wglewCreateContextAttribsARB = NULL; |
| 8088 | 8140 |
| 8089 PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB = NULL; | 8141 PFNWGLGETEXTENSIONSSTRINGARBPROC __wglewGetExtensionsStringARB = NULL; |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8707 { | 8759 { |
| 8708 GLubyte* p; | 8760 GLubyte* p; |
| 8709 GLubyte* end; | 8761 GLubyte* end; |
| 8710 GLuint len = _glewStrLen((const GLubyte*)name); | 8762 GLuint len = _glewStrLen((const GLubyte*)name); |
| 8711 if (_wglewGetExtensionsStringARB == NULL) | 8763 if (_wglewGetExtensionsStringARB == NULL) |
| 8712 if (_wglewGetExtensionsStringEXT == NULL) | 8764 if (_wglewGetExtensionsStringEXT == NULL) |
| 8713 return GL_FALSE; | 8765 return GL_FALSE; |
| 8714 else | 8766 else |
| 8715 p = (GLubyte*)_wglewGetExtensionsStringEXT(); | 8767 p = (GLubyte*)_wglewGetExtensionsStringEXT(); |
| 8716 else | 8768 else |
| 8717 p = (GLubyte*)_wglewGetExtensionsStringARB(wglGetCurrentDC()); | 8769 p = (GLubyte*)_wglewGetExtensionsStringARB(wglewGetCurrentDC()); |
| 8718 if (0 == p) return GL_FALSE; | 8770 if (0 == p) return GL_FALSE; |
| 8719 end = p + _glewStrLen(p); | 8771 end = p + _glewStrLen(p); |
| 8720 while (p < end) | 8772 while (p < end) |
| 8721 { | 8773 { |
| 8722 GLuint n = _glewStrCLen(p, ' '); | 8774 GLuint n = _glewStrCLen(p, ' '); |
| 8723 if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; | 8775 if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; |
| 8724 p += n+1; | 8776 p += n+1; |
| 8725 } | 8777 } |
| 8726 return GL_FALSE; | 8778 return GL_FALSE; |
| 8727 } | 8779 } |
| (...skipping 4278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13006 } | 13058 } |
| 13007 #endif | 13059 #endif |
| 13008 } | 13060 } |
| 13009 } | 13061 } |
| 13010 ret = (len == 0); | 13062 ret = (len == 0); |
| 13011 } | 13063 } |
| 13012 return ret; | 13064 return ret; |
| 13013 } | 13065 } |
| 13014 | 13066 |
| 13015 #endif /* _WIN32 */ | 13067 #endif /* _WIN32 */ |
| OLD | NEW |