diff options
Diffstat (limited to 'linden/indra/llwindow')
35 files changed, 2297 insertions, 4988 deletions
diff --git a/linden/indra/llwindow/CMakeLists.txt b/linden/indra/llwindow/CMakeLists.txt new file mode 100644 index 0000000..95e315f --- /dev/null +++ b/linden/indra/llwindow/CMakeLists.txt | |||
@@ -0,0 +1,147 @@ | |||
1 | # -*- cmake -*- | ||
2 | # | ||
3 | # Compared to other libraries, compiling this one is a mess. The | ||
4 | # reason is that we have several source files that have two different | ||
5 | # sets of behaviour, depending on whether they're intended to be part | ||
6 | # of the viewer or the map server. | ||
7 | # | ||
8 | # Unfortunately, the affected code is a rat's nest of #ifdefs, so it's | ||
9 | # easier to play compilation tricks than to actually fix the problem. | ||
10 | |||
11 | project(llwindow) | ||
12 | |||
13 | include(00-Common) | ||
14 | include(DirectX) | ||
15 | include(LLCommon) | ||
16 | include(LLImage) | ||
17 | include(LLMath) | ||
18 | include(LLRender) | ||
19 | include(LLVFS) | ||
20 | include(LLWindow) | ||
21 | include(LLXML) | ||
22 | include(Mozlib) | ||
23 | include(UI) | ||
24 | |||
25 | include_directories( | ||
26 | ${LLCOMMON_INCLUDE_DIRS} | ||
27 | ${LLIMAGE_INCLUDE_DIRS} | ||
28 | ${LLMATH_INCLUDE_DIRS} | ||
29 | ${LLRENDER_INCLUDE_DIRS} | ||
30 | ${LLVFS_INCLUDE_DIRS} | ||
31 | ${LLWINDOW_INCLUDE_DIRS} | ||
32 | ${LLXML_INCLUDE_DIRS} | ||
33 | ) | ||
34 | |||
35 | set(llwindow_SOURCE_FILES | ||
36 | llkeyboard.cpp | ||
37 | llwindowheadless.cpp | ||
38 | ) | ||
39 | |||
40 | set(llwindows_HEADER_FILES | ||
41 | CMakeLists.txt | ||
42 | |||
43 | llkeyboard.h | ||
44 | llwindowheadless.h | ||
45 | ) | ||
46 | |||
47 | set(viewer_SOURCE_FILES | ||
48 | llwindow.cpp | ||
49 | ) | ||
50 | |||
51 | set(viewer_HEADER_FILES | ||
52 | llwindow.h | ||
53 | llpreeditor.h | ||
54 | llmousehandler.h | ||
55 | ) | ||
56 | |||
57 | if (DARWIN) | ||
58 | list(APPEND llwindow_SOURCE_FILES | ||
59 | llkeyboardmacosx.cpp | ||
60 | llwindowmacosx.cpp | ||
61 | llwindowmacosx-objc.mm | ||
62 | ) | ||
63 | list(APPEND llwindow_HEADER_FILES | ||
64 | llkeyboardmacosx.h | ||
65 | llwindowmacosx.h | ||
66 | llwindowmacosx-objc.h | ||
67 | ) | ||
68 | |||
69 | # We use a bunch of deprecated system APIs. | ||
70 | set_source_files_properties( | ||
71 | llkeyboardmacosx.cpp | ||
72 | llwindowmacosx.cpp | ||
73 | PROPERTIES | ||
74 | COMPILE_FLAGS "-Wno-deprecated-declarations -fpascal-strings" | ||
75 | ) | ||
76 | endif (DARWIN) | ||
77 | |||
78 | if (LINUX) | ||
79 | list(APPEND viewer_SOURCE_FILES | ||
80 | llkeyboardsdl.cpp | ||
81 | llwindowsdl.cpp | ||
82 | ) | ||
83 | list(APPEND viewer_HEADER_FILES | ||
84 | llkeyboardsdl.h | ||
85 | llwindowsdl.h | ||
86 | ) | ||
87 | endif (LINUX) | ||
88 | |||
89 | if (WINDOWS) | ||
90 | list(APPEND llwindow_SOURCE_FILES | ||
91 | llwindowwin32.cpp | ||
92 | lldxhardware.cpp | ||
93 | llkeyboardwin32.cpp | ||
94 | ) | ||
95 | list(APPEND llwindow_HEADER_FILES | ||
96 | llwindowwin32.h | ||
97 | lldxhardware.h | ||
98 | llkeyboardwin32.h | ||
99 | ) | ||
100 | endif (WINDOWS) | ||
101 | |||
102 | if (SOLARIS) | ||
103 | list(APPEND llwindow_SOURCE_FILES | ||
104 | llwindowsolaris.cpp | ||
105 | ) | ||
106 | list(APPEND llwindow_HEADER_FILES | ||
107 | llwindowsolaris.h | ||
108 | ) | ||
109 | endif (SOLARIS) | ||
110 | |||
111 | set_source_files_properties(${llwindow_HEADER_FILES} | ||
112 | PROPERTIES HEADER_FILE_ONLY TRUE) | ||
113 | |||
114 | if (SERVER AND NOT WINDOWS AND NOT DARWIN) | ||
115 | set(server_SOURCE_FILES | ||
116 | llwindowmesaheadless.cpp | ||
117 | ) | ||
118 | set(server_HEADER_FILES | ||
119 | llwindowmesaheadless.h | ||
120 | ) | ||
121 | copy_server_sources( | ||
122 | llwindow | ||
123 | ) | ||
124 | |||
125 | |||
126 | set_source_files_properties( | ||
127 | ${server_SOURCE_FILES} | ||
128 | PROPERTIES | ||
129 | COMPILE_FLAGS "-DLL_MESA=1 -DLL_MESA_HEADLESS=1" | ||
130 | ) | ||
131 | add_library (llwindowheadless | ||
132 | ${llwindow_SOURCE_FILES} | ||
133 | ${server_SOURCE_FILES} | ||
134 | ) | ||
135 | endif (SERVER AND NOT WINDOWS AND NOT DARWIN) | ||
136 | |||
137 | if (llwindow_HEADER_FILES) | ||
138 | list(APPEND llwindow_SOURCE_FILES ${llwindow_HEADER_FILES}) | ||
139 | endif (llwindow_HEADER_FILES) | ||
140 | list(APPEND viewer_SOURCE_FILES ${viewer_HEADER_FILES}) | ||
141 | |||
142 | if (VIEWER) | ||
143 | add_library (llwindow | ||
144 | ${llwindow_SOURCE_FILES} | ||
145 | ${viewer_SOURCE_FILES} | ||
146 | ) | ||
147 | endif (VIEWER) | ||
diff --git a/linden/indra/llwindow/GL/glh_extensions.h b/linden/indra/llwindow/GL/glh_extensions.h new file mode 100644 index 0000000..b936b5d --- /dev/null +++ b/linden/indra/llwindow/GL/glh_extensions.h | |||
@@ -0,0 +1,207 @@ | |||
1 | /* | ||
2 | * glh_extensions.h | ||
3 | * From nVidia Corporation, downloaded 2006-12-18 from: | ||
4 | * http://developer.nvidia.com/attach/8196 | ||
5 | * ("NVParse Library with Source (.zip) (2390 KB)") | ||
6 | * | ||
7 | * License (quoted from license_info.txt in aforementioned file): | ||
8 | * "The files bison.exe, bison.simple, and flex.exe are covered by | ||
9 | * the GPL. All other files in this distribution can be used however | ||
10 | * you want." | ||
11 | */ | ||
12 | |||
13 | #ifndef GLH_EXTENSIONS | ||
14 | #define GLH_EXTENSIONS | ||
15 | |||
16 | #include <string.h> | ||
17 | #include <stdio.h> | ||
18 | |||
19 | #ifdef _WIN32 | ||
20 | # include <windows.h> | ||
21 | #endif | ||
22 | |||
23 | #ifndef __APPLE__ | ||
24 | #include <GL/gl.h> | ||
25 | #endif | ||
26 | |||
27 | #ifdef _WIN32 | ||
28 | # include "GL/wglext.h" | ||
29 | #endif | ||
30 | |||
31 | #define CHECK_MEMORY(ptr) \ | ||
32 | if (NULL == ptr) { \ | ||
33 | printf("Error allocating memory in file %s, line %d\n", __FILE__, __LINE__); \ | ||
34 | exit(-1); \ | ||
35 | } | ||
36 | |||
37 | #ifdef GLH_EXT_SINGLE_FILE | ||
38 | # define GLH_EXTENSIONS_SINGLE_FILE // have to do this because glh_genext.h unsets GLH_EXT_SINGLE_FILE | ||
39 | #endif | ||
40 | |||
41 | #include "glh_genext.h" | ||
42 | |||
43 | #ifdef __cplusplus | ||
44 | extern "C" { | ||
45 | #endif | ||
46 | |||
47 | #ifdef GLH_EXTENSIONS_SINGLE_FILE | ||
48 | |||
49 | class GLHExts | ||
50 | { | ||
51 | public: | ||
52 | GLHExts() | ||
53 | { | ||
54 | mSysExts = NULL; | ||
55 | // mUnsupportedExts = NULL; | ||
56 | } | ||
57 | ~GLHExts() | ||
58 | { | ||
59 | if (mSysExts) | ||
60 | { | ||
61 | free(mSysExts); | ||
62 | } | ||
63 | // if (mUnsupportedExts) | ||
64 | // { | ||
65 | // free(mUnsupportedExts); | ||
66 | // } | ||
67 | } | ||
68 | char *mSysExts; | ||
69 | // char *mUnsupportedExts; | ||
70 | }; | ||
71 | |||
72 | GLHExts gGLHExts; | ||
73 | |||
74 | static int ExtensionExists(const char* extName, const char* sysExts) | ||
75 | { | ||
76 | char *padExtName = (char*)malloc(strlen(extName) + 2); | ||
77 | strcat(strcpy(padExtName, extName), " "); | ||
78 | |||
79 | if (0 == strcmp(extName, "GL_VERSION_1_2")) { | ||
80 | const char *version = (const char*)glGetString(GL_VERSION); | ||
81 | if (strstr(version, "1.0") == version || strstr(version, "1.1") == version) { | ||
82 | return FALSE; | ||
83 | } else { | ||
84 | return TRUE; | ||
85 | } | ||
86 | } | ||
87 | if (strstr(sysExts, padExtName)) { | ||
88 | free(padExtName); | ||
89 | return TRUE; | ||
90 | } else { | ||
91 | free(padExtName); | ||
92 | return FALSE; | ||
93 | } | ||
94 | } | ||
95 | |||
96 | static const char* EatWhiteSpace(const char *str) | ||
97 | { | ||
98 | for (; *str && (' ' == *str || '\t' == *str || '\n' == *str); str++); | ||
99 | return str; | ||
100 | } | ||
101 | |||
102 | static const char* EatNonWhiteSpace(const char *str) | ||
103 | { | ||
104 | for (; *str && (' ' != *str && '\t' != *str && '\n' != *str); str++); | ||
105 | return str; | ||
106 | } | ||
107 | |||
108 | |||
109 | int glh_init_extensions(const char *origReqExts) | ||
110 | { | ||
111 | // Length of requested extensions string | ||
112 | unsigned reqExtsLen; | ||
113 | char *reqExts; | ||
114 | // Ptr for individual extensions within reqExts | ||
115 | char *reqExt; | ||
116 | int success = TRUE; | ||
117 | |||
118 | // build space-padded extension string | ||
119 | if (NULL == gGLHExts.mSysExts) { | ||
120 | const char *extensions = (const char*)glGetString(GL_EXTENSIONS); | ||
121 | int sysExtsLen = (int)strlen(extensions); | ||
122 | const char *winsys_extensions = 0; | ||
123 | int winsysExtsLen = 0; | ||
124 | #ifdef _WIN32 | ||
125 | { | ||
126 | PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = 0; | ||
127 | wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB"); | ||
128 | if(wglGetExtensionsStringARB) | ||
129 | { | ||
130 | winsys_extensions = wglGetExtensionsStringARB(wglGetCurrentDC()); | ||
131 | winsysExtsLen = (S32)strlen(winsys_extensions); | ||
132 | } | ||
133 | } | ||
134 | #endif | ||
135 | // Add 2 bytes, one for padding space, one for terminating NULL | ||
136 | gGLHExts.mSysExts = (char*)malloc(sysExtsLen + winsysExtsLen + 3); | ||
137 | CHECK_MEMORY(gGLHExts.mSysExts); | ||
138 | strcpy(gGLHExts.mSysExts, extensions); | ||
139 | gGLHExts.mSysExts[sysExtsLen] = ' '; | ||
140 | gGLHExts.mSysExts[sysExtsLen + 1] = 0; | ||
141 | if (winsysExtsLen) | ||
142 | { | ||
143 | strcat(gGLHExts.mSysExts, winsys_extensions); | ||
144 | } | ||
145 | gGLHExts.mSysExts[sysExtsLen + 1 + winsysExtsLen] = ' '; | ||
146 | gGLHExts.mSysExts[sysExtsLen + 1 + winsysExtsLen + 1] = 0; | ||
147 | } | ||
148 | |||
149 | if (NULL == origReqExts) | ||
150 | { | ||
151 | return TRUE; | ||
152 | } | ||
153 | reqExts = strdup(origReqExts); | ||
154 | reqExtsLen = (S32)strlen(reqExts); | ||
155 | /* | ||
156 | if (NULL == gGLHExts.mUnsupportedExts) | ||
157 | { | ||
158 | gGLHExts.mUnsupportedExts = (char*)malloc(reqExtsLen + 1); | ||
159 | } | ||
160 | else if (reqExtsLen > strlen(gGLHExts.mUnsupportedExts)) | ||
161 | { | ||
162 | gGLHExts.mUnsupportedExts = (char*)realloc(gGLHExts.mUnsupportedExts, reqExtsLen + 1); | ||
163 | } | ||
164 | CHECK_MEMORY(gGLHExts.mUnsupportedExts); | ||
165 | *gGLHExts.mUnsupportedExts = 0; | ||
166 | */ | ||
167 | |||
168 | // Parse requested extension list | ||
169 | for (reqExt = reqExts; | ||
170 | (reqExt = (char*)EatWhiteSpace(reqExt)) && *reqExt; | ||
171 | reqExt = (char*)EatNonWhiteSpace(reqExt)) | ||
172 | { | ||
173 | char *extEnd = (char*)EatNonWhiteSpace(reqExt); | ||
174 | char saveChar = *extEnd; | ||
175 | *extEnd = (char)0; | ||
176 | |||
177 | if (!ExtensionExists(reqExt, gGLHExts.mSysExts) || | ||
178 | !glh_init_extension(reqExt)) { | ||
179 | /* | ||
180 | // add reqExt to end of unsupportedExts | ||
181 | strcat(gGLHExts.mUnsupportedExts, reqExt); | ||
182 | strcat(gGLHExts.mUnsupportedExts, " "); | ||
183 | */ | ||
184 | success = FALSE; | ||
185 | } | ||
186 | *extEnd = saveChar; | ||
187 | } | ||
188 | free(reqExts); | ||
189 | return success; | ||
190 | } | ||
191 | |||
192 | const char* glh_get_unsupported_extensions() | ||
193 | { | ||
194 | return ""; | ||
195 | // return (const char*)gGLHExts.mUnsupportedExts; | ||
196 | } | ||
197 | |||
198 | #else | ||
199 | int glh_init_extensions(const char *origReqExts); | ||
200 | const char* glh_get_unsupported_extensions(); | ||
201 | #endif /* GLH_EXT_SINGLE_FILE */ | ||
202 | |||
203 | #ifdef __cplusplus | ||
204 | } | ||
205 | #endif | ||
206 | |||
207 | #endif /* GLH_EXTENSIONS */ | ||
diff --git a/linden/indra/llwindow/GL/glh_genext.h b/linden/indra/llwindow/GL/glh_genext.h new file mode 100644 index 0000000..8d42025 --- /dev/null +++ b/linden/indra/llwindow/GL/glh_genext.h | |||
@@ -0,0 +1,1671 @@ | |||
1 | /* | ||
2 | * glh_genext.h | ||
3 | * From nVidia Corporation, downloaded 2006-12-18 from: | ||
4 | * http://developer.nvidia.com/attach/8196 | ||
5 | * ("NVParse Library with Source (.zip) (2390 KB)") | ||
6 | * | ||
7 | * License (quoted from license_info.txt in aforementioned file): | ||
8 | * "The files bison.exe, bison.simple, and flex.exe are covered by | ||
9 | * the GPL. All other files in this distribution can be used however | ||
10 | * you want." | ||
11 | */ | ||
12 | |||
13 | /* File generated by extgen.cpp -- do not modify */ | ||
14 | #ifndef GLH_GENEXT_H | ||
15 | #define GLH_GENEXT_H | ||
16 | |||
17 | // MBW -- None of this is necessary on Mac OS. | ||
18 | #ifndef __APPLE__ | ||
19 | |||
20 | #include <GL/gl.h> | ||
21 | #include <GL/glext.h> | ||
22 | |||
23 | #ifdef _WIN32 /* supports windows, x -- need to generalize */ | ||
24 | # include <GL/wglext.h> | ||
25 | # define GLH_EXT_GET_PROC_ADDRESS(p) wglGetProcAddress(p) | ||
26 | #else if GLX_VERSION_1_3 | ||
27 | # include <GL/glxext.h> | ||
28 | # define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB(p) | ||
29 | #endif | ||
30 | |||
31 | #ifdef GLH_EXT_SINGLE_FILE | ||
32 | #define GLH_EXTERN | ||
33 | #define GLH_INITIALIZER = 0 | ||
34 | #else | ||
35 | #define GLH_EXTERN extern | ||
36 | #define GLH_INITIALIZER | ||
37 | #endif | ||
38 | |||
39 | #define GLH__PREPROCESSOR_GYMNASTICS2(a,b) a##b | ||
40 | #define GLH__PREPROCESSOR_GYMNASTICS(a,b) GLH__PREPROCESSOR_GYMNASTICS2(a,b) | ||
41 | |||
42 | #ifndef GLH_EXT_PREFIX | ||
43 | # define GLH_EXT_NAME(a) a | ||
44 | #else | ||
45 | # define GLH_EXT_NAME(a) GLH__PREPROCESSOR_GYMNASTICS(GLH_EXT_PREFIX,a) | ||
46 | #endif | ||
47 | |||
48 | #ifndef _WIN32 | ||
49 | # ifndef GLH_CORE_1_2_PREFIX | ||
50 | # define GLH_CORE_1_2_PREFIX _ | ||
51 | # endif | ||
52 | #endif | ||
53 | |||
54 | #ifndef GLH_CORE_1_2_PREFIX | ||
55 | # define GLH_CORE_1_2_NAME(a) a | ||
56 | #else | ||
57 | # define GLH_CORE_1_2_NAME(a) GLH__PREPROCESSOR_GYMNASTICS(GLH_CORE_1_2_PREFIX,a) | ||
58 | #endif | ||
59 | |||
60 | #ifdef GL_ARB_multitexture | ||
61 | GLH_EXTERN PFNGLMULTITEXCOORD1DARBPROC GLH_EXT_NAME(glMultiTexCoord1dARB) GLH_INITIALIZER; | ||
62 | GLH_EXTERN PFNGLMULTITEXCOORD1DVARBPROC GLH_EXT_NAME(glMultiTexCoord1dvARB) GLH_INITIALIZER; | ||
63 | GLH_EXTERN PFNGLMULTITEXCOORD1FARBPROC GLH_EXT_NAME(glMultiTexCoord1fARB) GLH_INITIALIZER; | ||
64 | GLH_EXTERN PFNGLMULTITEXCOORD1FVARBPROC GLH_EXT_NAME(glMultiTexCoord1fvARB) GLH_INITIALIZER; | ||
65 | GLH_EXTERN PFNGLMULTITEXCOORD1IARBPROC GLH_EXT_NAME(glMultiTexCoord1iARB) GLH_INITIALIZER; | ||
66 | GLH_EXTERN PFNGLMULTITEXCOORD1IVARBPROC GLH_EXT_NAME(glMultiTexCoord1ivARB) GLH_INITIALIZER; | ||
67 | GLH_EXTERN PFNGLMULTITEXCOORD1SARBPROC GLH_EXT_NAME(glMultiTexCoord1sARB) GLH_INITIALIZER; | ||
68 | GLH_EXTERN PFNGLMULTITEXCOORD1SVARBPROC GLH_EXT_NAME(glMultiTexCoord1svARB) GLH_INITIALIZER; | ||
69 | GLH_EXTERN PFNGLMULTITEXCOORD2DARBPROC GLH_EXT_NAME(glMultiTexCoord2dARB) GLH_INITIALIZER; | ||
70 | GLH_EXTERN PFNGLMULTITEXCOORD2DVARBPROC GLH_EXT_NAME(glMultiTexCoord2dvARB) GLH_INITIALIZER; | ||
71 | GLH_EXTERN PFNGLMULTITEXCOORD2FARBPROC GLH_EXT_NAME(glMultiTexCoord2fARB) GLH_INITIALIZER; | ||
72 | GLH_EXTERN PFNGLMULTITEXCOORD2FVARBPROC GLH_EXT_NAME(glMultiTexCoord2fvARB) GLH_INITIALIZER; | ||
73 | GLH_EXTERN PFNGLMULTITEXCOORD2IARBPROC GLH_EXT_NAME(glMultiTexCoord2iARB) GLH_INITIALIZER; | ||
74 | GLH_EXTERN PFNGLMULTITEXCOORD2IVARBPROC GLH_EXT_NAME(glMultiTexCoord2ivARB) GLH_INITIALIZER; | ||
75 | GLH_EXTERN PFNGLMULTITEXCOORD2SARBPROC GLH_EXT_NAME(glMultiTexCoord2sARB) GLH_INITIALIZER; | ||
76 | GLH_EXTERN PFNGLMULTITEXCOORD2SVARBPROC GLH_EXT_NAME(glMultiTexCoord2svARB) GLH_INITIALIZER; | ||
77 | GLH_EXTERN PFNGLMULTITEXCOORD3DARBPROC GLH_EXT_NAME(glMultiTexCoord3dARB) GLH_INITIALIZER; | ||
78 | GLH_EXTERN PFNGLMULTITEXCOORD3DVARBPROC GLH_EXT_NAME(glMultiTexCoord3dvARB) GLH_INITIALIZER; | ||
79 | GLH_EXTERN PFNGLMULTITEXCOORD3FARBPROC GLH_EXT_NAME(glMultiTexCoord3fARB) GLH_INITIALIZER; | ||
80 | GLH_EXTERN PFNGLMULTITEXCOORD3FVARBPROC GLH_EXT_NAME(glMultiTexCoord3fvARB) GLH_INITIALIZER; | ||
81 | GLH_EXTERN PFNGLMULTITEXCOORD3IARBPROC GLH_EXT_NAME(glMultiTexCoord3iARB) GLH_INITIALIZER; | ||
82 | GLH_EXTERN PFNGLMULTITEXCOORD3IVARBPROC GLH_EXT_NAME(glMultiTexCoord3ivARB) GLH_INITIALIZER; | ||
83 | GLH_EXTERN PFNGLMULTITEXCOORD3SARBPROC GLH_EXT_NAME(glMultiTexCoord3sARB) GLH_INITIALIZER; | ||
84 | GLH_EXTERN PFNGLMULTITEXCOORD3SVARBPROC GLH_EXT_NAME(glMultiTexCoord3svARB) GLH_INITIALIZER; | ||
85 | GLH_EXTERN PFNGLMULTITEXCOORD4DARBPROC GLH_EXT_NAME(glMultiTexCoord4dARB) GLH_INITIALIZER; | ||
86 | GLH_EXTERN PFNGLMULTITEXCOORD4DVARBPROC GLH_EXT_NAME(glMultiTexCoord4dvARB) GLH_INITIALIZER; | ||
87 | GLH_EXTERN PFNGLMULTITEXCOORD4FARBPROC GLH_EXT_NAME(glMultiTexCoord4fARB) GLH_INITIALIZER; | ||
88 | GLH_EXTERN PFNGLMULTITEXCOORD4FVARBPROC GLH_EXT_NAME(glMultiTexCoord4fvARB) GLH_INITIALIZER; | ||
89 | GLH_EXTERN PFNGLMULTITEXCOORD4IARBPROC GLH_EXT_NAME(glMultiTexCoord4iARB) GLH_INITIALIZER; | ||
90 | GLH_EXTERN PFNGLMULTITEXCOORD4IVARBPROC GLH_EXT_NAME(glMultiTexCoord4ivARB) GLH_INITIALIZER; | ||
91 | GLH_EXTERN PFNGLMULTITEXCOORD4SARBPROC GLH_EXT_NAME(glMultiTexCoord4sARB) GLH_INITIALIZER; | ||
92 | GLH_EXTERN PFNGLMULTITEXCOORD4SVARBPROC GLH_EXT_NAME(glMultiTexCoord4svARB) GLH_INITIALIZER; | ||
93 | GLH_EXTERN PFNGLACTIVETEXTUREARBPROC GLH_EXT_NAME(glActiveTextureARB) GLH_INITIALIZER; | ||
94 | GLH_EXTERN PFNGLCLIENTACTIVETEXTUREARBPROC GLH_EXT_NAME(glClientActiveTextureARB) GLH_INITIALIZER; | ||
95 | #endif | ||
96 | |||
97 | #ifdef GL_ARB_texture_border_clamp | ||
98 | #endif | ||
99 | |||
100 | #ifdef GL_ARB_texture_compression | ||
101 | GLH_EXTERN PFNGLCOMPRESSEDTEXIMAGE3DARBPROC GLH_EXT_NAME(glCompressedTexImage3DARB) GLH_INITIALIZER; | ||
102 | GLH_EXTERN PFNGLCOMPRESSEDTEXIMAGE2DARBPROC GLH_EXT_NAME(glCompressedTexImage2DARB) GLH_INITIALIZER; | ||
103 | GLH_EXTERN PFNGLCOMPRESSEDTEXIMAGE1DARBPROC GLH_EXT_NAME(glCompressedTexImage1DARB) GLH_INITIALIZER; | ||
104 | GLH_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC GLH_EXT_NAME(glCompressedTexSubImage3DARB) GLH_INITIALIZER; | ||
105 | GLH_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC GLH_EXT_NAME(glCompressedTexSubImage2DARB) GLH_INITIALIZER; | ||
106 | GLH_EXTERN PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC GLH_EXT_NAME(glCompressedTexSubImage1DARB) GLH_INITIALIZER; | ||
107 | GLH_EXTERN PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GLH_EXT_NAME(glGetCompressedTexImageARB) GLH_INITIALIZER; | ||
108 | #endif | ||
109 | |||
110 | #ifdef GL_ARB_texture_cube_map | ||
111 | #endif | ||
112 | |||
113 | #ifdef GL_ARB_transpose_matrix | ||
114 | GLH_EXTERN PFNGLLOADTRANSPOSEMATRIXFARBPROC GLH_EXT_NAME(glLoadTransposeMatrixfARB) GLH_INITIALIZER; | ||
115 | GLH_EXTERN PFNGLLOADTRANSPOSEMATRIXDARBPROC GLH_EXT_NAME(glLoadTransposeMatrixdARB) GLH_INITIALIZER; | ||
116 | GLH_EXTERN PFNGLMULTTRANSPOSEMATRIXFARBPROC GLH_EXT_NAME(glMultTransposeMatrixfARB) GLH_INITIALIZER; | ||
117 | GLH_EXTERN PFNGLMULTTRANSPOSEMATRIXDARBPROC GLH_EXT_NAME(glMultTransposeMatrixdARB) GLH_INITIALIZER; | ||
118 | #endif | ||
119 | |||
120 | #ifdef GL_ARB_vertex_program | ||
121 | GLH_EXTERN PFNGLVERTEXATTRIB1SARBPROC GLH_EXT_NAME(glVertexAttrib1sARB) GLH_INITIALIZER; | ||
122 | GLH_EXTERN PFNGLVERTEXATTRIB1FARBPROC GLH_EXT_NAME(glVertexAttrib1fARB) GLH_INITIALIZER; | ||
123 | GLH_EXTERN PFNGLVERTEXATTRIB1DARBPROC GLH_EXT_NAME(glVertexAttrib1dARB) GLH_INITIALIZER; | ||
124 | GLH_EXTERN PFNGLVERTEXATTRIB2SARBPROC GLH_EXT_NAME(glVertexAttrib2sARB) GLH_INITIALIZER; | ||
125 | GLH_EXTERN PFNGLVERTEXATTRIB2FARBPROC GLH_EXT_NAME(glVertexAttrib2fARB) GLH_INITIALIZER; | ||
126 | GLH_EXTERN PFNGLVERTEXATTRIB2DARBPROC GLH_EXT_NAME(glVertexAttrib2dARB) GLH_INITIALIZER; | ||
127 | GLH_EXTERN PFNGLVERTEXATTRIB3SARBPROC GLH_EXT_NAME(glVertexAttrib3sARB) GLH_INITIALIZER; | ||
128 | GLH_EXTERN PFNGLVERTEXATTRIB3FARBPROC GLH_EXT_NAME(glVertexAttrib3fARB) GLH_INITIALIZER; | ||
129 | GLH_EXTERN PFNGLVERTEXATTRIB3DARBPROC GLH_EXT_NAME(glVertexAttrib3dARB) GLH_INITIALIZER; | ||
130 | GLH_EXTERN PFNGLVERTEXATTRIB4SARBPROC GLH_EXT_NAME(glVertexAttrib4sARB) GLH_INITIALIZER; | ||
131 | GLH_EXTERN PFNGLVERTEXATTRIB4FARBPROC GLH_EXT_NAME(glVertexAttrib4fARB) GLH_INITIALIZER; | ||
132 | GLH_EXTERN PFNGLVERTEXATTRIB4DARBPROC GLH_EXT_NAME(glVertexAttrib4dARB) GLH_INITIALIZER; | ||
133 | GLH_EXTERN PFNGLVERTEXATTRIB4NUBARBPROC GLH_EXT_NAME(glVertexAttrib4NubARB) GLH_INITIALIZER; | ||
134 | GLH_EXTERN PFNGLVERTEXATTRIB1SVARBPROC GLH_EXT_NAME(glVertexAttrib1svARB) GLH_INITIALIZER; | ||
135 | GLH_EXTERN PFNGLVERTEXATTRIB1FVARBPROC GLH_EXT_NAME(glVertexAttrib1fvARB) GLH_INITIALIZER; | ||
136 | GLH_EXTERN PFNGLVERTEXATTRIB1DVARBPROC GLH_EXT_NAME(glVertexAttrib1dvARB) GLH_INITIALIZER; | ||
137 | GLH_EXTERN PFNGLVERTEXATTRIB2SVARBPROC GLH_EXT_NAME(glVertexAttrib2svARB) GLH_INITIALIZER; | ||
138 | GLH_EXTERN PFNGLVERTEXATTRIB2FVARBPROC GLH_EXT_NAME(glVertexAttrib2fvARB) GLH_INITIALIZER; | ||
139 | GLH_EXTERN PFNGLVERTEXATTRIB2DVARBPROC GLH_EXT_NAME(glVertexAttrib2dvARB) GLH_INITIALIZER; | ||
140 | GLH_EXTERN PFNGLVERTEXATTRIB3SVARBPROC GLH_EXT_NAME(glVertexAttrib3svARB) GLH_INITIALIZER; | ||
141 | GLH_EXTERN PFNGLVERTEXATTRIB3FVARBPROC GLH_EXT_NAME(glVertexAttrib3fvARB) GLH_INITIALIZER; | ||
142 | GLH_EXTERN PFNGLVERTEXATTRIB3DVARBPROC GLH_EXT_NAME(glVertexAttrib3dvARB) GLH_INITIALIZER; | ||
143 | GLH_EXTERN PFNGLVERTEXATTRIB4BVARBPROC GLH_EXT_NAME(glVertexAttrib4bvARB) GLH_INITIALIZER; | ||
144 | GLH_EXTERN PFNGLVERTEXATTRIB4SVARBPROC GLH_EXT_NAME(glVertexAttrib4svARB) GLH_INITIALIZER; | ||
145 | GLH_EXTERN PFNGLVERTEXATTRIB4IVARBPROC GLH_EXT_NAME(glVertexAttrib4ivARB) GLH_INITIALIZER; | ||
146 | GLH_EXTERN PFNGLVERTEXATTRIB4UBVARBPROC GLH_EXT_NAME(glVertexAttrib4ubvARB) GLH_INITIALIZER; | ||
147 | GLH_EXTERN PFNGLVERTEXATTRIB4USVARBPROC GLH_EXT_NAME(glVertexAttrib4usvARB) GLH_INITIALIZER; | ||
148 | GLH_EXTERN PFNGLVERTEXATTRIB4UIVARBPROC GLH_EXT_NAME(glVertexAttrib4uivARB) GLH_INITIALIZER; | ||
149 | GLH_EXTERN PFNGLVERTEXATTRIB4FVARBPROC GLH_EXT_NAME(glVertexAttrib4fvARB) GLH_INITIALIZER; | ||
150 | GLH_EXTERN PFNGLVERTEXATTRIB4DVARBPROC GLH_EXT_NAME(glVertexAttrib4dvARB) GLH_INITIALIZER; | ||
151 | GLH_EXTERN PFNGLVERTEXATTRIB4NBVARBPROC GLH_EXT_NAME(glVertexAttrib4NbvARB) GLH_INITIALIZER; | ||
152 | GLH_EXTERN PFNGLVERTEXATTRIB4NSVARBPROC GLH_EXT_NAME(glVertexAttrib4NsvARB) GLH_INITIALIZER; | ||
153 | GLH_EXTERN PFNGLVERTEXATTRIB4NIVARBPROC GLH_EXT_NAME(glVertexAttrib4NivARB) GLH_INITIALIZER; | ||
154 | GLH_EXTERN PFNGLVERTEXATTRIB4NUBVARBPROC GLH_EXT_NAME(glVertexAttrib4NubvARB) GLH_INITIALIZER; | ||
155 | GLH_EXTERN PFNGLVERTEXATTRIB4NUSVARBPROC GLH_EXT_NAME(glVertexAttrib4NusvARB) GLH_INITIALIZER; | ||
156 | GLH_EXTERN PFNGLVERTEXATTRIB4NUIVARBPROC GLH_EXT_NAME(glVertexAttrib4NuivARB) GLH_INITIALIZER; | ||
157 | GLH_EXTERN PFNGLVERTEXATTRIBPOINTERARBPROC GLH_EXT_NAME(glVertexAttribPointerARB) GLH_INITIALIZER; | ||
158 | GLH_EXTERN PFNGLENABLEVERTEXATTRIBARRAYARBPROC GLH_EXT_NAME(glEnableVertexAttribArrayARB) GLH_INITIALIZER; | ||
159 | GLH_EXTERN PFNGLDISABLEVERTEXATTRIBARRAYARBPROC GLH_EXT_NAME(glDisableVertexAttribArrayARB) GLH_INITIALIZER; | ||
160 | GLH_EXTERN PFNGLPROGRAMSTRINGARBPROC GLH_EXT_NAME(glProgramStringARB) GLH_INITIALIZER; | ||
161 | GLH_EXTERN PFNGLBINDPROGRAMARBPROC GLH_EXT_NAME(glBindProgramARB) GLH_INITIALIZER; | ||
162 | GLH_EXTERN PFNGLDELETEPROGRAMSARBPROC GLH_EXT_NAME(glDeleteProgramsARB) GLH_INITIALIZER; | ||
163 | GLH_EXTERN PFNGLGENPROGRAMSARBPROC GLH_EXT_NAME(glGenProgramsARB) GLH_INITIALIZER; | ||
164 | GLH_EXTERN PFNGLPROGRAMENVPARAMETER4DARBPROC GLH_EXT_NAME(glProgramEnvParameter4dARB) GLH_INITIALIZER; | ||
165 | GLH_EXTERN PFNGLPROGRAMENVPARAMETER4DVARBPROC GLH_EXT_NAME(glProgramEnvParameter4dvARB) GLH_INITIALIZER; | ||
166 | GLH_EXTERN PFNGLPROGRAMENVPARAMETER4FARBPROC GLH_EXT_NAME(glProgramEnvParameter4fARB) GLH_INITIALIZER; | ||
167 | GLH_EXTERN PFNGLPROGRAMENVPARAMETER4FVARBPROC GLH_EXT_NAME(glProgramEnvParameter4fvARB) GLH_INITIALIZER; | ||
168 | GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4DARBPROC GLH_EXT_NAME(glProgramLocalParameter4dARB) GLH_INITIALIZER; | ||
169 | GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4DVARBPROC GLH_EXT_NAME(glProgramLocalParameter4dvARB) GLH_INITIALIZER; | ||
170 | GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4FARBPROC GLH_EXT_NAME(glProgramLocalParameter4fARB) GLH_INITIALIZER; | ||
171 | GLH_EXTERN PFNGLPROGRAMLOCALPARAMETER4FVARBPROC GLH_EXT_NAME(glProgramLocalParameter4fvARB) GLH_INITIALIZER; | ||
172 | GLH_EXTERN PFNGLGETPROGRAMENVPARAMETERDVARBPROC GLH_EXT_NAME(glGetProgramEnvParameterdvARB) GLH_INITIALIZER; | ||
173 | GLH_EXTERN PFNGLGETPROGRAMENVPARAMETERFVARBPROC GLH_EXT_NAME(glGetProgramEnvParameterfvARB) GLH_INITIALIZER; | ||
174 | GLH_EXTERN PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GLH_EXT_NAME(glGetProgramLocalParameterdvARB) GLH_INITIALIZER; | ||
175 | GLH_EXTERN PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GLH_EXT_NAME(glGetProgramLocalParameterfvARB) GLH_INITIALIZER; | ||
176 | GLH_EXTERN PFNGLGETPROGRAMIVARBPROC GLH_EXT_NAME(glGetProgramivARB) GLH_INITIALIZER; | ||
177 | GLH_EXTERN PFNGLGETPROGRAMSTRINGARBPROC GLH_EXT_NAME(glGetProgramStringARB) GLH_INITIALIZER; | ||
178 | GLH_EXTERN PFNGLGETVERTEXATTRIBDVARBPROC GLH_EXT_NAME(glGetVertexAttribdvARB) GLH_INITIALIZER; | ||
179 | GLH_EXTERN PFNGLGETVERTEXATTRIBFVARBPROC GLH_EXT_NAME(glGetVertexAttribfvARB) GLH_INITIALIZER; | ||
180 | GLH_EXTERN PFNGLGETVERTEXATTRIBIVARBPROC GLH_EXT_NAME(glGetVertexAttribivARB) GLH_INITIALIZER; | ||
181 | GLH_EXTERN PFNGLGETVERTEXATTRIBPOINTERVARBPROC GLH_EXT_NAME(glGetVertexAttribPointervARB) GLH_INITIALIZER; | ||
182 | GLH_EXTERN PFNGLISPROGRAMARBPROC GLH_EXT_NAME(glIsProgramARB) GLH_INITIALIZER; | ||
183 | #endif | ||
184 | |||
185 | #ifdef GL_EXT_abgr | ||
186 | #endif | ||
187 | |||
188 | #ifdef GL_EXT_bgra | ||
189 | #endif | ||
190 | |||
191 | #ifdef GL_EXT_blend_color | ||
192 | GLH_EXTERN PFNGLBLENDCOLOREXTPROC GLH_EXT_NAME(glBlendColorEXT) GLH_INITIALIZER; | ||
193 | #endif | ||
194 | |||
195 | #ifdef GL_EXT_blend_minmax | ||
196 | GLH_EXTERN PFNGLBLENDEQUATIONEXTPROC GLH_EXT_NAME(glBlendEquationEXT) GLH_INITIALIZER; | ||
197 | #endif | ||
198 | |||
199 | #ifdef GL_EXT_blend_subtract | ||
200 | #endif | ||
201 | |||
202 | #ifdef GL_EXT_compiled_vertex_array | ||
203 | GLH_EXTERN PFNGLLOCKARRAYSEXTPROC GLH_EXT_NAME(glLockArraysEXT) GLH_INITIALIZER; | ||
204 | GLH_EXTERN PFNGLUNLOCKARRAYSEXTPROC GLH_EXT_NAME(glUnlockArraysEXT) GLH_INITIALIZER; | ||
205 | #endif | ||
206 | |||
207 | #ifdef GL_EXT_fog_coord | ||
208 | GLH_EXTERN PFNGLFOGCOORDDEXTPROC GLH_EXT_NAME(glFogCoorddEXT) GLH_INITIALIZER; | ||
209 | GLH_EXTERN PFNGLFOGCOORDDVEXTPROC GLH_EXT_NAME(glFogCoorddvEXT) GLH_INITIALIZER; | ||
210 | GLH_EXTERN PFNGLFOGCOORDFEXTPROC GLH_EXT_NAME(glFogCoordfEXT) GLH_INITIALIZER; | ||
211 | GLH_EXTERN PFNGLFOGCOORDFVEXTPROC GLH_EXT_NAME(glFogCoordfvEXT) GLH_INITIALIZER; | ||
212 | GLH_EXTERN PFNGLFOGCOORDPOINTEREXTPROC GLH_EXT_NAME(glFogCoordPointerEXT) GLH_INITIALIZER; | ||
213 | #endif | ||
214 | |||
215 | #ifdef GL_EXT_light_max_exponent | ||
216 | #endif | ||
217 | |||
218 | #ifdef GL_EXT_packed_pixels | ||
219 | #endif | ||
220 | |||
221 | #ifdef GL_EXT_paletted_texture | ||
222 | GLH_EXTERN PFNGLCOLORSUBTABLEEXTPROC GLH_EXT_NAME(glColorSubTableEXT) GLH_INITIALIZER; | ||
223 | GLH_EXTERN PFNGLCOLORTABLEEXTPROC GLH_EXT_NAME(glColorTableEXT) GLH_INITIALIZER; | ||
224 | GLH_EXTERN PFNGLGETCOLORTABLEEXTPROC GLH_EXT_NAME(glGetColorTableEXT) GLH_INITIALIZER; | ||
225 | GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERFVEXTPROC GLH_EXT_NAME(glGetColorTableParameterfvEXT) GLH_INITIALIZER; | ||
226 | GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERIVEXTPROC GLH_EXT_NAME(glGetColorTableParameterivEXT) GLH_INITIALIZER; | ||
227 | #endif | ||
228 | |||
229 | #ifdef GL_EXT_point_parameters | ||
230 | GLH_EXTERN PFNGLPOINTPARAMETERFEXTPROC GLH_EXT_NAME(glPointParameterfEXT) GLH_INITIALIZER; | ||
231 | GLH_EXTERN PFNGLPOINTPARAMETERFVEXTPROC GLH_EXT_NAME(glPointParameterfvEXT) GLH_INITIALIZER; | ||
232 | #endif | ||
233 | |||
234 | #ifdef GL_EXT_rescale_normal | ||
235 | #endif | ||
236 | |||
237 | #ifdef GL_EXT_secondary_color | ||
238 | GLH_EXTERN PFNGLSECONDARYCOLOR3BEXTPROC GLH_EXT_NAME(glSecondaryColor3bEXT) GLH_INITIALIZER; | ||
239 | GLH_EXTERN PFNGLSECONDARYCOLOR3BVEXTPROC GLH_EXT_NAME(glSecondaryColor3bvEXT) GLH_INITIALIZER; | ||
240 | GLH_EXTERN PFNGLSECONDARYCOLOR3DEXTPROC GLH_EXT_NAME(glSecondaryColor3dEXT) GLH_INITIALIZER; | ||
241 | GLH_EXTERN PFNGLSECONDARYCOLOR3DVEXTPROC GLH_EXT_NAME(glSecondaryColor3dvEXT) GLH_INITIALIZER; | ||
242 | GLH_EXTERN PFNGLSECONDARYCOLOR3FEXTPROC GLH_EXT_NAME(glSecondaryColor3fEXT) GLH_INITIALIZER; | ||
243 | GLH_EXTERN PFNGLSECONDARYCOLOR3FVEXTPROC GLH_EXT_NAME(glSecondaryColor3fvEXT) GLH_INITIALIZER; | ||
244 | GLH_EXTERN PFNGLSECONDARYCOLOR3IEXTPROC GLH_EXT_NAME(glSecondaryColor3iEXT) GLH_INITIALIZER; | ||
245 | GLH_EXTERN PFNGLSECONDARYCOLOR3IVEXTPROC GLH_EXT_NAME(glSecondaryColor3ivEXT) GLH_INITIALIZER; | ||
246 | GLH_EXTERN PFNGLSECONDARYCOLOR3SEXTPROC GLH_EXT_NAME(glSecondaryColor3sEXT) GLH_INITIALIZER; | ||
247 | GLH_EXTERN PFNGLSECONDARYCOLOR3SVEXTPROC GLH_EXT_NAME(glSecondaryColor3svEXT) GLH_INITIALIZER; | ||
248 | GLH_EXTERN PFNGLSECONDARYCOLOR3UBEXTPROC GLH_EXT_NAME(glSecondaryColor3ubEXT) GLH_INITIALIZER; | ||
249 | GLH_EXTERN PFNGLSECONDARYCOLOR3UBVEXTPROC GLH_EXT_NAME(glSecondaryColor3ubvEXT) GLH_INITIALIZER; | ||
250 | GLH_EXTERN PFNGLSECONDARYCOLOR3UIEXTPROC GLH_EXT_NAME(glSecondaryColor3uiEXT) GLH_INITIALIZER; | ||
251 | GLH_EXTERN PFNGLSECONDARYCOLOR3UIVEXTPROC GLH_EXT_NAME(glSecondaryColor3uivEXT) GLH_INITIALIZER; | ||
252 | GLH_EXTERN PFNGLSECONDARYCOLOR3USEXTPROC GLH_EXT_NAME(glSecondaryColor3usEXT) GLH_INITIALIZER; | ||
253 | GLH_EXTERN PFNGLSECONDARYCOLOR3USVEXTPROC GLH_EXT_NAME(glSecondaryColor3usvEXT) GLH_INITIALIZER; | ||
254 | GLH_EXTERN PFNGLSECONDARYCOLORPOINTEREXTPROC GLH_EXT_NAME(glSecondaryColorPointerEXT) GLH_INITIALIZER; | ||
255 | #endif | ||
256 | |||
257 | #ifdef GL_EXT_separate_specular_color | ||
258 | #endif | ||
259 | |||
260 | #ifdef GL_EXT_shared_texture_palette | ||
261 | #endif | ||
262 | |||
263 | #ifdef GL_EXT_stencil_wrap | ||
264 | #endif | ||
265 | |||
266 | #ifdef GL_EXT_texture_compression_s3tc | ||
267 | #endif | ||
268 | |||
269 | #ifdef GL_EXT_texture_cube_map | ||
270 | #endif | ||
271 | |||
272 | #ifdef GL_EXT_texture_edge_clamp | ||
273 | #endif | ||
274 | |||
275 | #ifdef GL_EXT_texture_env_add | ||
276 | #endif | ||
277 | |||
278 | #ifdef GL_EXT_texture_env_combine | ||
279 | #endif | ||
280 | |||
281 | #ifdef GL_EXT_texture_filter_anisotropic | ||
282 | #endif | ||
283 | |||
284 | #ifdef GL_EXT_texture_lod_bias | ||
285 | #endif | ||
286 | |||
287 | #ifdef GL_EXT_texture_object | ||
288 | GLH_EXTERN PFNGLARETEXTURESRESIDENTEXTPROC GLH_EXT_NAME(glAreTexturesResidentEXT) GLH_INITIALIZER; | ||
289 | GLH_EXTERN PFNGLBINDTEXTUREEXTPROC GLH_EXT_NAME(glBindTextureEXT) GLH_INITIALIZER; | ||
290 | GLH_EXTERN PFNGLDELETETEXTURESEXTPROC GLH_EXT_NAME(glDeleteTexturesEXT) GLH_INITIALIZER; | ||
291 | GLH_EXTERN PFNGLGENTEXTURESEXTPROC GLH_EXT_NAME(glGenTexturesEXT) GLH_INITIALIZER; | ||
292 | GLH_EXTERN PFNGLISTEXTUREEXTPROC GLH_EXT_NAME(glIsTextureEXT) GLH_INITIALIZER; | ||
293 | GLH_EXTERN PFNGLPRIORITIZETEXTURESEXTPROC GLH_EXT_NAME(glPrioritizeTexturesEXT) GLH_INITIALIZER; | ||
294 | #endif | ||
295 | |||
296 | #ifdef GL_EXT_texture3D | ||
297 | GLH_EXTERN PFNGLTEXIMAGE3DEXTPROC GLH_EXT_NAME(glTexImage3DEXT) GLH_INITIALIZER; | ||
298 | #endif | ||
299 | |||
300 | #ifdef GL_EXT_vertex_array | ||
301 | GLH_EXTERN PFNGLARRAYELEMENTEXTPROC GLH_EXT_NAME(glArrayElementEXT) GLH_INITIALIZER; | ||
302 | GLH_EXTERN PFNGLCOLORPOINTEREXTPROC GLH_EXT_NAME(glColorPointerEXT) GLH_INITIALIZER; | ||
303 | GLH_EXTERN PFNGLEDGEFLAGPOINTEREXTPROC GLH_EXT_NAME(glEdgeFlagPointerEXT) GLH_INITIALIZER; | ||
304 | GLH_EXTERN PFNGLGETPOINTERVEXTPROC GLH_EXT_NAME(glGetPointervEXT) GLH_INITIALIZER; | ||
305 | GLH_EXTERN PFNGLINDEXPOINTEREXTPROC GLH_EXT_NAME(glIndexPointerEXT) GLH_INITIALIZER; | ||
306 | GLH_EXTERN PFNGLNORMALPOINTEREXTPROC GLH_EXT_NAME(glNormalPointerEXT) GLH_INITIALIZER; | ||
307 | GLH_EXTERN PFNGLTEXCOORDPOINTEREXTPROC GLH_EXT_NAME(glTexCoordPointerEXT) GLH_INITIALIZER; | ||
308 | GLH_EXTERN PFNGLVERTEXPOINTEREXTPROC GLH_EXT_NAME(glVertexPointerEXT) GLH_INITIALIZER; | ||
309 | GLH_EXTERN PFNGLDRAWARRAYSEXTPROC GLH_EXT_NAME(glDrawArraysEXT) GLH_INITIALIZER; | ||
310 | #endif | ||
311 | |||
312 | #ifdef GL_EXT_vertex_weighting | ||
313 | GLH_EXTERN PFNGLVERTEXWEIGHTFEXTPROC GLH_EXT_NAME(glVertexWeightfEXT) GLH_INITIALIZER; | ||
314 | GLH_EXTERN PFNGLVERTEXWEIGHTFVEXTPROC GLH_EXT_NAME(glVertexWeightfvEXT) GLH_INITIALIZER; | ||
315 | GLH_EXTERN PFNGLVERTEXWEIGHTPOINTEREXTPROC GLH_EXT_NAME(glVertexWeightPointerEXT) GLH_INITIALIZER; | ||
316 | #endif | ||
317 | |||
318 | #ifdef GL_NV_blend_square | ||
319 | #endif | ||
320 | |||
321 | #ifdef GL_NV_evaluators | ||
322 | GLH_EXTERN PFNGLMAPCONTROLPOINTSNVPROC GLH_EXT_NAME(glMapControlPointsNV) GLH_INITIALIZER; | ||
323 | GLH_EXTERN PFNGLMAPPARAMETERIVNVPROC GLH_EXT_NAME(glMapParameterivNV) GLH_INITIALIZER; | ||
324 | GLH_EXTERN PFNGLMAPPARAMETERFVNVPROC GLH_EXT_NAME(glMapParameterfvNV) GLH_INITIALIZER; | ||
325 | GLH_EXTERN PFNGLGETMAPCONTROLPOINTSNVPROC GLH_EXT_NAME(glGetMapControlPointsNV) GLH_INITIALIZER; | ||
326 | GLH_EXTERN PFNGLGETMAPPARAMETERIVNVPROC GLH_EXT_NAME(glGetMapParameterivNV) GLH_INITIALIZER; | ||
327 | GLH_EXTERN PFNGLGETMAPPARAMETERFVNVPROC GLH_EXT_NAME(glGetMapParameterfvNV) GLH_INITIALIZER; | ||
328 | GLH_EXTERN PFNGLGETMAPATTRIBPARAMETERIVNVPROC GLH_EXT_NAME(glGetMapAttribParameterivNV) GLH_INITIALIZER; | ||
329 | GLH_EXTERN PFNGLGETMAPATTRIBPARAMETERFVNVPROC GLH_EXT_NAME(glGetMapAttribParameterfvNV) GLH_INITIALIZER; | ||
330 | GLH_EXTERN PFNGLEVALMAPSNVPROC GLH_EXT_NAME(glEvalMapsNV) GLH_INITIALIZER; | ||
331 | #endif | ||
332 | |||
333 | #ifdef GL_NV_fence | ||
334 | GLH_EXTERN PFNGLGENFENCESNVPROC GLH_EXT_NAME(glGenFencesNV) GLH_INITIALIZER; | ||
335 | GLH_EXTERN PFNGLDELETEFENCESNVPROC GLH_EXT_NAME(glDeleteFencesNV) GLH_INITIALIZER; | ||
336 | GLH_EXTERN PFNGLSETFENCENVPROC GLH_EXT_NAME(glSetFenceNV) GLH_INITIALIZER; | ||
337 | GLH_EXTERN PFNGLTESTFENCENVPROC GLH_EXT_NAME(glTestFenceNV) GLH_INITIALIZER; | ||
338 | GLH_EXTERN PFNGLFINISHFENCENVPROC GLH_EXT_NAME(glFinishFenceNV) GLH_INITIALIZER; | ||
339 | GLH_EXTERN PFNGLISFENCENVPROC GLH_EXT_NAME(glIsFenceNV) GLH_INITIALIZER; | ||
340 | GLH_EXTERN PFNGLGETFENCEIVNVPROC GLH_EXT_NAME(glGetFenceivNV) GLH_INITIALIZER; | ||
341 | #endif | ||
342 | |||
343 | #ifdef GL_NV_fog_distance | ||
344 | #endif | ||
345 | |||
346 | #ifdef GL_NV_packed_depth_stencil | ||
347 | #endif | ||
348 | |||
349 | #ifdef GL_NV_register_combiners | ||
350 | GLH_EXTERN PFNGLCOMBINERPARAMETERFVNVPROC GLH_EXT_NAME(glCombinerParameterfvNV) GLH_INITIALIZER; | ||
351 | GLH_EXTERN PFNGLCOMBINERPARAMETERFNVPROC GLH_EXT_NAME(glCombinerParameterfNV) GLH_INITIALIZER; | ||
352 | GLH_EXTERN PFNGLCOMBINERPARAMETERIVNVPROC GLH_EXT_NAME(glCombinerParameterivNV) GLH_INITIALIZER; | ||
353 | GLH_EXTERN PFNGLCOMBINERPARAMETERINVPROC GLH_EXT_NAME(glCombinerParameteriNV) GLH_INITIALIZER; | ||
354 | GLH_EXTERN PFNGLCOMBINERINPUTNVPROC GLH_EXT_NAME(glCombinerInputNV) GLH_INITIALIZER; | ||
355 | GLH_EXTERN PFNGLCOMBINEROUTPUTNVPROC GLH_EXT_NAME(glCombinerOutputNV) GLH_INITIALIZER; | ||
356 | GLH_EXTERN PFNGLFINALCOMBINERINPUTNVPROC GLH_EXT_NAME(glFinalCombinerInputNV) GLH_INITIALIZER; | ||
357 | GLH_EXTERN PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GLH_EXT_NAME(glGetCombinerInputParameterfvNV) GLH_INITIALIZER; | ||
358 | GLH_EXTERN PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GLH_EXT_NAME(glGetCombinerInputParameterivNV) GLH_INITIALIZER; | ||
359 | GLH_EXTERN PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GLH_EXT_NAME(glGetCombinerOutputParameterfvNV) GLH_INITIALIZER; | ||
360 | GLH_EXTERN PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GLH_EXT_NAME(glGetCombinerOutputParameterivNV) GLH_INITIALIZER; | ||
361 | GLH_EXTERN PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GLH_EXT_NAME(glGetFinalCombinerInputParameterfvNV) GLH_INITIALIZER; | ||
362 | GLH_EXTERN PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GLH_EXT_NAME(glGetFinalCombinerInputParameterivNV) GLH_INITIALIZER; | ||
363 | #endif | ||
364 | |||
365 | #ifdef GL_NV_register_combiners2 | ||
366 | GLH_EXTERN PFNGLCOMBINERSTAGEPARAMETERFVNVPROC GLH_EXT_NAME(glCombinerStageParameterfvNV) GLH_INITIALIZER; | ||
367 | GLH_EXTERN PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GLH_EXT_NAME(glGetCombinerStageParameterfvNV) GLH_INITIALIZER; | ||
368 | #endif | ||
369 | |||
370 | #ifdef GL_NV_texgen_reflection | ||
371 | #endif | ||
372 | |||
373 | #ifdef GL_NV_texture_env_combine4 | ||
374 | #endif | ||
375 | |||
376 | #ifdef GL_NV_texture_rectangle | ||
377 | #endif | ||
378 | |||
379 | #ifdef GL_NV_texture_shader | ||
380 | #endif | ||
381 | |||
382 | #ifdef GL_NV_vertex_array_range | ||
383 | GLH_EXTERN PFNGLFLUSHVERTEXARRAYRANGENVPROC GLH_EXT_NAME(glFlushVertexArrayRangeNV) GLH_INITIALIZER; | ||
384 | GLH_EXTERN PFNGLVERTEXARRAYRANGENVPROC GLH_EXT_NAME(glVertexArrayRangeNV) GLH_INITIALIZER; | ||
385 | # ifdef _WIN32 | ||
386 | GLH_EXTERN PFNWGLALLOCATEMEMORYNVPROC GLH_EXT_NAME(wglAllocateMemoryNV) GLH_INITIALIZER; | ||
387 | # endif | ||
388 | # ifdef GLX_VERSION_1_3 | ||
389 | GLH_EXTERN PFNGLXALLOCATEMEMORYNVPROC GLH_EXT_NAME(glXAllocateMemoryNV) GLH_INITIALIZER; | ||
390 | # endif | ||
391 | # ifdef _WIN32 | ||
392 | GLH_EXTERN PFNWGLFREEMEMORYNVPROC GLH_EXT_NAME(wglFreeMemoryNV) GLH_INITIALIZER; | ||
393 | # endif | ||
394 | # ifdef GLX_VERSION_1_3 | ||
395 | GLH_EXTERN PFNGLXFREEMEMORYNVPROC GLH_EXT_NAME(glXFreeMemoryNV) GLH_INITIALIZER; | ||
396 | # endif | ||
397 | #endif | ||
398 | |||
399 | #ifdef GL_NV_vertex_program | ||
400 | GLH_EXTERN PFNGLAREPROGRAMSRESIDENTNVPROC GLH_EXT_NAME(glAreProgramsResidentNV) GLH_INITIALIZER; | ||
401 | GLH_EXTERN PFNGLBINDPROGRAMNVPROC GLH_EXT_NAME(glBindProgramNV) GLH_INITIALIZER; | ||
402 | GLH_EXTERN PFNGLDELETEPROGRAMSNVPROC GLH_EXT_NAME(glDeleteProgramsNV) GLH_INITIALIZER; | ||
403 | GLH_EXTERN PFNGLEXECUTEPROGRAMNVPROC GLH_EXT_NAME(glExecuteProgramNV) GLH_INITIALIZER; | ||
404 | GLH_EXTERN PFNGLGENPROGRAMSNVPROC GLH_EXT_NAME(glGenProgramsNV) GLH_INITIALIZER; | ||
405 | GLH_EXTERN PFNGLGETPROGRAMPARAMETERDVNVPROC GLH_EXT_NAME(glGetProgramParameterdvNV) GLH_INITIALIZER; | ||
406 | GLH_EXTERN PFNGLGETPROGRAMPARAMETERFVNVPROC GLH_EXT_NAME(glGetProgramParameterfvNV) GLH_INITIALIZER; | ||
407 | GLH_EXTERN PFNGLGETPROGRAMIVNVPROC GLH_EXT_NAME(glGetProgramivNV) GLH_INITIALIZER; | ||
408 | GLH_EXTERN PFNGLGETPROGRAMSTRINGNVPROC GLH_EXT_NAME(glGetProgramStringNV) GLH_INITIALIZER; | ||
409 | GLH_EXTERN PFNGLGETTRACKMATRIXIVNVPROC GLH_EXT_NAME(glGetTrackMatrixivNV) GLH_INITIALIZER; | ||
410 | GLH_EXTERN PFNGLGETVERTEXATTRIBDVNVPROC GLH_EXT_NAME(glGetVertexAttribdvNV) GLH_INITIALIZER; | ||
411 | GLH_EXTERN PFNGLGETVERTEXATTRIBFVNVPROC GLH_EXT_NAME(glGetVertexAttribfvNV) GLH_INITIALIZER; | ||
412 | GLH_EXTERN PFNGLGETVERTEXATTRIBIVNVPROC GLH_EXT_NAME(glGetVertexAttribivNV) GLH_INITIALIZER; | ||
413 | GLH_EXTERN PFNGLGETVERTEXATTRIBPOINTERVNVPROC GLH_EXT_NAME(glGetVertexAttribPointervNV) GLH_INITIALIZER; | ||
414 | GLH_EXTERN PFNGLISPROGRAMNVPROC GLH_EXT_NAME(glIsProgramNV) GLH_INITIALIZER; | ||
415 | GLH_EXTERN PFNGLLOADPROGRAMNVPROC GLH_EXT_NAME(glLoadProgramNV) GLH_INITIALIZER; | ||
416 | GLH_EXTERN PFNGLPROGRAMPARAMETER4DNVPROC GLH_EXT_NAME(glProgramParameter4dNV) GLH_INITIALIZER; | ||
417 | GLH_EXTERN PFNGLPROGRAMPARAMETER4DVNVPROC GLH_EXT_NAME(glProgramParameter4dvNV) GLH_INITIALIZER; | ||
418 | GLH_EXTERN PFNGLPROGRAMPARAMETER4FNVPROC GLH_EXT_NAME(glProgramParameter4fNV) GLH_INITIALIZER; | ||
419 | GLH_EXTERN PFNGLPROGRAMPARAMETER4FVNVPROC GLH_EXT_NAME(glProgramParameter4fvNV) GLH_INITIALIZER; | ||
420 | GLH_EXTERN PFNGLPROGRAMPARAMETERS4DVNVPROC GLH_EXT_NAME(glProgramParameters4dvNV) GLH_INITIALIZER; | ||
421 | GLH_EXTERN PFNGLPROGRAMPARAMETERS4FVNVPROC GLH_EXT_NAME(glProgramParameters4fvNV) GLH_INITIALIZER; | ||
422 | GLH_EXTERN PFNGLREQUESTRESIDENTPROGRAMSNVPROC GLH_EXT_NAME(glRequestResidentProgramsNV) GLH_INITIALIZER; | ||
423 | GLH_EXTERN PFNGLTRACKMATRIXNVPROC GLH_EXT_NAME(glTrackMatrixNV) GLH_INITIALIZER; | ||
424 | GLH_EXTERN PFNGLVERTEXATTRIBPOINTERNVPROC GLH_EXT_NAME(glVertexAttribPointerNV) GLH_INITIALIZER; | ||
425 | GLH_EXTERN PFNGLVERTEXATTRIB1DNVPROC GLH_EXT_NAME(glVertexAttrib1dNV) GLH_INITIALIZER; | ||
426 | GLH_EXTERN PFNGLVERTEXATTRIB1DVNVPROC GLH_EXT_NAME(glVertexAttrib1dvNV) GLH_INITIALIZER; | ||
427 | GLH_EXTERN PFNGLVERTEXATTRIB1FNVPROC GLH_EXT_NAME(glVertexAttrib1fNV) GLH_INITIALIZER; | ||
428 | GLH_EXTERN PFNGLVERTEXATTRIB1FVNVPROC GLH_EXT_NAME(glVertexAttrib1fvNV) GLH_INITIALIZER; | ||
429 | GLH_EXTERN PFNGLVERTEXATTRIB1SNVPROC GLH_EXT_NAME(glVertexAttrib1sNV) GLH_INITIALIZER; | ||
430 | GLH_EXTERN PFNGLVERTEXATTRIB1SVNVPROC GLH_EXT_NAME(glVertexAttrib1svNV) GLH_INITIALIZER; | ||
431 | GLH_EXTERN PFNGLVERTEXATTRIB2DNVPROC GLH_EXT_NAME(glVertexAttrib2dNV) GLH_INITIALIZER; | ||
432 | GLH_EXTERN PFNGLVERTEXATTRIB2DVNVPROC GLH_EXT_NAME(glVertexAttrib2dvNV) GLH_INITIALIZER; | ||
433 | GLH_EXTERN PFNGLVERTEXATTRIB2FNVPROC GLH_EXT_NAME(glVertexAttrib2fNV) GLH_INITIALIZER; | ||
434 | GLH_EXTERN PFNGLVERTEXATTRIB2FVNVPROC GLH_EXT_NAME(glVertexAttrib2fvNV) GLH_INITIALIZER; | ||
435 | GLH_EXTERN PFNGLVERTEXATTRIB2SNVPROC GLH_EXT_NAME(glVertexAttrib2sNV) GLH_INITIALIZER; | ||
436 | GLH_EXTERN PFNGLVERTEXATTRIB2SVNVPROC GLH_EXT_NAME(glVertexAttrib2svNV) GLH_INITIALIZER; | ||
437 | GLH_EXTERN PFNGLVERTEXATTRIB3DNVPROC GLH_EXT_NAME(glVertexAttrib3dNV) GLH_INITIALIZER; | ||
438 | GLH_EXTERN PFNGLVERTEXATTRIB3DVNVPROC GLH_EXT_NAME(glVertexAttrib3dvNV) GLH_INITIALIZER; | ||
439 | GLH_EXTERN PFNGLVERTEXATTRIB3FNVPROC GLH_EXT_NAME(glVertexAttrib3fNV) GLH_INITIALIZER; | ||
440 | GLH_EXTERN PFNGLVERTEXATTRIB3FVNVPROC GLH_EXT_NAME(glVertexAttrib3fvNV) GLH_INITIALIZER; | ||
441 | GLH_EXTERN PFNGLVERTEXATTRIB3SNVPROC GLH_EXT_NAME(glVertexAttrib3sNV) GLH_INITIALIZER; | ||
442 | GLH_EXTERN PFNGLVERTEXATTRIB3SVNVPROC GLH_EXT_NAME(glVertexAttrib3svNV) GLH_INITIALIZER; | ||
443 | GLH_EXTERN PFNGLVERTEXATTRIB4DNVPROC GLH_EXT_NAME(glVertexAttrib4dNV) GLH_INITIALIZER; | ||
444 | GLH_EXTERN PFNGLVERTEXATTRIB4DVNVPROC GLH_EXT_NAME(glVertexAttrib4dvNV) GLH_INITIALIZER; | ||
445 | GLH_EXTERN PFNGLVERTEXATTRIB4FNVPROC GLH_EXT_NAME(glVertexAttrib4fNV) GLH_INITIALIZER; | ||
446 | GLH_EXTERN PFNGLVERTEXATTRIB4FVNVPROC GLH_EXT_NAME(glVertexAttrib4fvNV) GLH_INITIALIZER; | ||
447 | GLH_EXTERN PFNGLVERTEXATTRIB4SNVPROC GLH_EXT_NAME(glVertexAttrib4sNV) GLH_INITIALIZER; | ||
448 | GLH_EXTERN PFNGLVERTEXATTRIB4SVNVPROC GLH_EXT_NAME(glVertexAttrib4svNV) GLH_INITIALIZER; | ||
449 | GLH_EXTERN PFNGLVERTEXATTRIB4UBVNVPROC GLH_EXT_NAME(glVertexAttrib4ubvNV) GLH_INITIALIZER; | ||
450 | GLH_EXTERN PFNGLVERTEXATTRIBS1DVNVPROC GLH_EXT_NAME(glVertexAttribs1dvNV) GLH_INITIALIZER; | ||
451 | GLH_EXTERN PFNGLVERTEXATTRIBS1FVNVPROC GLH_EXT_NAME(glVertexAttribs1fvNV) GLH_INITIALIZER; | ||
452 | GLH_EXTERN PFNGLVERTEXATTRIBS1SVNVPROC GLH_EXT_NAME(glVertexAttribs1svNV) GLH_INITIALIZER; | ||
453 | GLH_EXTERN PFNGLVERTEXATTRIBS2DVNVPROC GLH_EXT_NAME(glVertexAttribs2dvNV) GLH_INITIALIZER; | ||
454 | GLH_EXTERN PFNGLVERTEXATTRIBS2FVNVPROC GLH_EXT_NAME(glVertexAttribs2fvNV) GLH_INITIALIZER; | ||
455 | GLH_EXTERN PFNGLVERTEXATTRIBS2SVNVPROC GLH_EXT_NAME(glVertexAttribs2svNV) GLH_INITIALIZER; | ||
456 | GLH_EXTERN PFNGLVERTEXATTRIBS3DVNVPROC GLH_EXT_NAME(glVertexAttribs3dvNV) GLH_INITIALIZER; | ||
457 | GLH_EXTERN PFNGLVERTEXATTRIBS3FVNVPROC GLH_EXT_NAME(glVertexAttribs3fvNV) GLH_INITIALIZER; | ||
458 | GLH_EXTERN PFNGLVERTEXATTRIBS3SVNVPROC GLH_EXT_NAME(glVertexAttribs3svNV) GLH_INITIALIZER; | ||
459 | GLH_EXTERN PFNGLVERTEXATTRIBS4DVNVPROC GLH_EXT_NAME(glVertexAttribs4dvNV) GLH_INITIALIZER; | ||
460 | GLH_EXTERN PFNGLVERTEXATTRIBS4FVNVPROC GLH_EXT_NAME(glVertexAttribs4fvNV) GLH_INITIALIZER; | ||
461 | GLH_EXTERN PFNGLVERTEXATTRIBS4SVNVPROC GLH_EXT_NAME(glVertexAttribs4svNV) GLH_INITIALIZER; | ||
462 | GLH_EXTERN PFNGLVERTEXATTRIBS4UBVNVPROC GLH_EXT_NAME(glVertexAttribs4ubvNV) GLH_INITIALIZER; | ||
463 | #endif | ||
464 | |||
465 | #ifdef GL_SGIS_generate_mipmap | ||
466 | #endif | ||
467 | |||
468 | #ifdef GL_SGIS_texture_lod | ||
469 | #endif | ||
470 | |||
471 | #ifdef GL_SGIX_depth_texture | ||
472 | #endif | ||
473 | |||
474 | #ifdef GL_SGIX_shadow | ||
475 | #endif | ||
476 | |||
477 | #ifdef GL_VERSION_1_2 | ||
478 | /* These routines are prefixed by the preprocessor constant | ||
479 | GLH_CORE_1_2_PREFIX to avoid colliding with the OpenGL 1.2 namespace. */ | ||
480 | GLH_EXTERN PFNGLBLENDCOLORPROC GLH_CORE_1_2_NAME(glBlendColor) GLH_INITIALIZER; | ||
481 | GLH_EXTERN PFNGLBLENDEQUATIONPROC GLH_CORE_1_2_NAME(glBlendEquation) GLH_INITIALIZER; | ||
482 | GLH_EXTERN PFNGLDRAWRANGEELEMENTSPROC GLH_CORE_1_2_NAME(glDrawRangeElements) GLH_INITIALIZER; | ||
483 | GLH_EXTERN PFNGLCOLORTABLEPROC GLH_CORE_1_2_NAME(glColorTable) GLH_INITIALIZER; | ||
484 | GLH_EXTERN PFNGLCOLORTABLEPARAMETERFVPROC GLH_CORE_1_2_NAME(glColorTableParameterfv) GLH_INITIALIZER; | ||
485 | GLH_EXTERN PFNGLCOLORTABLEPARAMETERIVPROC GLH_CORE_1_2_NAME(glColorTableParameteriv) GLH_INITIALIZER; | ||
486 | GLH_EXTERN PFNGLCOPYCOLORTABLEPROC GLH_CORE_1_2_NAME(glCopyColorTable) GLH_INITIALIZER; | ||
487 | GLH_EXTERN PFNGLGETCOLORTABLEPROC GLH_CORE_1_2_NAME(glGetColorTable) GLH_INITIALIZER; | ||
488 | GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERFVPROC GLH_CORE_1_2_NAME(glGetColorTableParameterfv) GLH_INITIALIZER; | ||
489 | GLH_EXTERN PFNGLGETCOLORTABLEPARAMETERIVPROC GLH_CORE_1_2_NAME(glGetColorTableParameteriv) GLH_INITIALIZER; | ||
490 | GLH_EXTERN PFNGLTEXIMAGE3DPROC GLH_CORE_1_2_NAME(glTexImage3D) GLH_INITIALIZER; | ||
491 | GLH_EXTERN PFNGLTEXSUBIMAGE3DPROC GLH_CORE_1_2_NAME(glTexSubImage3D) GLH_INITIALIZER; | ||
492 | GLH_EXTERN PFNGLCOPYTEXSUBIMAGE3DPROC GLH_CORE_1_2_NAME(glCopyTexSubImage3D) GLH_INITIALIZER; | ||
493 | #endif | ||
494 | |||
495 | #ifdef GL_WIN_swap_hint | ||
496 | GLH_EXTERN PFNGLADDSWAPHINTRECTWINPROC GLH_EXT_NAME(glAddSwapHintRectWIN) GLH_INITIALIZER; | ||
497 | #endif | ||
498 | |||
499 | #ifdef WGL_ARB_pbuffer | ||
500 | # ifdef _WIN32 | ||
501 | GLH_EXTERN PFNWGLCREATEPBUFFERARBPROC GLH_EXT_NAME(wglCreatePbufferARB) GLH_INITIALIZER; | ||
502 | # endif | ||
503 | # ifdef _WIN32 | ||
504 | GLH_EXTERN PFNWGLGETPBUFFERDCARBPROC GLH_EXT_NAME(wglGetPbufferDCARB) GLH_INITIALIZER; | ||
505 | # endif | ||
506 | # ifdef _WIN32 | ||
507 | GLH_EXTERN PFNWGLRELEASEPBUFFERDCARBPROC GLH_EXT_NAME(wglReleasePbufferDCARB) GLH_INITIALIZER; | ||
508 | # endif | ||
509 | # ifdef _WIN32 | ||
510 | GLH_EXTERN PFNWGLDESTROYPBUFFERARBPROC GLH_EXT_NAME(wglDestroyPbufferARB) GLH_INITIALIZER; | ||
511 | # endif | ||
512 | # ifdef _WIN32 | ||
513 | GLH_EXTERN PFNWGLQUERYPBUFFERARBPROC GLH_EXT_NAME(wglQueryPbufferARB) GLH_INITIALIZER; | ||
514 | # endif | ||
515 | #endif | ||
516 | |||
517 | #ifdef WGL_ARB_render_texture | ||
518 | # ifdef _WIN32 | ||
519 | GLH_EXTERN PFNWGLBINDTEXIMAGEARBPROC GLH_EXT_NAME(wglBindTexImageARB) GLH_INITIALIZER; | ||
520 | # endif | ||
521 | # ifdef _WIN32 | ||
522 | GLH_EXTERN PFNWGLRELEASETEXIMAGEARBPROC GLH_EXT_NAME(wglReleaseTexImageARB) GLH_INITIALIZER; | ||
523 | # endif | ||
524 | # ifdef _WIN32 | ||
525 | GLH_EXTERN PFNWGLSETPBUFFERATTRIBARBPROC GLH_EXT_NAME(wglSetPbufferAttribARB) GLH_INITIALIZER; | ||
526 | # endif | ||
527 | #endif | ||
528 | |||
529 | #ifdef WGL_ARB_pixel_format | ||
530 | # ifdef _WIN32 | ||
531 | GLH_EXTERN PFNWGLGETPIXELFORMATATTRIBIVARBPROC GLH_EXT_NAME(wglGetPixelFormatAttribivARB) GLH_INITIALIZER; | ||
532 | # endif | ||
533 | # ifdef _WIN32 | ||
534 | GLH_EXTERN PFNWGLGETPIXELFORMATATTRIBFVARBPROC GLH_EXT_NAME(wglGetPixelFormatAttribfvARB) GLH_INITIALIZER; | ||
535 | # endif | ||
536 | # ifdef _WIN32 | ||
537 | GLH_EXTERN PFNWGLCHOOSEPIXELFORMATARBPROC GLH_EXT_NAME(wglChoosePixelFormatARB) GLH_INITIALIZER; | ||
538 | # endif | ||
539 | #endif | ||
540 | |||
541 | |||
542 | #ifdef GLH_EXT_SINGLE_FILE | ||
543 | |||
544 | int glh_init_extension(const char* extension) | ||
545 | { | ||
546 | if (NULL == extension) { | ||
547 | return FALSE; | ||
548 | #ifdef GL_ARB_multitexture | ||
549 | } else if (0 == strcmp(extension, "GL_ARB_multitexture")) { | ||
550 | GLH_EXT_NAME(glMultiTexCoord1dARB) = (PFNGLMULTITEXCOORD1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1dARB"); | ||
551 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1dARB)) | ||
552 | return FALSE; | ||
553 | GLH_EXT_NAME(glMultiTexCoord1dvARB) = (PFNGLMULTITEXCOORD1DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1dvARB"); | ||
554 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1dvARB)) | ||
555 | return FALSE; | ||
556 | GLH_EXT_NAME(glMultiTexCoord1fARB) = (PFNGLMULTITEXCOORD1FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1fARB"); | ||
557 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1fARB)) | ||
558 | return FALSE; | ||
559 | GLH_EXT_NAME(glMultiTexCoord1fvARB) = (PFNGLMULTITEXCOORD1FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1fvARB"); | ||
560 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1fvARB)) | ||
561 | return FALSE; | ||
562 | GLH_EXT_NAME(glMultiTexCoord1iARB) = (PFNGLMULTITEXCOORD1IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1iARB"); | ||
563 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1iARB)) | ||
564 | return FALSE; | ||
565 | GLH_EXT_NAME(glMultiTexCoord1ivARB) = (PFNGLMULTITEXCOORD1IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1ivARB"); | ||
566 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1ivARB)) | ||
567 | return FALSE; | ||
568 | GLH_EXT_NAME(glMultiTexCoord1sARB) = (PFNGLMULTITEXCOORD1SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1sARB"); | ||
569 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1sARB)) | ||
570 | return FALSE; | ||
571 | GLH_EXT_NAME(glMultiTexCoord1svARB) = (PFNGLMULTITEXCOORD1SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord1svARB"); | ||
572 | if (NULL == GLH_EXT_NAME(glMultiTexCoord1svARB)) | ||
573 | return FALSE; | ||
574 | GLH_EXT_NAME(glMultiTexCoord2dARB) = (PFNGLMULTITEXCOORD2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2dARB"); | ||
575 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2dARB)) | ||
576 | return FALSE; | ||
577 | GLH_EXT_NAME(glMultiTexCoord2dvARB) = (PFNGLMULTITEXCOORD2DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2dvARB"); | ||
578 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2dvARB)) | ||
579 | return FALSE; | ||
580 | GLH_EXT_NAME(glMultiTexCoord2fARB) = (PFNGLMULTITEXCOORD2FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2fARB"); | ||
581 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2fARB)) | ||
582 | return FALSE; | ||
583 | GLH_EXT_NAME(glMultiTexCoord2fvARB) = (PFNGLMULTITEXCOORD2FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2fvARB"); | ||
584 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2fvARB)) | ||
585 | return FALSE; | ||
586 | GLH_EXT_NAME(glMultiTexCoord2iARB) = (PFNGLMULTITEXCOORD2IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2iARB"); | ||
587 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2iARB)) | ||
588 | return FALSE; | ||
589 | GLH_EXT_NAME(glMultiTexCoord2ivARB) = (PFNGLMULTITEXCOORD2IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2ivARB"); | ||
590 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2ivARB)) | ||
591 | return FALSE; | ||
592 | GLH_EXT_NAME(glMultiTexCoord2sARB) = (PFNGLMULTITEXCOORD2SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2sARB"); | ||
593 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2sARB)) | ||
594 | return FALSE; | ||
595 | GLH_EXT_NAME(glMultiTexCoord2svARB) = (PFNGLMULTITEXCOORD2SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord2svARB"); | ||
596 | if (NULL == GLH_EXT_NAME(glMultiTexCoord2svARB)) | ||
597 | return FALSE; | ||
598 | GLH_EXT_NAME(glMultiTexCoord3dARB) = (PFNGLMULTITEXCOORD3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3dARB"); | ||
599 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3dARB)) | ||
600 | return FALSE; | ||
601 | GLH_EXT_NAME(glMultiTexCoord3dvARB) = (PFNGLMULTITEXCOORD3DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3dvARB"); | ||
602 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3dvARB)) | ||
603 | return FALSE; | ||
604 | GLH_EXT_NAME(glMultiTexCoord3fARB) = (PFNGLMULTITEXCOORD3FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3fARB"); | ||
605 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3fARB)) | ||
606 | return FALSE; | ||
607 | GLH_EXT_NAME(glMultiTexCoord3fvARB) = (PFNGLMULTITEXCOORD3FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3fvARB"); | ||
608 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3fvARB)) | ||
609 | return FALSE; | ||
610 | GLH_EXT_NAME(glMultiTexCoord3iARB) = (PFNGLMULTITEXCOORD3IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3iARB"); | ||
611 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3iARB)) | ||
612 | return FALSE; | ||
613 | GLH_EXT_NAME(glMultiTexCoord3ivARB) = (PFNGLMULTITEXCOORD3IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3ivARB"); | ||
614 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3ivARB)) | ||
615 | return FALSE; | ||
616 | GLH_EXT_NAME(glMultiTexCoord3sARB) = (PFNGLMULTITEXCOORD3SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3sARB"); | ||
617 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3sARB)) | ||
618 | return FALSE; | ||
619 | GLH_EXT_NAME(glMultiTexCoord3svARB) = (PFNGLMULTITEXCOORD3SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord3svARB"); | ||
620 | if (NULL == GLH_EXT_NAME(glMultiTexCoord3svARB)) | ||
621 | return FALSE; | ||
622 | GLH_EXT_NAME(glMultiTexCoord4dARB) = (PFNGLMULTITEXCOORD4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4dARB"); | ||
623 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4dARB)) | ||
624 | return FALSE; | ||
625 | GLH_EXT_NAME(glMultiTexCoord4dvARB) = (PFNGLMULTITEXCOORD4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4dvARB"); | ||
626 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4dvARB)) | ||
627 | return FALSE; | ||
628 | GLH_EXT_NAME(glMultiTexCoord4fARB) = (PFNGLMULTITEXCOORD4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4fARB"); | ||
629 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4fARB)) | ||
630 | return FALSE; | ||
631 | GLH_EXT_NAME(glMultiTexCoord4fvARB) = (PFNGLMULTITEXCOORD4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4fvARB"); | ||
632 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4fvARB)) | ||
633 | return FALSE; | ||
634 | GLH_EXT_NAME(glMultiTexCoord4iARB) = (PFNGLMULTITEXCOORD4IARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4iARB"); | ||
635 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4iARB)) | ||
636 | return FALSE; | ||
637 | GLH_EXT_NAME(glMultiTexCoord4ivARB) = (PFNGLMULTITEXCOORD4IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4ivARB"); | ||
638 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4ivARB)) | ||
639 | return FALSE; | ||
640 | GLH_EXT_NAME(glMultiTexCoord4sARB) = (PFNGLMULTITEXCOORD4SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4sARB"); | ||
641 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4sARB)) | ||
642 | return FALSE; | ||
643 | GLH_EXT_NAME(glMultiTexCoord4svARB) = (PFNGLMULTITEXCOORD4SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultiTexCoord4svARB"); | ||
644 | if (NULL == GLH_EXT_NAME(glMultiTexCoord4svARB)) | ||
645 | return FALSE; | ||
646 | GLH_EXT_NAME(glActiveTextureARB) = (PFNGLACTIVETEXTUREARBPROC)GLH_EXT_GET_PROC_ADDRESS("glActiveTextureARB"); | ||
647 | if (NULL == GLH_EXT_NAME(glActiveTextureARB)) | ||
648 | return FALSE; | ||
649 | GLH_EXT_NAME(glClientActiveTextureARB) = (PFNGLCLIENTACTIVETEXTUREARBPROC)GLH_EXT_GET_PROC_ADDRESS("glClientActiveTextureARB"); | ||
650 | if (NULL == GLH_EXT_NAME(glClientActiveTextureARB)) | ||
651 | return FALSE; | ||
652 | #endif | ||
653 | |||
654 | #ifdef GL_ARB_texture_border_clamp | ||
655 | } else if (0 == strcmp(extension, "GL_ARB_texture_border_clamp")) { | ||
656 | #endif | ||
657 | |||
658 | #ifdef GL_ARB_texture_compression | ||
659 | } else if (0 == strcmp(extension, "GL_ARB_texture_compression")) { | ||
660 | GLH_EXT_NAME(glCompressedTexImage3DARB) = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage3DARB"); | ||
661 | if (NULL == GLH_EXT_NAME(glCompressedTexImage3DARB)) | ||
662 | return FALSE; | ||
663 | GLH_EXT_NAME(glCompressedTexImage2DARB) = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage2DARB"); | ||
664 | if (NULL == GLH_EXT_NAME(glCompressedTexImage2DARB)) | ||
665 | return FALSE; | ||
666 | GLH_EXT_NAME(glCompressedTexImage1DARB) = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexImage1DARB"); | ||
667 | if (NULL == GLH_EXT_NAME(glCompressedTexImage1DARB)) | ||
668 | return FALSE; | ||
669 | GLH_EXT_NAME(glCompressedTexSubImage3DARB) = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage3DARB"); | ||
670 | if (NULL == GLH_EXT_NAME(glCompressedTexSubImage3DARB)) | ||
671 | return FALSE; | ||
672 | GLH_EXT_NAME(glCompressedTexSubImage2DARB) = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage2DARB"); | ||
673 | if (NULL == GLH_EXT_NAME(glCompressedTexSubImage2DARB)) | ||
674 | return FALSE; | ||
675 | GLH_EXT_NAME(glCompressedTexSubImage1DARB) = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glCompressedTexSubImage1DARB"); | ||
676 | if (NULL == GLH_EXT_NAME(glCompressedTexSubImage1DARB)) | ||
677 | return FALSE; | ||
678 | GLH_EXT_NAME(glGetCompressedTexImageARB) = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCompressedTexImageARB"); | ||
679 | if (NULL == GLH_EXT_NAME(glGetCompressedTexImageARB)) | ||
680 | return FALSE; | ||
681 | #endif | ||
682 | |||
683 | #ifdef GL_ARB_texture_cube_map | ||
684 | } else if (0 == strcmp(extension, "GL_ARB_texture_cube_map")) { | ||
685 | #endif | ||
686 | |||
687 | #ifdef GL_ARB_transpose_matrix | ||
688 | } else if (0 == strcmp(extension, "GL_ARB_transpose_matrix")) { | ||
689 | GLH_EXT_NAME(glLoadTransposeMatrixfARB) = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadTransposeMatrixfARB"); | ||
690 | if (NULL == GLH_EXT_NAME(glLoadTransposeMatrixfARB)) | ||
691 | return FALSE; | ||
692 | GLH_EXT_NAME(glLoadTransposeMatrixdARB) = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadTransposeMatrixdARB"); | ||
693 | if (NULL == GLH_EXT_NAME(glLoadTransposeMatrixdARB)) | ||
694 | return FALSE; | ||
695 | GLH_EXT_NAME(glMultTransposeMatrixfARB) = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultTransposeMatrixfARB"); | ||
696 | if (NULL == GLH_EXT_NAME(glMultTransposeMatrixfARB)) | ||
697 | return FALSE; | ||
698 | GLH_EXT_NAME(glMultTransposeMatrixdARB) = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMultTransposeMatrixdARB"); | ||
699 | if (NULL == GLH_EXT_NAME(glMultTransposeMatrixdARB)) | ||
700 | return FALSE; | ||
701 | #endif | ||
702 | |||
703 | #ifdef GL_ARB_vertex_program | ||
704 | } else if (0 == strcmp(extension, "GL_ARB_vertex_program")) { | ||
705 | GLH_EXT_NAME(glVertexAttrib1sARB) = (PFNGLVERTEXATTRIB1SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sARB"); | ||
706 | if (NULL == GLH_EXT_NAME(glVertexAttrib1sARB)) | ||
707 | return GL_FALSE; | ||
708 | GLH_EXT_NAME(glVertexAttrib1fARB) = (PFNGLVERTEXATTRIB1FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fARB"); | ||
709 | if (NULL == GLH_EXT_NAME(glVertexAttrib1fARB)) | ||
710 | return GL_FALSE; | ||
711 | GLH_EXT_NAME(glVertexAttrib1dARB) = (PFNGLVERTEXATTRIB1DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dARB"); | ||
712 | if (NULL == GLH_EXT_NAME(glVertexAttrib1dARB)) | ||
713 | return GL_FALSE; | ||
714 | GLH_EXT_NAME(glVertexAttrib2sARB) = (PFNGLVERTEXATTRIB2SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sARB"); | ||
715 | if (NULL == GLH_EXT_NAME(glVertexAttrib2sARB)) | ||
716 | return GL_FALSE; | ||
717 | GLH_EXT_NAME(glVertexAttrib2fARB) = (PFNGLVERTEXATTRIB2FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fARB"); | ||
718 | if (NULL == GLH_EXT_NAME(glVertexAttrib2fARB)) | ||
719 | return GL_FALSE; | ||
720 | GLH_EXT_NAME(glVertexAttrib2dARB) = (PFNGLVERTEXATTRIB2DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dARB"); | ||
721 | if (NULL == GLH_EXT_NAME(glVertexAttrib2dARB)) | ||
722 | return GL_FALSE; | ||
723 | GLH_EXT_NAME(glVertexAttrib3sARB) = (PFNGLVERTEXATTRIB3SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sARB"); | ||
724 | if (NULL == GLH_EXT_NAME(glVertexAttrib3sARB)) | ||
725 | return GL_FALSE; | ||
726 | GLH_EXT_NAME(glVertexAttrib3fARB) = (PFNGLVERTEXATTRIB3FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fARB"); | ||
727 | if (NULL == GLH_EXT_NAME(glVertexAttrib3fARB)) | ||
728 | return GL_FALSE; | ||
729 | GLH_EXT_NAME(glVertexAttrib3dARB) = (PFNGLVERTEXATTRIB3DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dARB"); | ||
730 | if (NULL == GLH_EXT_NAME(glVertexAttrib3dARB)) | ||
731 | return GL_FALSE; | ||
732 | GLH_EXT_NAME(glVertexAttrib4sARB) = (PFNGLVERTEXATTRIB4SARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sARB"); | ||
733 | if (NULL == GLH_EXT_NAME(glVertexAttrib4sARB)) | ||
734 | return GL_FALSE; | ||
735 | GLH_EXT_NAME(glVertexAttrib4fARB) = (PFNGLVERTEXATTRIB4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fARB"); | ||
736 | if (NULL == GLH_EXT_NAME(glVertexAttrib4fARB)) | ||
737 | return GL_FALSE; | ||
738 | GLH_EXT_NAME(glVertexAttrib4dARB) = (PFNGLVERTEXATTRIB4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dARB"); | ||
739 | if (NULL == GLH_EXT_NAME(glVertexAttrib4dARB)) | ||
740 | return GL_FALSE; | ||
741 | GLH_EXT_NAME(glVertexAttrib4NubARB) = (PFNGLVERTEXATTRIB4NUBARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NubARB"); | ||
742 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NubARB)) | ||
743 | return GL_FALSE; | ||
744 | GLH_EXT_NAME(glVertexAttrib1svARB) = (PFNGLVERTEXATTRIB1SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1svARB"); | ||
745 | if (NULL == GLH_EXT_NAME(glVertexAttrib1svARB)) | ||
746 | return GL_FALSE; | ||
747 | GLH_EXT_NAME(glVertexAttrib1fvARB) = (PFNGLVERTEXATTRIB1FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fvARB"); | ||
748 | if (NULL == GLH_EXT_NAME(glVertexAttrib1fvARB)) | ||
749 | return GL_FALSE; | ||
750 | GLH_EXT_NAME(glVertexAttrib1dvARB) = (PFNGLVERTEXATTRIB1DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dvARB"); | ||
751 | if (NULL == GLH_EXT_NAME(glVertexAttrib1dvARB)) | ||
752 | return GL_FALSE; | ||
753 | GLH_EXT_NAME(glVertexAttrib2svARB) = (PFNGLVERTEXATTRIB2SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2svARB"); | ||
754 | if (NULL == GLH_EXT_NAME(glVertexAttrib2svARB)) | ||
755 | return GL_FALSE; | ||
756 | GLH_EXT_NAME(glVertexAttrib2fvARB) = (PFNGLVERTEXATTRIB2FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fvARB"); | ||
757 | if (NULL == GLH_EXT_NAME(glVertexAttrib2fvARB)) | ||
758 | return GL_FALSE; | ||
759 | GLH_EXT_NAME(glVertexAttrib2dvARB) = (PFNGLVERTEXATTRIB2DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dvARB"); | ||
760 | if (NULL == GLH_EXT_NAME(glVertexAttrib2dvARB)) | ||
761 | return GL_FALSE; | ||
762 | GLH_EXT_NAME(glVertexAttrib3svARB) = (PFNGLVERTEXATTRIB3SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3svARB"); | ||
763 | if (NULL == GLH_EXT_NAME(glVertexAttrib3svARB)) | ||
764 | return GL_FALSE; | ||
765 | GLH_EXT_NAME(glVertexAttrib3fvARB) = (PFNGLVERTEXATTRIB3FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fvARB"); | ||
766 | if (NULL == GLH_EXT_NAME(glVertexAttrib3fvARB)) | ||
767 | return GL_FALSE; | ||
768 | GLH_EXT_NAME(glVertexAttrib3dvARB) = (PFNGLVERTEXATTRIB3DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dvARB"); | ||
769 | if (NULL == GLH_EXT_NAME(glVertexAttrib3dvARB)) | ||
770 | return GL_FALSE; | ||
771 | GLH_EXT_NAME(glVertexAttrib4bvARB) = (PFNGLVERTEXATTRIB4BVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4bvARB"); | ||
772 | if (NULL == GLH_EXT_NAME(glVertexAttrib4bvARB)) | ||
773 | return GL_FALSE; | ||
774 | GLH_EXT_NAME(glVertexAttrib4svARB) = (PFNGLVERTEXATTRIB4SVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4svARB"); | ||
775 | if (NULL == GLH_EXT_NAME(glVertexAttrib4svARB)) | ||
776 | return GL_FALSE; | ||
777 | GLH_EXT_NAME(glVertexAttrib4ivARB) = (PFNGLVERTEXATTRIB4IVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ivARB"); | ||
778 | if (NULL == GLH_EXT_NAME(glVertexAttrib4ivARB)) | ||
779 | return GL_FALSE; | ||
780 | GLH_EXT_NAME(glVertexAttrib4ubvARB) = (PFNGLVERTEXATTRIB4UBVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubvARB"); | ||
781 | if (NULL == GLH_EXT_NAME(glVertexAttrib4ubvARB)) | ||
782 | return GL_FALSE; | ||
783 | GLH_EXT_NAME(glVertexAttrib4usvARB) = (PFNGLVERTEXATTRIB4USVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4usvARB"); | ||
784 | if (NULL == GLH_EXT_NAME(glVertexAttrib4usvARB)) | ||
785 | return GL_FALSE; | ||
786 | GLH_EXT_NAME(glVertexAttrib4uivARB) = (PFNGLVERTEXATTRIB4UIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4uivARB"); | ||
787 | if (NULL == GLH_EXT_NAME(glVertexAttrib4uivARB)) | ||
788 | return GL_FALSE; | ||
789 | GLH_EXT_NAME(glVertexAttrib4fvARB) = (PFNGLVERTEXATTRIB4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fvARB"); | ||
790 | if (NULL == GLH_EXT_NAME(glVertexAttrib4fvARB)) | ||
791 | return GL_FALSE; | ||
792 | GLH_EXT_NAME(glVertexAttrib4dvARB) = (PFNGLVERTEXATTRIB4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dvARB"); | ||
793 | if (NULL == GLH_EXT_NAME(glVertexAttrib4dvARB)) | ||
794 | return GL_FALSE; | ||
795 | GLH_EXT_NAME(glVertexAttrib4NbvARB) = (PFNGLVERTEXATTRIB4NBVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NbvARB"); | ||
796 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NbvARB)) | ||
797 | return GL_FALSE; | ||
798 | GLH_EXT_NAME(glVertexAttrib4NsvARB) = (PFNGLVERTEXATTRIB4NSVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NsvARB"); | ||
799 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NsvARB)) | ||
800 | return GL_FALSE; | ||
801 | GLH_EXT_NAME(glVertexAttrib4NivARB) = (PFNGLVERTEXATTRIB4NIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NivARB"); | ||
802 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NivARB)) | ||
803 | return GL_FALSE; | ||
804 | GLH_EXT_NAME(glVertexAttrib4NubvARB) = (PFNGLVERTEXATTRIB4NUBVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NubvARB"); | ||
805 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NubvARB)) | ||
806 | return GL_FALSE; | ||
807 | GLH_EXT_NAME(glVertexAttrib4NusvARB) = (PFNGLVERTEXATTRIB4NUSVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NusvARB"); | ||
808 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NusvARB)) | ||
809 | return GL_FALSE; | ||
810 | GLH_EXT_NAME(glVertexAttrib4NuivARB) = (PFNGLVERTEXATTRIB4NUIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4NuivARB"); | ||
811 | if (NULL == GLH_EXT_NAME(glVertexAttrib4NuivARB)) | ||
812 | return GL_FALSE; | ||
813 | GLH_EXT_NAME(glVertexAttribPointerARB) = (PFNGLVERTEXATTRIBPOINTERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointerARB"); | ||
814 | if (NULL == GLH_EXT_NAME(glVertexAttribPointerARB)) | ||
815 | return GL_FALSE; | ||
816 | GLH_EXT_NAME(glEnableVertexAttribArrayARB) = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glEnableVertexAttribArrayARB"); | ||
817 | if (NULL == GLH_EXT_NAME(glEnableVertexAttribArrayARB)) | ||
818 | return GL_FALSE; | ||
819 | GLH_EXT_NAME(glDisableVertexAttribArrayARB) = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDisableVertexAttribArrayARB"); | ||
820 | if (NULL == GLH_EXT_NAME(glDisableVertexAttribArrayARB)) | ||
821 | return GL_FALSE; | ||
822 | GLH_EXT_NAME(glProgramStringARB) = (PFNGLPROGRAMSTRINGARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramStringARB"); | ||
823 | if (NULL == GLH_EXT_NAME(glProgramStringARB)) | ||
824 | return GL_FALSE; | ||
825 | GLH_EXT_NAME(glBindProgramARB) = (PFNGLBINDPROGRAMARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBindProgramARB"); | ||
826 | if (NULL == GLH_EXT_NAME(glBindProgramARB)) | ||
827 | return GL_FALSE; | ||
828 | GLH_EXT_NAME(glDeleteProgramsARB) = (PFNGLDELETEPROGRAMSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramsARB"); | ||
829 | if (NULL == GLH_EXT_NAME(glDeleteProgramsARB)) | ||
830 | return GL_FALSE; | ||
831 | GLH_EXT_NAME(glGenProgramsARB) = (PFNGLGENPROGRAMSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenProgramsARB"); | ||
832 | if (NULL == GLH_EXT_NAME(glGenProgramsARB)) | ||
833 | return GL_FALSE; | ||
834 | GLH_EXT_NAME(glProgramEnvParameter4dARB) = (PFNGLPROGRAMENVPARAMETER4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dARB"); | ||
835 | if (NULL == GLH_EXT_NAME(glProgramEnvParameter4dARB)) | ||
836 | return GL_FALSE; | ||
837 | GLH_EXT_NAME(glProgramEnvParameter4dvARB) = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dvARB"); | ||
838 | if (NULL == GLH_EXT_NAME(glProgramEnvParameter4dvARB)) | ||
839 | return GL_FALSE; | ||
840 | GLH_EXT_NAME(glProgramEnvParameter4fARB) = (PFNGLPROGRAMENVPARAMETER4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fARB"); | ||
841 | if (NULL == GLH_EXT_NAME(glProgramEnvParameter4fARB)) | ||
842 | return GL_FALSE; | ||
843 | GLH_EXT_NAME(glProgramEnvParameter4fvARB) = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fvARB"); | ||
844 | if (NULL == GLH_EXT_NAME(glProgramEnvParameter4fvARB)) | ||
845 | return GL_FALSE; | ||
846 | GLH_EXT_NAME(glProgramLocalParameter4dARB) = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dARB"); | ||
847 | if (NULL == GLH_EXT_NAME(glProgramLocalParameter4dARB)) | ||
848 | return GL_FALSE; | ||
849 | GLH_EXT_NAME(glProgramLocalParameter4dvARB) = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dvARB"); | ||
850 | if (NULL == GLH_EXT_NAME(glProgramLocalParameter4dvARB)) | ||
851 | return GL_FALSE; | ||
852 | GLH_EXT_NAME(glProgramLocalParameter4fARB) = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fARB"); | ||
853 | if (NULL == GLH_EXT_NAME(glProgramLocalParameter4fARB)) | ||
854 | return GL_FALSE; | ||
855 | GLH_EXT_NAME(glProgramLocalParameter4fvARB) = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fvARB"); | ||
856 | if (NULL == GLH_EXT_NAME(glProgramLocalParameter4fvARB)) | ||
857 | return GL_FALSE; | ||
858 | GLH_EXT_NAME(glGetProgramEnvParameterdvARB) = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterdvARB"); | ||
859 | if (NULL == GLH_EXT_NAME(glGetProgramEnvParameterdvARB)) | ||
860 | return GL_FALSE; | ||
861 | GLH_EXT_NAME(glGetProgramEnvParameterfvARB) = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterfvARB"); | ||
862 | if (NULL == GLH_EXT_NAME(glGetProgramEnvParameterfvARB)) | ||
863 | return GL_FALSE; | ||
864 | GLH_EXT_NAME(glGetProgramLocalParameterdvARB) = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterdvARB"); | ||
865 | if (NULL == GLH_EXT_NAME(glGetProgramLocalParameterdvARB)) | ||
866 | return GL_FALSE; | ||
867 | GLH_EXT_NAME(glGetProgramLocalParameterfvARB) = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterfvARB"); | ||
868 | if (NULL == GLH_EXT_NAME(glGetProgramLocalParameterfvARB)) | ||
869 | return GL_FALSE; | ||
870 | GLH_EXT_NAME(glGetProgramivARB) = (PFNGLGETPROGRAMIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramivARB"); | ||
871 | if (NULL == GLH_EXT_NAME(glGetProgramivARB)) | ||
872 | return GL_FALSE; | ||
873 | GLH_EXT_NAME(glGetProgramStringARB) = (PFNGLGETPROGRAMSTRINGARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramStringARB"); | ||
874 | if (NULL == GLH_EXT_NAME(glGetProgramStringARB)) | ||
875 | return GL_FALSE; | ||
876 | GLH_EXT_NAME(glGetVertexAttribdvARB) = (PFNGLGETVERTEXATTRIBDVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdvARB"); | ||
877 | if (NULL == GLH_EXT_NAME(glGetVertexAttribdvARB)) | ||
878 | return GL_FALSE; | ||
879 | GLH_EXT_NAME(glGetVertexAttribfvARB) = (PFNGLGETVERTEXATTRIBFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfvARB"); | ||
880 | if (NULL == GLH_EXT_NAME(glGetVertexAttribfvARB)) | ||
881 | return GL_FALSE; | ||
882 | GLH_EXT_NAME(glGetVertexAttribivARB) = (PFNGLGETVERTEXATTRIBIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribivARB"); | ||
883 | if (NULL == GLH_EXT_NAME(glGetVertexAttribivARB)) | ||
884 | return GL_FALSE; | ||
885 | GLH_EXT_NAME(glGetVertexAttribPointervARB) = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribPointervARB"); | ||
886 | if (NULL == GLH_EXT_NAME(glGetVertexAttribPointervARB)) | ||
887 | return GL_FALSE; | ||
888 | GLH_EXT_NAME(glIsProgramARB) = (PFNGLISPROGRAMARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsProgramARB"); | ||
889 | if (NULL == GLH_EXT_NAME(glIsProgramARB)) | ||
890 | return GL_FALSE; | ||
891 | #endif | ||
892 | |||
893 | #ifdef GL_EXT_abgr | ||
894 | } else if (0 == strcmp(extension, "GL_EXT_abgr")) { | ||
895 | #endif | ||
896 | |||
897 | #ifdef GL_EXT_bgra | ||
898 | } else if (0 == strcmp(extension, "GL_EXT_bgra")) { | ||
899 | #endif | ||
900 | |||
901 | #ifdef GL_EXT_blend_color | ||
902 | } else if (0 == strcmp(extension, "GL_EXT_blend_color")) { | ||
903 | GLH_EXT_NAME(glBlendColorEXT) = (PFNGLBLENDCOLOREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendColorEXT"); | ||
904 | if (NULL == GLH_EXT_NAME(glBlendColorEXT)) | ||
905 | return FALSE; | ||
906 | #endif | ||
907 | |||
908 | #ifdef GL_EXT_blend_minmax | ||
909 | } else if (0 == strcmp(extension, "GL_EXT_blend_minmax")) { | ||
910 | GLH_EXT_NAME(glBlendEquationEXT) = (PFNGLBLENDEQUATIONEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquationEXT"); | ||
911 | if (NULL == GLH_EXT_NAME(glBlendEquationEXT)) | ||
912 | return FALSE; | ||
913 | #endif | ||
914 | |||
915 | #ifdef GL_EXT_blend_subtract | ||
916 | } else if (0 == strcmp(extension, "GL_EXT_blend_subtract")) { | ||
917 | #endif | ||
918 | |||
919 | #ifdef GL_EXT_compiled_vertex_array | ||
920 | } else if (0 == strcmp(extension, "GL_EXT_compiled_vertex_array")) { | ||
921 | GLH_EXT_NAME(glLockArraysEXT) = (PFNGLLOCKARRAYSEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glLockArraysEXT"); | ||
922 | if (NULL == GLH_EXT_NAME(glLockArraysEXT)) | ||
923 | return FALSE; | ||
924 | GLH_EXT_NAME(glUnlockArraysEXT) = (PFNGLUNLOCKARRAYSEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glUnlockArraysEXT"); | ||
925 | if (NULL == GLH_EXT_NAME(glUnlockArraysEXT)) | ||
926 | return FALSE; | ||
927 | #endif | ||
928 | |||
929 | #ifdef GL_EXT_fog_coord | ||
930 | } else if (0 == strcmp(extension, "GL_EXT_fog_coord")) { | ||
931 | GLH_EXT_NAME(glFogCoorddEXT) = (PFNGLFOGCOORDDEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoorddEXT"); | ||
932 | if (NULL == GLH_EXT_NAME(glFogCoorddEXT)) | ||
933 | return FALSE; | ||
934 | GLH_EXT_NAME(glFogCoorddvEXT) = (PFNGLFOGCOORDDVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoorddvEXT"); | ||
935 | if (NULL == GLH_EXT_NAME(glFogCoorddvEXT)) | ||
936 | return FALSE; | ||
937 | GLH_EXT_NAME(glFogCoordfEXT) = (PFNGLFOGCOORDFEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordfEXT"); | ||
938 | if (NULL == GLH_EXT_NAME(glFogCoordfEXT)) | ||
939 | return FALSE; | ||
940 | GLH_EXT_NAME(glFogCoordfvEXT) = (PFNGLFOGCOORDFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordfvEXT"); | ||
941 | if (NULL == GLH_EXT_NAME(glFogCoordfvEXT)) | ||
942 | return FALSE; | ||
943 | GLH_EXT_NAME(glFogCoordPointerEXT) = (PFNGLFOGCOORDPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glFogCoordPointerEXT"); | ||
944 | if (NULL == GLH_EXT_NAME(glFogCoordPointerEXT)) | ||
945 | return FALSE; | ||
946 | #endif | ||
947 | |||
948 | #ifdef GL_EXT_light_max_exponent | ||
949 | } else if (0 == strcmp(extension, "GL_EXT_light_max_exponent")) { | ||
950 | #endif | ||
951 | |||
952 | #ifdef GL_EXT_packed_pixels | ||
953 | } else if (0 == strcmp(extension, "GL_EXT_packed_pixels")) { | ||
954 | #endif | ||
955 | |||
956 | #ifdef GL_EXT_paletted_texture | ||
957 | } else if (0 == strcmp(extension, "GL_EXT_paletted_texture")) { | ||
958 | GLH_EXT_NAME(glColorSubTableEXT) = (PFNGLCOLORSUBTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorSubTableEXT"); | ||
959 | if (NULL == GLH_EXT_NAME(glColorSubTableEXT)) | ||
960 | return FALSE; | ||
961 | GLH_EXT_NAME(glColorTableEXT) = (PFNGLCOLORTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableEXT"); | ||
962 | if (NULL == GLH_EXT_NAME(glColorTableEXT)) | ||
963 | return FALSE; | ||
964 | GLH_EXT_NAME(glGetColorTableEXT) = (PFNGLGETCOLORTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableEXT"); | ||
965 | if (NULL == GLH_EXT_NAME(glGetColorTableEXT)) | ||
966 | return FALSE; | ||
967 | GLH_EXT_NAME(glGetColorTableParameterfvEXT) = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameterfvEXT"); | ||
968 | if (NULL == GLH_EXT_NAME(glGetColorTableParameterfvEXT)) | ||
969 | return FALSE; | ||
970 | GLH_EXT_NAME(glGetColorTableParameterivEXT) = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameterivEXT"); | ||
971 | if (NULL == GLH_EXT_NAME(glGetColorTableParameterivEXT)) | ||
972 | return FALSE; | ||
973 | #endif | ||
974 | |||
975 | #ifdef GL_EXT_point_parameters | ||
976 | } else if (0 == strcmp(extension, "GL_EXT_point_parameters")) { | ||
977 | GLH_EXT_NAME(glPointParameterfEXT) = (PFNGLPOINTPARAMETERFEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfEXT"); | ||
978 | if (NULL == GLH_EXT_NAME(glPointParameterfEXT)) | ||
979 | return FALSE; | ||
980 | GLH_EXT_NAME(glPointParameterfvEXT) = (PFNGLPOINTPARAMETERFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfvEXT"); | ||
981 | if (NULL == GLH_EXT_NAME(glPointParameterfvEXT)) | ||
982 | return FALSE; | ||
983 | #endif | ||
984 | |||
985 | #ifdef GL_EXT_rescale_normal | ||
986 | } else if (0 == strcmp(extension, "GL_EXT_rescale_normal")) { | ||
987 | #endif | ||
988 | |||
989 | #ifdef GL_EXT_secondary_color | ||
990 | } else if (0 == strcmp(extension, "GL_EXT_secondary_color")) { | ||
991 | GLH_EXT_NAME(glSecondaryColor3bEXT) = (PFNGLSECONDARYCOLOR3BEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3bEXT"); | ||
992 | if (NULL == GLH_EXT_NAME(glSecondaryColor3bEXT)) | ||
993 | return FALSE; | ||
994 | GLH_EXT_NAME(glSecondaryColor3bvEXT) = (PFNGLSECONDARYCOLOR3BVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3bvEXT"); | ||
995 | if (NULL == GLH_EXT_NAME(glSecondaryColor3bvEXT)) | ||
996 | return FALSE; | ||
997 | GLH_EXT_NAME(glSecondaryColor3dEXT) = (PFNGLSECONDARYCOLOR3DEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3dEXT"); | ||
998 | if (NULL == GLH_EXT_NAME(glSecondaryColor3dEXT)) | ||
999 | return FALSE; | ||
1000 | GLH_EXT_NAME(glSecondaryColor3dvEXT) = (PFNGLSECONDARYCOLOR3DVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3dvEXT"); | ||
1001 | if (NULL == GLH_EXT_NAME(glSecondaryColor3dvEXT)) | ||
1002 | return FALSE; | ||
1003 | GLH_EXT_NAME(glSecondaryColor3fEXT) = (PFNGLSECONDARYCOLOR3FEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3fEXT"); | ||
1004 | if (NULL == GLH_EXT_NAME(glSecondaryColor3fEXT)) | ||
1005 | return FALSE; | ||
1006 | GLH_EXT_NAME(glSecondaryColor3fvEXT) = (PFNGLSECONDARYCOLOR3FVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3fvEXT"); | ||
1007 | if (NULL == GLH_EXT_NAME(glSecondaryColor3fvEXT)) | ||
1008 | return FALSE; | ||
1009 | GLH_EXT_NAME(glSecondaryColor3iEXT) = (PFNGLSECONDARYCOLOR3IEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3iEXT"); | ||
1010 | if (NULL == GLH_EXT_NAME(glSecondaryColor3iEXT)) | ||
1011 | return FALSE; | ||
1012 | GLH_EXT_NAME(glSecondaryColor3ivEXT) = (PFNGLSECONDARYCOLOR3IVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ivEXT"); | ||
1013 | if (NULL == GLH_EXT_NAME(glSecondaryColor3ivEXT)) | ||
1014 | return FALSE; | ||
1015 | GLH_EXT_NAME(glSecondaryColor3sEXT) = (PFNGLSECONDARYCOLOR3SEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3sEXT"); | ||
1016 | if (NULL == GLH_EXT_NAME(glSecondaryColor3sEXT)) | ||
1017 | return FALSE; | ||
1018 | GLH_EXT_NAME(glSecondaryColor3svEXT) = (PFNGLSECONDARYCOLOR3SVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3svEXT"); | ||
1019 | if (NULL == GLH_EXT_NAME(glSecondaryColor3svEXT)) | ||
1020 | return FALSE; | ||
1021 | GLH_EXT_NAME(glSecondaryColor3ubEXT) = (PFNGLSECONDARYCOLOR3UBEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ubEXT"); | ||
1022 | if (NULL == GLH_EXT_NAME(glSecondaryColor3ubEXT)) | ||
1023 | return FALSE; | ||
1024 | GLH_EXT_NAME(glSecondaryColor3ubvEXT) = (PFNGLSECONDARYCOLOR3UBVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3ubvEXT"); | ||
1025 | if (NULL == GLH_EXT_NAME(glSecondaryColor3ubvEXT)) | ||
1026 | return FALSE; | ||
1027 | GLH_EXT_NAME(glSecondaryColor3uiEXT) = (PFNGLSECONDARYCOLOR3UIEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3uiEXT"); | ||
1028 | if (NULL == GLH_EXT_NAME(glSecondaryColor3uiEXT)) | ||
1029 | return FALSE; | ||
1030 | GLH_EXT_NAME(glSecondaryColor3uivEXT) = (PFNGLSECONDARYCOLOR3UIVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3uivEXT"); | ||
1031 | if (NULL == GLH_EXT_NAME(glSecondaryColor3uivEXT)) | ||
1032 | return FALSE; | ||
1033 | GLH_EXT_NAME(glSecondaryColor3usEXT) = (PFNGLSECONDARYCOLOR3USEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3usEXT"); | ||
1034 | if (NULL == GLH_EXT_NAME(glSecondaryColor3usEXT)) | ||
1035 | return FALSE; | ||
1036 | GLH_EXT_NAME(glSecondaryColor3usvEXT) = (PFNGLSECONDARYCOLOR3USVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColor3usvEXT"); | ||
1037 | if (NULL == GLH_EXT_NAME(glSecondaryColor3usvEXT)) | ||
1038 | return FALSE; | ||
1039 | GLH_EXT_NAME(glSecondaryColorPointerEXT) = (PFNGLSECONDARYCOLORPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glSecondaryColorPointerEXT"); | ||
1040 | if (NULL == GLH_EXT_NAME(glSecondaryColorPointerEXT)) | ||
1041 | return FALSE; | ||
1042 | #endif | ||
1043 | |||
1044 | #ifdef GL_EXT_separate_specular_color | ||
1045 | } else if (0 == strcmp(extension, "GL_EXT_separate_specular_color")) { | ||
1046 | #endif | ||
1047 | |||
1048 | #ifdef GL_EXT_shared_texture_palette | ||
1049 | } else if (0 == strcmp(extension, "GL_EXT_shared_texture_palette")) { | ||
1050 | #endif | ||
1051 | |||
1052 | #ifdef GL_EXT_stencil_wrap | ||
1053 | } else if (0 == strcmp(extension, "GL_EXT_stencil_wrap")) { | ||
1054 | #endif | ||
1055 | |||
1056 | #ifdef GL_EXT_texture_compression_s3tc | ||
1057 | } else if (0 == strcmp(extension, "GL_EXT_texture_compression_s3tc")) { | ||
1058 | #endif | ||
1059 | |||
1060 | #ifdef GL_EXT_texture_cube_map | ||
1061 | } else if (0 == strcmp(extension, "GL_EXT_texture_cube_map")) { | ||
1062 | #endif | ||
1063 | |||
1064 | #ifdef GL_EXT_texture_edge_clamp | ||
1065 | } else if (0 == strcmp(extension, "GL_EXT_texture_edge_clamp")) { | ||
1066 | #endif | ||
1067 | |||
1068 | #ifdef GL_EXT_texture_env_add | ||
1069 | } else if (0 == strcmp(extension, "GL_EXT_texture_env_add")) { | ||
1070 | #endif | ||
1071 | |||
1072 | #ifdef GL_EXT_texture_env_combine | ||
1073 | } else if (0 == strcmp(extension, "GL_EXT_texture_env_combine")) { | ||
1074 | #endif | ||
1075 | |||
1076 | #ifdef GL_EXT_texture_filter_anisotropic | ||
1077 | } else if (0 == strcmp(extension, "GL_EXT_texture_filter_anisotropic")) { | ||
1078 | #endif | ||
1079 | |||
1080 | #ifdef GL_EXT_texture_lod_bias | ||
1081 | } else if (0 == strcmp(extension, "GL_EXT_texture_lod_bias")) { | ||
1082 | #endif | ||
1083 | |||
1084 | #ifdef GL_EXT_texture_object | ||
1085 | } else if (0 == strcmp(extension, "GL_EXT_texture_object")) { | ||
1086 | GLH_EXT_NAME(glAreTexturesResidentEXT) = (PFNGLARETEXTURESRESIDENTEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glAreTexturesResidentEXT"); | ||
1087 | if (NULL == GLH_EXT_NAME(glAreTexturesResidentEXT)) | ||
1088 | return FALSE; | ||
1089 | GLH_EXT_NAME(glBindTextureEXT) = (PFNGLBINDTEXTUREEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glBindTextureEXT"); | ||
1090 | if (NULL == GLH_EXT_NAME(glBindTextureEXT)) | ||
1091 | return FALSE; | ||
1092 | GLH_EXT_NAME(glDeleteTexturesEXT) = (PFNGLDELETETEXTURESEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteTexturesEXT"); | ||
1093 | if (NULL == GLH_EXT_NAME(glDeleteTexturesEXT)) | ||
1094 | return FALSE; | ||
1095 | GLH_EXT_NAME(glGenTexturesEXT) = (PFNGLGENTEXTURESEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGenTexturesEXT"); | ||
1096 | if (NULL == GLH_EXT_NAME(glGenTexturesEXT)) | ||
1097 | return FALSE; | ||
1098 | GLH_EXT_NAME(glIsTextureEXT) = (PFNGLISTEXTUREEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glIsTextureEXT"); | ||
1099 | if (NULL == GLH_EXT_NAME(glIsTextureEXT)) | ||
1100 | return FALSE; | ||
1101 | GLH_EXT_NAME(glPrioritizeTexturesEXT) = (PFNGLPRIORITIZETEXTURESEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glPrioritizeTexturesEXT"); | ||
1102 | if (NULL == GLH_EXT_NAME(glPrioritizeTexturesEXT)) | ||
1103 | return FALSE; | ||
1104 | #endif | ||
1105 | |||
1106 | #ifdef GL_EXT_texture3D | ||
1107 | } else if (0 == strcmp(extension, "GL_EXT_texture3D")) { | ||
1108 | GLH_EXT_NAME(glTexImage3DEXT) = (PFNGLTEXIMAGE3DEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage3DEXT"); | ||
1109 | if (NULL == GLH_EXT_NAME(glTexImage3DEXT)) | ||
1110 | return FALSE; | ||
1111 | #endif | ||
1112 | |||
1113 | #ifdef GL_EXT_vertex_array | ||
1114 | } else if (0 == strcmp(extension, "GL_EXT_vertex_array")) { | ||
1115 | GLH_EXT_NAME(glArrayElementEXT) = (PFNGLARRAYELEMENTEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glArrayElementEXT"); | ||
1116 | if (NULL == GLH_EXT_NAME(glArrayElementEXT)) | ||
1117 | return FALSE; | ||
1118 | GLH_EXT_NAME(glColorPointerEXT) = (PFNGLCOLORPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorPointerEXT"); | ||
1119 | if (NULL == GLH_EXT_NAME(glColorPointerEXT)) | ||
1120 | return FALSE; | ||
1121 | GLH_EXT_NAME(glEdgeFlagPointerEXT) = (PFNGLEDGEFLAGPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glEdgeFlagPointerEXT"); | ||
1122 | if (NULL == GLH_EXT_NAME(glEdgeFlagPointerEXT)) | ||
1123 | return FALSE; | ||
1124 | GLH_EXT_NAME(glGetPointervEXT) = (PFNGLGETPOINTERVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glGetPointervEXT"); | ||
1125 | if (NULL == GLH_EXT_NAME(glGetPointervEXT)) | ||
1126 | return FALSE; | ||
1127 | GLH_EXT_NAME(glIndexPointerEXT) = (PFNGLINDEXPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glIndexPointerEXT"); | ||
1128 | if (NULL == GLH_EXT_NAME(glIndexPointerEXT)) | ||
1129 | return FALSE; | ||
1130 | GLH_EXT_NAME(glNormalPointerEXT) = (PFNGLNORMALPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glNormalPointerEXT"); | ||
1131 | if (NULL == GLH_EXT_NAME(glNormalPointerEXT)) | ||
1132 | return FALSE; | ||
1133 | GLH_EXT_NAME(glTexCoordPointerEXT) = (PFNGLTEXCOORDPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glTexCoordPointerEXT"); | ||
1134 | if (NULL == GLH_EXT_NAME(glTexCoordPointerEXT)) | ||
1135 | return FALSE; | ||
1136 | GLH_EXT_NAME(glVertexPointerEXT) = (PFNGLVERTEXPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexPointerEXT"); | ||
1137 | if (NULL == GLH_EXT_NAME(glVertexPointerEXT)) | ||
1138 | return FALSE; | ||
1139 | GLH_EXT_NAME(glDrawArraysEXT) = (PFNGLDRAWARRAYSEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawArraysEXT"); | ||
1140 | if (NULL == GLH_EXT_NAME(glDrawArraysEXT)) | ||
1141 | return FALSE; | ||
1142 | #endif | ||
1143 | |||
1144 | #ifdef GL_EXT_vertex_weighting | ||
1145 | } else if (0 == strcmp(extension, "GL_EXT_vertex_weighting")) { | ||
1146 | GLH_EXT_NAME(glVertexWeightfEXT) = (PFNGLVERTEXWEIGHTFEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexWeightfEXT"); | ||
1147 | if (NULL == GLH_EXT_NAME(glVertexWeightfEXT)) | ||
1148 | return FALSE; | ||
1149 | GLH_EXT_NAME(glVertexWeightfvEXT) = (PFNGLVERTEXWEIGHTFVEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexWeightfvEXT"); | ||
1150 | if (NULL == GLH_EXT_NAME(glVertexWeightfvEXT)) | ||
1151 | return FALSE; | ||
1152 | GLH_EXT_NAME(glVertexWeightPointerEXT) = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexWeightPointerEXT"); | ||
1153 | if (NULL == GLH_EXT_NAME(glVertexWeightPointerEXT)) | ||
1154 | return FALSE; | ||
1155 | #endif | ||
1156 | |||
1157 | #ifdef GL_NV_blend_square | ||
1158 | } else if (0 == strcmp(extension, "GL_NV_blend_square")) { | ||
1159 | #endif | ||
1160 | |||
1161 | #ifdef GL_NV_evaluators | ||
1162 | } else if (0 == strcmp(extension, "GL_NV_evaluators")) { | ||
1163 | GLH_EXT_NAME(glMapControlPointsNV) = (PFNGLMAPCONTROLPOINTSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glMapControlPointsNV"); | ||
1164 | if (NULL == GLH_EXT_NAME(glMapControlPointsNV)) | ||
1165 | return FALSE; | ||
1166 | GLH_EXT_NAME(glMapParameterivNV) = (PFNGLMAPPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glMapParameterivNV"); | ||
1167 | if (NULL == GLH_EXT_NAME(glMapParameterivNV)) | ||
1168 | return FALSE; | ||
1169 | GLH_EXT_NAME(glMapParameterfvNV) = (PFNGLMAPPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glMapParameterfvNV"); | ||
1170 | if (NULL == GLH_EXT_NAME(glMapParameterfvNV)) | ||
1171 | return FALSE; | ||
1172 | GLH_EXT_NAME(glGetMapControlPointsNV) = (PFNGLGETMAPCONTROLPOINTSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapControlPointsNV"); | ||
1173 | if (NULL == GLH_EXT_NAME(glGetMapControlPointsNV)) | ||
1174 | return FALSE; | ||
1175 | GLH_EXT_NAME(glGetMapParameterivNV) = (PFNGLGETMAPPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapParameterivNV"); | ||
1176 | if (NULL == GLH_EXT_NAME(glGetMapParameterivNV)) | ||
1177 | return FALSE; | ||
1178 | GLH_EXT_NAME(glGetMapParameterfvNV) = (PFNGLGETMAPPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapParameterfvNV"); | ||
1179 | if (NULL == GLH_EXT_NAME(glGetMapParameterfvNV)) | ||
1180 | return FALSE; | ||
1181 | GLH_EXT_NAME(glGetMapAttribParameterivNV) = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapAttribParameterivNV"); | ||
1182 | if (NULL == GLH_EXT_NAME(glGetMapAttribParameterivNV)) | ||
1183 | return FALSE; | ||
1184 | GLH_EXT_NAME(glGetMapAttribParameterfvNV) = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetMapAttribParameterfvNV"); | ||
1185 | if (NULL == GLH_EXT_NAME(glGetMapAttribParameterfvNV)) | ||
1186 | return FALSE; | ||
1187 | GLH_EXT_NAME(glEvalMapsNV) = (PFNGLEVALMAPSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glEvalMapsNV"); | ||
1188 | if (NULL == GLH_EXT_NAME(glEvalMapsNV)) | ||
1189 | return FALSE; | ||
1190 | #endif | ||
1191 | |||
1192 | #ifdef GL_NV_fence | ||
1193 | } else if (0 == strcmp(extension, "GL_NV_fence")) { | ||
1194 | GLH_EXT_NAME(glGenFencesNV) = (PFNGLGENFENCESNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGenFencesNV"); | ||
1195 | if (NULL == GLH_EXT_NAME(glGenFencesNV)) | ||
1196 | return FALSE; | ||
1197 | GLH_EXT_NAME(glDeleteFencesNV) = (PFNGLDELETEFENCESNVPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteFencesNV"); | ||
1198 | if (NULL == GLH_EXT_NAME(glDeleteFencesNV)) | ||
1199 | return FALSE; | ||
1200 | GLH_EXT_NAME(glSetFenceNV) = (PFNGLSETFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glSetFenceNV"); | ||
1201 | if (NULL == GLH_EXT_NAME(glSetFenceNV)) | ||
1202 | return FALSE; | ||
1203 | GLH_EXT_NAME(glTestFenceNV) = (PFNGLTESTFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glTestFenceNV"); | ||
1204 | if (NULL == GLH_EXT_NAME(glTestFenceNV)) | ||
1205 | return FALSE; | ||
1206 | GLH_EXT_NAME(glFinishFenceNV) = (PFNGLFINISHFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glFinishFenceNV"); | ||
1207 | if (NULL == GLH_EXT_NAME(glFinishFenceNV)) | ||
1208 | return FALSE; | ||
1209 | GLH_EXT_NAME(glIsFenceNV) = (PFNGLISFENCENVPROC)GLH_EXT_GET_PROC_ADDRESS("glIsFenceNV"); | ||
1210 | if (NULL == GLH_EXT_NAME(glIsFenceNV)) | ||
1211 | return FALSE; | ||
1212 | GLH_EXT_NAME(glGetFenceivNV) = (PFNGLGETFENCEIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFenceivNV"); | ||
1213 | if (NULL == GLH_EXT_NAME(glGetFenceivNV)) | ||
1214 | return FALSE; | ||
1215 | #endif | ||
1216 | |||
1217 | #ifdef GL_NV_fog_distance | ||
1218 | } else if (0 == strcmp(extension, "GL_NV_fog_distance")) { | ||
1219 | #endif | ||
1220 | |||
1221 | #ifdef GL_NV_packed_depth_stencil | ||
1222 | } else if (0 == strcmp(extension, "GL_NV_packed_depth_stencil")) { | ||
1223 | #endif | ||
1224 | |||
1225 | #ifdef GL_NV_register_combiners | ||
1226 | } else if (0 == strcmp(extension, "GL_NV_register_combiners")) { | ||
1227 | GLH_EXT_NAME(glCombinerParameterfvNV) = (PFNGLCOMBINERPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameterfvNV"); | ||
1228 | if (NULL == GLH_EXT_NAME(glCombinerParameterfvNV)) | ||
1229 | return FALSE; | ||
1230 | GLH_EXT_NAME(glCombinerParameterfNV) = (PFNGLCOMBINERPARAMETERFNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameterfNV"); | ||
1231 | if (NULL == GLH_EXT_NAME(glCombinerParameterfNV)) | ||
1232 | return FALSE; | ||
1233 | GLH_EXT_NAME(glCombinerParameterivNV) = (PFNGLCOMBINERPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameterivNV"); | ||
1234 | if (NULL == GLH_EXT_NAME(glCombinerParameterivNV)) | ||
1235 | return FALSE; | ||
1236 | GLH_EXT_NAME(glCombinerParameteriNV) = (PFNGLCOMBINERPARAMETERINVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerParameteriNV"); | ||
1237 | if (NULL == GLH_EXT_NAME(glCombinerParameteriNV)) | ||
1238 | return FALSE; | ||
1239 | GLH_EXT_NAME(glCombinerInputNV) = (PFNGLCOMBINERINPUTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerInputNV"); | ||
1240 | if (NULL == GLH_EXT_NAME(glCombinerInputNV)) | ||
1241 | return FALSE; | ||
1242 | GLH_EXT_NAME(glCombinerOutputNV) = (PFNGLCOMBINEROUTPUTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerOutputNV"); | ||
1243 | if (NULL == GLH_EXT_NAME(glCombinerOutputNV)) | ||
1244 | return FALSE; | ||
1245 | GLH_EXT_NAME(glFinalCombinerInputNV) = (PFNGLFINALCOMBINERINPUTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glFinalCombinerInputNV"); | ||
1246 | if (NULL == GLH_EXT_NAME(glFinalCombinerInputNV)) | ||
1247 | return FALSE; | ||
1248 | GLH_EXT_NAME(glGetCombinerInputParameterfvNV) = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerInputParameterfvNV"); | ||
1249 | if (NULL == GLH_EXT_NAME(glGetCombinerInputParameterfvNV)) | ||
1250 | return FALSE; | ||
1251 | GLH_EXT_NAME(glGetCombinerInputParameterivNV) = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerInputParameterivNV"); | ||
1252 | if (NULL == GLH_EXT_NAME(glGetCombinerInputParameterivNV)) | ||
1253 | return FALSE; | ||
1254 | GLH_EXT_NAME(glGetCombinerOutputParameterfvNV) = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerOutputParameterfvNV"); | ||
1255 | if (NULL == GLH_EXT_NAME(glGetCombinerOutputParameterfvNV)) | ||
1256 | return FALSE; | ||
1257 | GLH_EXT_NAME(glGetCombinerOutputParameterivNV) = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerOutputParameterivNV"); | ||
1258 | if (NULL == GLH_EXT_NAME(glGetCombinerOutputParameterivNV)) | ||
1259 | return FALSE; | ||
1260 | GLH_EXT_NAME(glGetFinalCombinerInputParameterfvNV) = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFinalCombinerInputParameterfvNV"); | ||
1261 | if (NULL == GLH_EXT_NAME(glGetFinalCombinerInputParameterfvNV)) | ||
1262 | return FALSE; | ||
1263 | GLH_EXT_NAME(glGetFinalCombinerInputParameterivNV) = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetFinalCombinerInputParameterivNV"); | ||
1264 | if (NULL == GLH_EXT_NAME(glGetFinalCombinerInputParameterivNV)) | ||
1265 | return FALSE; | ||
1266 | #endif | ||
1267 | |||
1268 | #ifdef GL_NV_register_combiners2 | ||
1269 | } else if (0 == strcmp(extension, "GL_NV_register_combiners2")) { | ||
1270 | GLH_EXT_NAME(glCombinerStageParameterfvNV) = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glCombinerStageParameterfvNV"); | ||
1271 | if (NULL == GLH_EXT_NAME(glCombinerStageParameterfvNV)) | ||
1272 | return FALSE; | ||
1273 | GLH_EXT_NAME(glGetCombinerStageParameterfvNV) = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetCombinerStageParameterfvNV"); | ||
1274 | if (NULL == GLH_EXT_NAME(glGetCombinerStageParameterfvNV)) | ||
1275 | return FALSE; | ||
1276 | #endif | ||
1277 | |||
1278 | #ifdef GL_NV_texgen_reflection | ||
1279 | } else if (0 == strcmp(extension, "GL_NV_texgen_reflection")) { | ||
1280 | #endif | ||
1281 | |||
1282 | #ifdef GL_NV_texture_env_combine4 | ||
1283 | } else if (0 == strcmp(extension, "GL_NV_texture_env_combine4")) { | ||
1284 | #endif | ||
1285 | |||
1286 | #ifdef GL_NV_texture_rectangle | ||
1287 | } else if (0 == strcmp(extension, "GL_NV_texture_rectangle")) { | ||
1288 | #endif | ||
1289 | |||
1290 | #ifdef GL_NV_texture_shader | ||
1291 | } else if (0 == strcmp(extension, "GL_NV_texture_shader")) { | ||
1292 | #endif | ||
1293 | |||
1294 | #ifdef GL_NV_vertex_array_range | ||
1295 | } else if (0 == strcmp(extension, "GL_NV_vertex_array_range")) { | ||
1296 | GLH_EXT_NAME(glFlushVertexArrayRangeNV) = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)GLH_EXT_GET_PROC_ADDRESS("glFlushVertexArrayRangeNV"); | ||
1297 | if (NULL == GLH_EXT_NAME(glFlushVertexArrayRangeNV)) | ||
1298 | return FALSE; | ||
1299 | GLH_EXT_NAME(glVertexArrayRangeNV) = (PFNGLVERTEXARRAYRANGENVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexArrayRangeNV"); | ||
1300 | if (NULL == GLH_EXT_NAME(glVertexArrayRangeNV)) | ||
1301 | return FALSE; | ||
1302 | # ifdef _WIN32 | ||
1303 | GLH_EXT_NAME(wglAllocateMemoryNV) = (PFNWGLALLOCATEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglAllocateMemoryNV"); | ||
1304 | if (NULL == GLH_EXT_NAME(wglAllocateMemoryNV)) | ||
1305 | return FALSE; | ||
1306 | # endif | ||
1307 | # ifdef GLX_VERSION_1_3 | ||
1308 | GLH_EXT_NAME(glXAllocateMemoryNV) = (PFNGLXALLOCATEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("glXAllocateMemoryNV"); | ||
1309 | if (NULL == GLH_EXT_NAME(glXAllocateMemoryNV)) | ||
1310 | return FALSE; | ||
1311 | # endif | ||
1312 | # ifdef _WIN32 | ||
1313 | GLH_EXT_NAME(wglFreeMemoryNV) = (PFNWGLFREEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglFreeMemoryNV"); | ||
1314 | if (NULL == GLH_EXT_NAME(wglFreeMemoryNV)) | ||
1315 | return FALSE; | ||
1316 | # endif | ||
1317 | # ifdef GLX_VERSION_1_3 | ||
1318 | GLH_EXT_NAME(glXFreeMemoryNV) = (PFNGLXFREEMEMORYNVPROC)GLH_EXT_GET_PROC_ADDRESS("glXFreeMemoryNV"); | ||
1319 | if (NULL == GLH_EXT_NAME(glXFreeMemoryNV)) | ||
1320 | return FALSE; | ||
1321 | # endif | ||
1322 | #endif | ||
1323 | |||
1324 | #ifdef GL_NV_vertex_program | ||
1325 | } else if (0 == strcmp(extension, "GL_NV_vertex_program")) { | ||
1326 | GLH_EXT_NAME(glAreProgramsResidentNV) = (PFNGLAREPROGRAMSRESIDENTNVPROC)GLH_EXT_GET_PROC_ADDRESS("glAreProgramsResidentNV"); | ||
1327 | if (NULL == GLH_EXT_NAME(glAreProgramsResidentNV)) | ||
1328 | return FALSE; | ||
1329 | GLH_EXT_NAME(glBindProgramNV) = (PFNGLBINDPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glBindProgramNV"); | ||
1330 | if (NULL == GLH_EXT_NAME(glBindProgramNV)) | ||
1331 | return FALSE; | ||
1332 | GLH_EXT_NAME(glDeleteProgramsNV) = (PFNGLDELETEPROGRAMSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramsNV"); | ||
1333 | if (NULL == GLH_EXT_NAME(glDeleteProgramsNV)) | ||
1334 | return FALSE; | ||
1335 | GLH_EXT_NAME(glExecuteProgramNV) = (PFNGLEXECUTEPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glExecuteProgramNV"); | ||
1336 | if (NULL == GLH_EXT_NAME(glExecuteProgramNV)) | ||
1337 | return FALSE; | ||
1338 | GLH_EXT_NAME(glGenProgramsNV) = (PFNGLGENPROGRAMSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGenProgramsNV"); | ||
1339 | if (NULL == GLH_EXT_NAME(glGenProgramsNV)) | ||
1340 | return FALSE; | ||
1341 | GLH_EXT_NAME(glGetProgramParameterdvNV) = (PFNGLGETPROGRAMPARAMETERDVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramParameterdvNV"); | ||
1342 | if (NULL == GLH_EXT_NAME(glGetProgramParameterdvNV)) | ||
1343 | return FALSE; | ||
1344 | GLH_EXT_NAME(glGetProgramParameterfvNV) = (PFNGLGETPROGRAMPARAMETERFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramParameterfvNV"); | ||
1345 | if (NULL == GLH_EXT_NAME(glGetProgramParameterfvNV)) | ||
1346 | return FALSE; | ||
1347 | GLH_EXT_NAME(glGetProgramivNV) = (PFNGLGETPROGRAMIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramivNV"); | ||
1348 | if (NULL == GLH_EXT_NAME(glGetProgramivNV)) | ||
1349 | return FALSE; | ||
1350 | GLH_EXT_NAME(glGetProgramStringNV) = (PFNGLGETPROGRAMSTRINGNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetProgramStringNV"); | ||
1351 | if (NULL == GLH_EXT_NAME(glGetProgramStringNV)) | ||
1352 | return FALSE; | ||
1353 | GLH_EXT_NAME(glGetTrackMatrixivNV) = (PFNGLGETTRACKMATRIXIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetTrackMatrixivNV"); | ||
1354 | if (NULL == GLH_EXT_NAME(glGetTrackMatrixivNV)) | ||
1355 | return FALSE; | ||
1356 | GLH_EXT_NAME(glGetVertexAttribdvNV) = (PFNGLGETVERTEXATTRIBDVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdvNV"); | ||
1357 | if (NULL == GLH_EXT_NAME(glGetVertexAttribdvNV)) | ||
1358 | return FALSE; | ||
1359 | GLH_EXT_NAME(glGetVertexAttribfvNV) = (PFNGLGETVERTEXATTRIBFVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfvNV"); | ||
1360 | if (NULL == GLH_EXT_NAME(glGetVertexAttribfvNV)) | ||
1361 | return FALSE; | ||
1362 | GLH_EXT_NAME(glGetVertexAttribivNV) = (PFNGLGETVERTEXATTRIBIVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribivNV"); | ||
1363 | if (NULL == GLH_EXT_NAME(glGetVertexAttribivNV)) | ||
1364 | return FALSE; | ||
1365 | GLH_EXT_NAME(glGetVertexAttribPointervNV) = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribPointervNV"); | ||
1366 | if (NULL == GLH_EXT_NAME(glGetVertexAttribPointervNV)) | ||
1367 | return FALSE; | ||
1368 | GLH_EXT_NAME(glIsProgramNV) = (PFNGLISPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glIsProgramNV"); | ||
1369 | if (NULL == GLH_EXT_NAME(glIsProgramNV)) | ||
1370 | return FALSE; | ||
1371 | GLH_EXT_NAME(glLoadProgramNV) = (PFNGLLOADPROGRAMNVPROC)GLH_EXT_GET_PROC_ADDRESS("glLoadProgramNV"); | ||
1372 | if (NULL == GLH_EXT_NAME(glLoadProgramNV)) | ||
1373 | return FALSE; | ||
1374 | GLH_EXT_NAME(glProgramParameter4dNV) = (PFNGLPROGRAMPARAMETER4DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4dNV"); | ||
1375 | if (NULL == GLH_EXT_NAME(glProgramParameter4dNV)) | ||
1376 | return FALSE; | ||
1377 | GLH_EXT_NAME(glProgramParameter4dvNV) = (PFNGLPROGRAMPARAMETER4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4dvNV"); | ||
1378 | if (NULL == GLH_EXT_NAME(glProgramParameter4dvNV)) | ||
1379 | return FALSE; | ||
1380 | GLH_EXT_NAME(glProgramParameter4fNV) = (PFNGLPROGRAMPARAMETER4FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4fNV"); | ||
1381 | if (NULL == GLH_EXT_NAME(glProgramParameter4fNV)) | ||
1382 | return FALSE; | ||
1383 | GLH_EXT_NAME(glProgramParameter4fvNV) = (PFNGLPROGRAMPARAMETER4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameter4fvNV"); | ||
1384 | if (NULL == GLH_EXT_NAME(glProgramParameter4fvNV)) | ||
1385 | return FALSE; | ||
1386 | GLH_EXT_NAME(glProgramParameters4dvNV) = (PFNGLPROGRAMPARAMETERS4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameters4dvNV"); | ||
1387 | if (NULL == GLH_EXT_NAME(glProgramParameters4dvNV)) | ||
1388 | return FALSE; | ||
1389 | GLH_EXT_NAME(glProgramParameters4fvNV) = (PFNGLPROGRAMPARAMETERS4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glProgramParameters4fvNV"); | ||
1390 | if (NULL == GLH_EXT_NAME(glProgramParameters4fvNV)) | ||
1391 | return FALSE; | ||
1392 | GLH_EXT_NAME(glRequestResidentProgramsNV) = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)GLH_EXT_GET_PROC_ADDRESS("glRequestResidentProgramsNV"); | ||
1393 | if (NULL == GLH_EXT_NAME(glRequestResidentProgramsNV)) | ||
1394 | return FALSE; | ||
1395 | GLH_EXT_NAME(glTrackMatrixNV) = (PFNGLTRACKMATRIXNVPROC)GLH_EXT_GET_PROC_ADDRESS("glTrackMatrixNV"); | ||
1396 | if (NULL == GLH_EXT_NAME(glTrackMatrixNV)) | ||
1397 | return FALSE; | ||
1398 | GLH_EXT_NAME(glVertexAttribPointerNV) = (PFNGLVERTEXATTRIBPOINTERNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointerNV"); | ||
1399 | if (NULL == GLH_EXT_NAME(glVertexAttribPointerNV)) | ||
1400 | return FALSE; | ||
1401 | GLH_EXT_NAME(glVertexAttrib1dNV) = (PFNGLVERTEXATTRIB1DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dNV"); | ||
1402 | if (NULL == GLH_EXT_NAME(glVertexAttrib1dNV)) | ||
1403 | return FALSE; | ||
1404 | GLH_EXT_NAME(glVertexAttrib1dvNV) = (PFNGLVERTEXATTRIB1DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dvNV"); | ||
1405 | if (NULL == GLH_EXT_NAME(glVertexAttrib1dvNV)) | ||
1406 | return FALSE; | ||
1407 | GLH_EXT_NAME(glVertexAttrib1fNV) = (PFNGLVERTEXATTRIB1FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fNV"); | ||
1408 | if (NULL == GLH_EXT_NAME(glVertexAttrib1fNV)) | ||
1409 | return FALSE; | ||
1410 | GLH_EXT_NAME(glVertexAttrib1fvNV) = (PFNGLVERTEXATTRIB1FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fvNV"); | ||
1411 | if (NULL == GLH_EXT_NAME(glVertexAttrib1fvNV)) | ||
1412 | return FALSE; | ||
1413 | GLH_EXT_NAME(glVertexAttrib1sNV) = (PFNGLVERTEXATTRIB1SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sNV"); | ||
1414 | if (NULL == GLH_EXT_NAME(glVertexAttrib1sNV)) | ||
1415 | return FALSE; | ||
1416 | GLH_EXT_NAME(glVertexAttrib1svNV) = (PFNGLVERTEXATTRIB1SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1svNV"); | ||
1417 | if (NULL == GLH_EXT_NAME(glVertexAttrib1svNV)) | ||
1418 | return FALSE; | ||
1419 | GLH_EXT_NAME(glVertexAttrib2dNV) = (PFNGLVERTEXATTRIB2DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dNV"); | ||
1420 | if (NULL == GLH_EXT_NAME(glVertexAttrib2dNV)) | ||
1421 | return FALSE; | ||
1422 | GLH_EXT_NAME(glVertexAttrib2dvNV) = (PFNGLVERTEXATTRIB2DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dvNV"); | ||
1423 | if (NULL == GLH_EXT_NAME(glVertexAttrib2dvNV)) | ||
1424 | return FALSE; | ||
1425 | GLH_EXT_NAME(glVertexAttrib2fNV) = (PFNGLVERTEXATTRIB2FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fNV"); | ||
1426 | if (NULL == GLH_EXT_NAME(glVertexAttrib2fNV)) | ||
1427 | return FALSE; | ||
1428 | GLH_EXT_NAME(glVertexAttrib2fvNV) = (PFNGLVERTEXATTRIB2FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fvNV"); | ||
1429 | if (NULL == GLH_EXT_NAME(glVertexAttrib2fvNV)) | ||
1430 | return FALSE; | ||
1431 | GLH_EXT_NAME(glVertexAttrib2sNV) = (PFNGLVERTEXATTRIB2SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sNV"); | ||
1432 | if (NULL == GLH_EXT_NAME(glVertexAttrib2sNV)) | ||
1433 | return FALSE; | ||
1434 | GLH_EXT_NAME(glVertexAttrib2svNV) = (PFNGLVERTEXATTRIB2SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2svNV"); | ||
1435 | if (NULL == GLH_EXT_NAME(glVertexAttrib2svNV)) | ||
1436 | return FALSE; | ||
1437 | GLH_EXT_NAME(glVertexAttrib3dNV) = (PFNGLVERTEXATTRIB3DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dNV"); | ||
1438 | if (NULL == GLH_EXT_NAME(glVertexAttrib3dNV)) | ||
1439 | return FALSE; | ||
1440 | GLH_EXT_NAME(glVertexAttrib3dvNV) = (PFNGLVERTEXATTRIB3DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dvNV"); | ||
1441 | if (NULL == GLH_EXT_NAME(glVertexAttrib3dvNV)) | ||
1442 | return FALSE; | ||
1443 | GLH_EXT_NAME(glVertexAttrib3fNV) = (PFNGLVERTEXATTRIB3FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fNV"); | ||
1444 | if (NULL == GLH_EXT_NAME(glVertexAttrib3fNV)) | ||
1445 | return FALSE; | ||
1446 | GLH_EXT_NAME(glVertexAttrib3fvNV) = (PFNGLVERTEXATTRIB3FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fvNV"); | ||
1447 | if (NULL == GLH_EXT_NAME(glVertexAttrib3fvNV)) | ||
1448 | return FALSE; | ||
1449 | GLH_EXT_NAME(glVertexAttrib3sNV) = (PFNGLVERTEXATTRIB3SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sNV"); | ||
1450 | if (NULL == GLH_EXT_NAME(glVertexAttrib3sNV)) | ||
1451 | return FALSE; | ||
1452 | GLH_EXT_NAME(glVertexAttrib3svNV) = (PFNGLVERTEXATTRIB3SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3svNV"); | ||
1453 | if (NULL == GLH_EXT_NAME(glVertexAttrib3svNV)) | ||
1454 | return FALSE; | ||
1455 | GLH_EXT_NAME(glVertexAttrib4dNV) = (PFNGLVERTEXATTRIB4DNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dNV"); | ||
1456 | if (NULL == GLH_EXT_NAME(glVertexAttrib4dNV)) | ||
1457 | return FALSE; | ||
1458 | GLH_EXT_NAME(glVertexAttrib4dvNV) = (PFNGLVERTEXATTRIB4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dvNV"); | ||
1459 | if (NULL == GLH_EXT_NAME(glVertexAttrib4dvNV)) | ||
1460 | return FALSE; | ||
1461 | GLH_EXT_NAME(glVertexAttrib4fNV) = (PFNGLVERTEXATTRIB4FNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fNV"); | ||
1462 | if (NULL == GLH_EXT_NAME(glVertexAttrib4fNV)) | ||
1463 | return FALSE; | ||
1464 | GLH_EXT_NAME(glVertexAttrib4fvNV) = (PFNGLVERTEXATTRIB4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fvNV"); | ||
1465 | if (NULL == GLH_EXT_NAME(glVertexAttrib4fvNV)) | ||
1466 | return FALSE; | ||
1467 | GLH_EXT_NAME(glVertexAttrib4sNV) = (PFNGLVERTEXATTRIB4SNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sNV"); | ||
1468 | if (NULL == GLH_EXT_NAME(glVertexAttrib4sNV)) | ||
1469 | return FALSE; | ||
1470 | GLH_EXT_NAME(glVertexAttrib4svNV) = (PFNGLVERTEXATTRIB4SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4svNV"); | ||
1471 | if (NULL == GLH_EXT_NAME(glVertexAttrib4svNV)) | ||
1472 | return FALSE; | ||
1473 | GLH_EXT_NAME(glVertexAttrib4ubvNV) = (PFNGLVERTEXATTRIB4UBVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubvNV"); | ||
1474 | if (NULL == GLH_EXT_NAME(glVertexAttrib4ubvNV)) | ||
1475 | return FALSE; | ||
1476 | GLH_EXT_NAME(glVertexAttribs1dvNV) = (PFNGLVERTEXATTRIBS1DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs1dvNV"); | ||
1477 | if (NULL == GLH_EXT_NAME(glVertexAttribs1dvNV)) | ||
1478 | return FALSE; | ||
1479 | GLH_EXT_NAME(glVertexAttribs1fvNV) = (PFNGLVERTEXATTRIBS1FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs1fvNV"); | ||
1480 | if (NULL == GLH_EXT_NAME(glVertexAttribs1fvNV)) | ||
1481 | return FALSE; | ||
1482 | GLH_EXT_NAME(glVertexAttribs1svNV) = (PFNGLVERTEXATTRIBS1SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs1svNV"); | ||
1483 | if (NULL == GLH_EXT_NAME(glVertexAttribs1svNV)) | ||
1484 | return FALSE; | ||
1485 | GLH_EXT_NAME(glVertexAttribs2dvNV) = (PFNGLVERTEXATTRIBS2DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs2dvNV"); | ||
1486 | if (NULL == GLH_EXT_NAME(glVertexAttribs2dvNV)) | ||
1487 | return FALSE; | ||
1488 | GLH_EXT_NAME(glVertexAttribs2fvNV) = (PFNGLVERTEXATTRIBS2FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs2fvNV"); | ||
1489 | if (NULL == GLH_EXT_NAME(glVertexAttribs2fvNV)) | ||
1490 | return FALSE; | ||
1491 | GLH_EXT_NAME(glVertexAttribs2svNV) = (PFNGLVERTEXATTRIBS2SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs2svNV"); | ||
1492 | if (NULL == GLH_EXT_NAME(glVertexAttribs2svNV)) | ||
1493 | return FALSE; | ||
1494 | GLH_EXT_NAME(glVertexAttribs3dvNV) = (PFNGLVERTEXATTRIBS3DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs3dvNV"); | ||
1495 | if (NULL == GLH_EXT_NAME(glVertexAttribs3dvNV)) | ||
1496 | return FALSE; | ||
1497 | GLH_EXT_NAME(glVertexAttribs3fvNV) = (PFNGLVERTEXATTRIBS3FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs3fvNV"); | ||
1498 | if (NULL == GLH_EXT_NAME(glVertexAttribs3fvNV)) | ||
1499 | return FALSE; | ||
1500 | GLH_EXT_NAME(glVertexAttribs3svNV) = (PFNGLVERTEXATTRIBS3SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs3svNV"); | ||
1501 | if (NULL == GLH_EXT_NAME(glVertexAttribs3svNV)) | ||
1502 | return FALSE; | ||
1503 | GLH_EXT_NAME(glVertexAttribs4dvNV) = (PFNGLVERTEXATTRIBS4DVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4dvNV"); | ||
1504 | if (NULL == GLH_EXT_NAME(glVertexAttribs4dvNV)) | ||
1505 | return FALSE; | ||
1506 | GLH_EXT_NAME(glVertexAttribs4fvNV) = (PFNGLVERTEXATTRIBS4FVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4fvNV"); | ||
1507 | if (NULL == GLH_EXT_NAME(glVertexAttribs4fvNV)) | ||
1508 | return FALSE; | ||
1509 | GLH_EXT_NAME(glVertexAttribs4svNV) = (PFNGLVERTEXATTRIBS4SVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4svNV"); | ||
1510 | if (NULL == GLH_EXT_NAME(glVertexAttribs4svNV)) | ||
1511 | return FALSE; | ||
1512 | GLH_EXT_NAME(glVertexAttribs4ubvNV) = (PFNGLVERTEXATTRIBS4UBVNVPROC)GLH_EXT_GET_PROC_ADDRESS("glVertexAttribs4ubvNV"); | ||
1513 | if (NULL == GLH_EXT_NAME(glVertexAttribs4ubvNV)) | ||
1514 | return FALSE; | ||
1515 | #endif | ||
1516 | |||
1517 | #ifdef GL_SGIS_generate_mipmap | ||
1518 | } else if (0 == strcmp(extension, "GL_SGIS_generate_mipmap")) { | ||
1519 | #endif | ||
1520 | |||
1521 | #ifdef GL_SGIS_texture_lod | ||
1522 | } else if (0 == strcmp(extension, "GL_SGIS_texture_lod")) { | ||
1523 | #endif | ||
1524 | |||
1525 | #ifdef GL_SGIX_depth_texture | ||
1526 | } else if (0 == strcmp(extension, "GL_SGIX_depth_texture")) { | ||
1527 | #endif | ||
1528 | |||
1529 | #ifdef GL_SGIX_shadow | ||
1530 | } else if (0 == strcmp(extension, "GL_SGIX_shadow")) { | ||
1531 | #endif | ||
1532 | |||
1533 | #ifdef GL_VERSION_1_2 | ||
1534 | } else if (0 == strcmp(extension, "GL_VERSION_1_2")) { | ||
1535 | GLH_CORE_1_2_NAME(glBlendColor) = (PFNGLBLENDCOLORPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendColor"); | ||
1536 | if (NULL == GLH_CORE_1_2_NAME(glBlendColor)) | ||
1537 | return FALSE; | ||
1538 | GLH_CORE_1_2_NAME(glBlendEquation) = (PFNGLBLENDEQUATIONPROC)GLH_EXT_GET_PROC_ADDRESS("glBlendEquation"); | ||
1539 | if (NULL == GLH_CORE_1_2_NAME(glBlendEquation)) | ||
1540 | return FALSE; | ||
1541 | GLH_CORE_1_2_NAME(glDrawRangeElements) = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements"); | ||
1542 | if (NULL == GLH_CORE_1_2_NAME(glDrawRangeElements)) | ||
1543 | return FALSE; | ||
1544 | GLH_CORE_1_2_NAME(glColorTable) = (PFNGLCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTable"); | ||
1545 | if (NULL == GLH_CORE_1_2_NAME(glColorTable)) | ||
1546 | return FALSE; | ||
1547 | GLH_CORE_1_2_NAME(glColorTableParameterfv) = (PFNGLCOLORTABLEPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableParameterfv"); | ||
1548 | if (NULL == GLH_CORE_1_2_NAME(glColorTableParameterfv)) | ||
1549 | return FALSE; | ||
1550 | GLH_CORE_1_2_NAME(glColorTableParameteriv) = (PFNGLCOLORTABLEPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableParameteriv"); | ||
1551 | if (NULL == GLH_CORE_1_2_NAME(glColorTableParameteriv)) | ||
1552 | return FALSE; | ||
1553 | GLH_CORE_1_2_NAME(glCopyColorTable) = (PFNGLCOPYCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyColorTable"); | ||
1554 | if (NULL == GLH_CORE_1_2_NAME(glCopyColorTable)) | ||
1555 | return FALSE; | ||
1556 | GLH_CORE_1_2_NAME(glGetColorTable) = (PFNGLGETCOLORTABLEPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTable"); | ||
1557 | if (NULL == GLH_CORE_1_2_NAME(glGetColorTable)) | ||
1558 | return FALSE; | ||
1559 | GLH_CORE_1_2_NAME(glGetColorTableParameterfv) = (PFNGLGETCOLORTABLEPARAMETERFVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameterfv"); | ||
1560 | if (NULL == GLH_CORE_1_2_NAME(glGetColorTableParameterfv)) | ||
1561 | return FALSE; | ||
1562 | GLH_CORE_1_2_NAME(glGetColorTableParameteriv) = (PFNGLGETCOLORTABLEPARAMETERIVPROC)GLH_EXT_GET_PROC_ADDRESS("glGetColorTableParameteriv"); | ||
1563 | if (NULL == GLH_CORE_1_2_NAME(glGetColorTableParameteriv)) | ||
1564 | return FALSE; | ||
1565 | GLH_CORE_1_2_NAME(glTexImage3D) = (PFNGLTEXIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexImage3D"); | ||
1566 | if (NULL == GLH_CORE_1_2_NAME(glTexImage3D)) | ||
1567 | return FALSE; | ||
1568 | GLH_CORE_1_2_NAME(glTexSubImage3D) = (PFNGLTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glTexSubImage3D"); | ||
1569 | if (NULL == GLH_CORE_1_2_NAME(glTexSubImage3D)) | ||
1570 | return FALSE; | ||
1571 | GLH_CORE_1_2_NAME(glCopyTexSubImage3D) = (PFNGLCOPYTEXSUBIMAGE3DPROC)GLH_EXT_GET_PROC_ADDRESS("glCopyTexSubImage3D"); | ||
1572 | if (NULL == GLH_CORE_1_2_NAME(glCopyTexSubImage3D)) | ||
1573 | return FALSE; | ||
1574 | #endif | ||
1575 | |||
1576 | #ifdef GL_WIN_swap_hint | ||
1577 | } else if (0 == strcmp(extension, "GL_WIN_swap_hint")) { | ||
1578 | GLH_EXT_NAME(glAddSwapHintRectWIN) = (PFNGLADDSWAPHINTRECTWINPROC)GLH_EXT_GET_PROC_ADDRESS("glAddSwapHintRectWIN"); | ||
1579 | if (NULL == GLH_EXT_NAME(glAddSwapHintRectWIN)) | ||
1580 | return FALSE; | ||
1581 | #endif | ||
1582 | |||
1583 | #ifdef WGL_ARB_pbuffer | ||
1584 | } else if (0 == strcmp(extension, "WGL_ARB_pbuffer")) { | ||
1585 | # ifdef _WIN32 | ||
1586 | GLH_EXT_NAME(wglCreatePbufferARB) = (PFNWGLCREATEPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreatePbufferARB"); | ||
1587 | if (NULL == GLH_EXT_NAME(wglCreatePbufferARB)) | ||
1588 | return FALSE; | ||
1589 | # endif | ||
1590 | # ifdef _WIN32 | ||
1591 | GLH_EXT_NAME(wglGetPbufferDCARB) = (PFNWGLGETPBUFFERDCARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetPbufferDCARB"); | ||
1592 | if (NULL == GLH_EXT_NAME(wglGetPbufferDCARB)) | ||
1593 | return FALSE; | ||
1594 | # endif | ||
1595 | # ifdef _WIN32 | ||
1596 | GLH_EXT_NAME(wglReleasePbufferDCARB) = (PFNWGLRELEASEPBUFFERDCARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglReleasePbufferDCARB"); | ||
1597 | if (NULL == GLH_EXT_NAME(wglReleasePbufferDCARB)) | ||
1598 | return FALSE; | ||
1599 | # endif | ||
1600 | # ifdef _WIN32 | ||
1601 | GLH_EXT_NAME(wglDestroyPbufferARB) = (PFNWGLDESTROYPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglDestroyPbufferARB"); | ||
1602 | if (NULL == GLH_EXT_NAME(wglDestroyPbufferARB)) | ||
1603 | return FALSE; | ||
1604 | # endif | ||
1605 | # ifdef _WIN32 | ||
1606 | GLH_EXT_NAME(wglQueryPbufferARB) = (PFNWGLQUERYPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglQueryPbufferARB"); | ||
1607 | if (NULL == GLH_EXT_NAME(wglQueryPbufferARB)) | ||
1608 | return FALSE; | ||
1609 | # endif | ||
1610 | #endif | ||
1611 | |||
1612 | #ifdef WGL_ARB_render_texture | ||
1613 | # ifdef _WIN32 | ||
1614 | GLH_EXT_NAME(wglBindTexImageARB) = (PFNWGLBINDTEXIMAGEARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglBindTexImageARB"); | ||
1615 | if (NULL == GLH_EXT_NAME(wglBindTexImageARB)) | ||
1616 | return FALSE; | ||
1617 | # endif | ||
1618 | # ifdef _WIN32 | ||
1619 | GLH_EXT_NAME(wglReleaseTexImageARB) = (PFNWGLRELEASETEXIMAGEARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglReleaseTexImageARB"); | ||
1620 | if (NULL == GLH_EXT_NAME(wglReleaseTexImageARB)) | ||
1621 | return FALSE; | ||
1622 | # endif | ||
1623 | # ifdef _WIN32 | ||
1624 | GLH_EXT_NAME(wglSetPbufferAttribARB) = (PFNWGLSETPBUFFERATTRIBARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglSetPbufferAttribARB"); | ||
1625 | if (NULL == GLH_EXT_NAME(wglSetPbufferAttribARB)) | ||
1626 | return FALSE; | ||
1627 | # endif | ||
1628 | #endif | ||
1629 | |||
1630 | #ifdef WGL_ARB_pixel_format | ||
1631 | } else if (0 == strcmp(extension, "WGL_ARB_pixel_format")) { | ||
1632 | # ifdef _WIN32 | ||
1633 | GLH_EXT_NAME(wglGetPixelFormatAttribivARB) = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetPixelFormatAttribivARB"); | ||
1634 | if (NULL == GLH_EXT_NAME(wglGetPixelFormatAttribivARB)) | ||
1635 | return FALSE; | ||
1636 | # endif | ||
1637 | # ifdef _WIN32 | ||
1638 | GLH_EXT_NAME(wglGetPixelFormatAttribfvARB) = (PFNWGLGETPIXELFORMATATTRIBFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglGetPixelFormatAttribfvARB"); | ||
1639 | if (NULL == GLH_EXT_NAME(wglGetPixelFormatAttribfvARB)) | ||
1640 | return FALSE; | ||
1641 | # endif | ||
1642 | # ifdef _WIN32 | ||
1643 | GLH_EXT_NAME(wglChoosePixelFormatARB) = (PFNWGLCHOOSEPIXELFORMATARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglChoosePixelFormatARB"); | ||
1644 | if (NULL == GLH_EXT_NAME(wglChoosePixelFormatARB)) | ||
1645 | return FALSE; | ||
1646 | # endif | ||
1647 | #endif | ||
1648 | |||
1649 | } else { | ||
1650 | return FALSE; | ||
1651 | } | ||
1652 | return TRUE; | ||
1653 | } | ||
1654 | #endif | ||
1655 | |||
1656 | #else // defined(__APPLE__) | ||
1657 | |||
1658 | #ifdef GLH_EXT_SINGLE_FILE | ||
1659 | |||
1660 | int glh_init_extension(const char* extension) | ||
1661 | { | ||
1662 | // MBW -- XXX -- Should this check for extension availability? | ||
1663 | return TRUE; | ||
1664 | } | ||
1665 | #endif // GLH_EXT_SINGLE_FILE | ||
1666 | |||
1667 | #endif // defined(__APPLE__) | ||
1668 | |||
1669 | #undef GLH_EXT_SINGLE_FILE | ||
1670 | |||
1671 | #endif /* GLH_GENEXT_H */ | ||
diff --git a/linden/indra/llwindow/files.darwin.lst b/linden/indra/llwindow/files.darwin.lst deleted file mode 100644 index e8eca9b..0000000 --- a/linden/indra/llwindow/files.darwin.lst +++ /dev/null | |||
@@ -1,2 +0,0 @@ | |||
1 | llwindow/llkeyboardmacosx.cpp | ||
2 | llwindow/llwindowmacosx.cpp | ||
diff --git a/linden/indra/llwindow/files.linux.lst b/linden/indra/llwindow/files.linux.lst deleted file mode 100644 index a2dfa07..0000000 --- a/linden/indra/llwindow/files.linux.lst +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | llwindow/llkeyboardsdl.cpp | ||
2 | llwindow/llwindowsdl.cpp | ||
3 | llwindow/llwindowmesaheadless.cpp | ||
diff --git a/linden/indra/llwindow/files.lst b/linden/indra/llwindow/files.lst deleted file mode 100644 index 1c16b09..0000000 --- a/linden/indra/llwindow/files.lst +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | llwindow/lldxhardware.cpp | ||
2 | llwindow/llgl.cpp | ||
3 | llwindow/llkeyboard.cpp | ||
4 | llwindow/llwindow.cpp | ||
5 | llwindow/llwindowheadless.cpp | ||
diff --git a/linden/indra/llwindow/files.sunos5.lst b/linden/indra/llwindow/files.sunos5.lst deleted file mode 100644 index a2dfa07..0000000 --- a/linden/indra/llwindow/files.sunos5.lst +++ /dev/null | |||
@@ -1,3 +0,0 @@ | |||
1 | llwindow/llkeyboardsdl.cpp | ||
2 | llwindow/llwindowsdl.cpp | ||
3 | llwindow/llwindowmesaheadless.cpp | ||
diff --git a/linden/indra/llwindow/files.win32.lst b/linden/indra/llwindow/files.win32.lst deleted file mode 100644 index 1abcb6e..0000000 --- a/linden/indra/llwindow/files.win32.lst +++ /dev/null | |||
@@ -1,2 +0,0 @@ | |||
1 | llwindow/llkeyboardwin32.cpp | ||
2 | llwindow/llwindowwin32.cpp | ||
diff --git a/linden/indra/llwindow/lldxhardware.cpp b/linden/indra/llwindow/lldxhardware.cpp index c2d94c3..ec4230c 100644 --- a/linden/indra/llwindow/lldxhardware.cpp +++ b/linden/indra/llwindow/lldxhardware.cpp | |||
@@ -150,7 +150,7 @@ S32 LLVersion::getField(const S32 field_num) | |||
150 | } | 150 | } |
151 | } | 151 | } |
152 | 152 | ||
153 | LLString LLDXDriverFile::dump() | 153 | std::string LLDXDriverFile::dump() |
154 | { | 154 | { |
155 | if (gWriteDebug) | 155 | if (gWriteDebug) |
156 | { | 156 | { |
@@ -237,7 +237,7 @@ void LLDXHardware::cleanup() | |||
237 | } | 237 | } |
238 | 238 | ||
239 | /* | 239 | /* |
240 | LLString LLDXHardware::dumpDevices() | 240 | std::string LLDXHardware::dumpDevices() |
241 | { | 241 | { |
242 | if (gWriteDebug) | 242 | if (gWriteDebug) |
243 | { | 243 | { |
diff --git a/linden/indra/llwindow/lldxhardware.h b/linden/indra/llwindow/lldxhardware.h index 12d106a..d63120c 100644 --- a/linden/indra/llwindow/lldxhardware.h +++ b/linden/indra/llwindow/lldxhardware.h | |||
@@ -53,7 +53,7 @@ protected: | |||
53 | class LLDXDriverFile | 53 | class LLDXDriverFile |
54 | { | 54 | { |
55 | public: | 55 | public: |
56 | LLString dump(); | 56 | std::string dump(); |
57 | 57 | ||
58 | public: | 58 | public: |
59 | std::string mFilepath; | 59 | std::string mFilepath; |
@@ -103,7 +103,7 @@ public: | |||
103 | // ANY of them to match and return. | 103 | // ANY of them to match and return. |
104 | // LLDXDevice *findDevice(const std::string &vendor, const std::string &devices); | 104 | // LLDXDevice *findDevice(const std::string &vendor, const std::string &devices); |
105 | 105 | ||
106 | // LLString dumpDevices(); | 106 | // std::string dumpDevices(); |
107 | public: | 107 | public: |
108 | typedef std::map<std::string, LLDXDevice *> device_map_t; | 108 | typedef std::map<std::string, LLDXDevice *> device_map_t; |
109 | // device_map_t mDevices; | 109 | // device_map_t mDevices; |
diff --git a/linden/indra/llwindow/llgl.cpp b/linden/indra/llwindow/llgl.cpp deleted file mode 100644 index debf2e3..0000000 --- a/linden/indra/llwindow/llgl.cpp +++ /dev/null | |||
@@ -1,1734 +0,0 @@ | |||
1 | /** | ||
2 | * @file llgl.cpp | ||
3 | * @brief LLGL implementation | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | // This file sets some global GL parameters, and implements some | ||
33 | // useful functions for GL operations. | ||
34 | |||
35 | #define GLH_EXT_SINGLE_FILE | ||
36 | |||
37 | #include "linden_common.h" | ||
38 | |||
39 | #include "boost/tokenizer.hpp" | ||
40 | |||
41 | #include "llsys.h" | ||
42 | |||
43 | #include "llgl.h" | ||
44 | #include "llrender.h" | ||
45 | |||
46 | #include "llerror.h" | ||
47 | #include "llquaternion.h" | ||
48 | #include "llmath.h" | ||
49 | #include "m4math.h" | ||
50 | #include "llstring.h" | ||
51 | |||
52 | #include "llglheaders.h" | ||
53 | |||
54 | #ifdef _DEBUG | ||
55 | //#define GL_STATE_VERIFY | ||
56 | #endif | ||
57 | |||
58 | BOOL gDebugGL = FALSE; | ||
59 | BOOL gClothRipple = FALSE; | ||
60 | BOOL gNoRender = FALSE; | ||
61 | LLMatrix4 gGLObliqueProjectionInverse; | ||
62 | |||
63 | LLGLNamePool::pool_list_t LLGLNamePool::sInstances; | ||
64 | |||
65 | #if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS | ||
66 | // ATI prototypes | ||
67 | // vertex blending prototypes | ||
68 | PFNGLWEIGHTPOINTERARBPROC glWeightPointerARB = NULL; | ||
69 | PFNGLVERTEXBLENDARBPROC glVertexBlendARB = NULL; | ||
70 | PFNGLWEIGHTFVARBPROC glWeightfvARB = NULL; | ||
71 | |||
72 | // Vertex buffer object prototypes | ||
73 | PFNGLBINDBUFFERARBPROC glBindBufferARB = NULL; | ||
74 | PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB = NULL; | ||
75 | PFNGLGENBUFFERSARBPROC glGenBuffersARB = NULL; | ||
76 | PFNGLISBUFFERARBPROC glIsBufferARB = NULL; | ||
77 | PFNGLBUFFERDATAARBPROC glBufferDataARB = NULL; | ||
78 | PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB = NULL; | ||
79 | PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB = NULL; | ||
80 | PFNGLMAPBUFFERARBPROC glMapBufferARB = NULL; | ||
81 | PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB = NULL; | ||
82 | PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB = NULL; | ||
83 | PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB = NULL; | ||
84 | |||
85 | // vertex object prototypes | ||
86 | PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI = NULL; | ||
87 | PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI = NULL; | ||
88 | PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI = NULL; | ||
89 | PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI = NULL; | ||
90 | PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI = NULL; | ||
91 | PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI = NULL; | ||
92 | PFNGLARRAYOBJECTATIPROC glArrayObjectATI = NULL; | ||
93 | PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI = NULL; | ||
94 | PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI = NULL; | ||
95 | PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI = NULL; | ||
96 | PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI = NULL; | ||
97 | PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI = NULL; | ||
98 | PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI = NULL; | ||
99 | |||
100 | // GL_ARB_occlusion_query | ||
101 | PFNGLGENQUERIESARBPROC glGenQueriesARB = NULL; | ||
102 | PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB = NULL; | ||
103 | PFNGLISQUERYARBPROC glIsQueryARB = NULL; | ||
104 | PFNGLBEGINQUERYARBPROC glBeginQueryARB = NULL; | ||
105 | PFNGLENDQUERYARBPROC glEndQueryARB = NULL; | ||
106 | PFNGLGETQUERYIVARBPROC glGetQueryivARB = NULL; | ||
107 | PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB = NULL; | ||
108 | PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB = NULL; | ||
109 | |||
110 | // GL_ARB_point_parameters | ||
111 | PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB = NULL; | ||
112 | PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB = NULL; | ||
113 | |||
114 | // GL_EXT_framebuffer_object | ||
115 | PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT = NULL; | ||
116 | PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT = NULL; | ||
117 | PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT = NULL; | ||
118 | PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT = NULL; | ||
119 | PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT = NULL; | ||
120 | PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT = NULL; | ||
121 | PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT = NULL; | ||
122 | PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT = NULL; | ||
123 | PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT = NULL; | ||
124 | PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT = NULL; | ||
125 | PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT = NULL; | ||
126 | PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT = NULL; | ||
127 | PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT = NULL; | ||
128 | PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT = NULL; | ||
129 | PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT = NULL; | ||
130 | PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT = NULL; | ||
131 | PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT = NULL; | ||
132 | |||
133 | //shader object prototypes | ||
134 | PFNGLDELETEOBJECTARBPROC glDeleteObjectARB = NULL; | ||
135 | PFNGLGETHANDLEARBPROC glGetHandleARB = NULL; | ||
136 | PFNGLDETACHOBJECTARBPROC glDetachObjectARB = NULL; | ||
137 | PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB = NULL; | ||
138 | PFNGLSHADERSOURCEARBPROC glShaderSourceARB = NULL; | ||
139 | PFNGLCOMPILESHADERARBPROC glCompileShaderARB = NULL; | ||
140 | PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB = NULL; | ||
141 | PFNGLATTACHOBJECTARBPROC glAttachObjectARB = NULL; | ||
142 | PFNGLLINKPROGRAMARBPROC glLinkProgramARB = NULL; | ||
143 | PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL; | ||
144 | PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB = NULL; | ||
145 | PFNGLUNIFORM1FARBPROC glUniform1fARB = NULL; | ||
146 | PFNGLUNIFORM2FARBPROC glUniform2fARB = NULL; | ||
147 | PFNGLUNIFORM3FARBPROC glUniform3fARB = NULL; | ||
148 | PFNGLUNIFORM4FARBPROC glUniform4fARB = NULL; | ||
149 | PFNGLUNIFORM1IARBPROC glUniform1iARB = NULL; | ||
150 | PFNGLUNIFORM2IARBPROC glUniform2iARB = NULL; | ||
151 | PFNGLUNIFORM3IARBPROC glUniform3iARB = NULL; | ||
152 | PFNGLUNIFORM4IARBPROC glUniform4iARB = NULL; | ||
153 | PFNGLUNIFORM1FVARBPROC glUniform1fvARB = NULL; | ||
154 | PFNGLUNIFORM2FVARBPROC glUniform2fvARB = NULL; | ||
155 | PFNGLUNIFORM3FVARBPROC glUniform3fvARB = NULL; | ||
156 | PFNGLUNIFORM4FVARBPROC glUniform4fvARB = NULL; | ||
157 | PFNGLUNIFORM1IVARBPROC glUniform1ivARB = NULL; | ||
158 | PFNGLUNIFORM2IVARBPROC glUniform2ivARB = NULL; | ||
159 | PFNGLUNIFORM3IVARBPROC glUniform3ivARB = NULL; | ||
160 | PFNGLUNIFORM4IVARBPROC glUniform4ivARB = NULL; | ||
161 | PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB = NULL; | ||
162 | PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB = NULL; | ||
163 | PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB = NULL; | ||
164 | PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB = NULL; | ||
165 | PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB = NULL; | ||
166 | PFNGLGETINFOLOGARBPROC glGetInfoLogARB = NULL; | ||
167 | PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB = NULL; | ||
168 | PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB = NULL; | ||
169 | PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB = NULL; | ||
170 | PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB = NULL; | ||
171 | PFNGLGETUNIFORMIVARBPROC glGetUniformivARB = NULL; | ||
172 | PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB = NULL; | ||
173 | |||
174 | // vertex shader prototypes | ||
175 | #if LL_LINUX | ||
176 | PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB = NULL; | ||
177 | PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB = NULL; | ||
178 | PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB = NULL; | ||
179 | PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB = NULL; | ||
180 | PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB = NULL; | ||
181 | PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB = NULL; | ||
182 | PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB = NULL; | ||
183 | PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB = NULL; | ||
184 | PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB = NULL; | ||
185 | PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB = NULL; | ||
186 | PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB = NULL; | ||
187 | PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB = NULL; | ||
188 | PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB = NULL; | ||
189 | PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB = NULL; | ||
190 | PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB = NULL; | ||
191 | PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB = NULL; | ||
192 | PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB = NULL; | ||
193 | PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB = NULL; | ||
194 | #endif // LL_LINUX | ||
195 | PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB = NULL; | ||
196 | PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB = NULL; | ||
197 | PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB = NULL; | ||
198 | PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB = NULL; | ||
199 | PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB = NULL; | ||
200 | PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB = NULL; | ||
201 | PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB = NULL; | ||
202 | #if LL_LINUX | ||
203 | PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB = NULL; | ||
204 | PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB = NULL; | ||
205 | PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB = NULL; | ||
206 | PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB = NULL; | ||
207 | PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB = NULL; | ||
208 | PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB = NULL; | ||
209 | PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB = NULL; | ||
210 | PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB = NULL; | ||
211 | PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB = NULL; | ||
212 | PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB = NULL; | ||
213 | PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB = NULL; | ||
214 | PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB = NULL; | ||
215 | PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB = NULL; | ||
216 | PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB = NULL; | ||
217 | PFNGLPROGRAMSTRINGARBPROC glProgramStringARB = NULL; | ||
218 | PFNGLBINDPROGRAMARBPROC glBindProgramARB = NULL; | ||
219 | PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB = NULL; | ||
220 | PFNGLGENPROGRAMSARBPROC glGenProgramsARB = NULL; | ||
221 | PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB = NULL; | ||
222 | PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB = NULL; | ||
223 | PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB = NULL; | ||
224 | PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB = NULL; | ||
225 | PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB = NULL; | ||
226 | PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB = NULL; | ||
227 | PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB = NULL; | ||
228 | PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB = NULL; | ||
229 | PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB = NULL; | ||
230 | PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB = NULL; | ||
231 | PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB = NULL; | ||
232 | PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB = NULL; | ||
233 | PFNGLGETPROGRAMIVARBPROC glGetProgramivARB = NULL; | ||
234 | PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB = NULL; | ||
235 | PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB = NULL; | ||
236 | PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB = NULL; | ||
237 | PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB = NULL; | ||
238 | PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB = NULL; | ||
239 | PFNGLISPROGRAMARBPROC glIsProgramARB = NULL; | ||
240 | #endif // LL_LINUX | ||
241 | PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB = NULL; | ||
242 | PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB = NULL; | ||
243 | PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB = NULL; | ||
244 | |||
245 | #if LL_WINDOWS | ||
246 | PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = NULL; | ||
247 | #endif | ||
248 | |||
249 | #if LL_LINUX | ||
250 | PFNGLCOLORTABLEEXTPROC glColorTableEXT = NULL; | ||
251 | #endif // LL_LINUX | ||
252 | |||
253 | #endif | ||
254 | |||
255 | LLGLManager gGLManager; | ||
256 | |||
257 | LLGLManager::LLGLManager() : | ||
258 | mInited(FALSE), | ||
259 | mIsDisabled(FALSE), | ||
260 | |||
261 | mHasMultitexture(FALSE), | ||
262 | mNumTextureUnits(1), | ||
263 | mHasMipMapGeneration(FALSE), | ||
264 | mHasPalettedTextures(FALSE), | ||
265 | mHasCompressedTextures(FALSE), | ||
266 | mHasFramebufferObject(FALSE), | ||
267 | |||
268 | mHasVertexBufferObject(FALSE), | ||
269 | mHasPBuffer(FALSE), | ||
270 | mHasShaderObjects(FALSE), | ||
271 | mHasVertexShader(FALSE), | ||
272 | mHasFragmentShader(FALSE), | ||
273 | mHasOcclusionQuery(FALSE), | ||
274 | mHasPointParameters(FALSE), | ||
275 | |||
276 | mHasAnisotropic(FALSE), | ||
277 | mHasARBEnvCombine(FALSE), | ||
278 | mHasCubeMap(FALSE), | ||
279 | |||
280 | mIsATI(FALSE), | ||
281 | mIsNVIDIA(FALSE), | ||
282 | mIsIntel(FALSE), | ||
283 | mIsGF2or4MX(FALSE), | ||
284 | mIsGF3(FALSE), | ||
285 | mIsGFFX(FALSE), | ||
286 | mATIOffsetVerticalLines(FALSE), | ||
287 | |||
288 | mHasRequirements(TRUE), | ||
289 | |||
290 | mHasSeparateSpecularColor(FALSE), | ||
291 | |||
292 | mDriverVersionMajor(1), | ||
293 | mDriverVersionMinor(0), | ||
294 | mDriverVersionRelease(0), | ||
295 | mGLVersion(1.0f), | ||
296 | |||
297 | mVRAM(0), | ||
298 | mGLMaxVertexRange(0), | ||
299 | mGLMaxIndexRange(0) | ||
300 | { | ||
301 | } | ||
302 | |||
303 | //--------------------------------------------------------------------- | ||
304 | // Global initialization for GL | ||
305 | //--------------------------------------------------------------------- | ||
306 | void LLGLManager::initWGL() | ||
307 | { | ||
308 | mHasPBuffer = FALSE; | ||
309 | #if LL_WINDOWS && !LL_MESA_HEADLESS | ||
310 | if (!glh_init_extensions("WGL_ARB_pixel_format")) | ||
311 | { | ||
312 | LL_WARNS("RenderInit") << "No ARB pixel format extensions" << LL_ENDL; | ||
313 | } | ||
314 | |||
315 | if (ExtensionExists("WGL_EXT_swap_control", gGLHExts.mSysExts)) | ||
316 | { | ||
317 | GLH_EXT_NAME(wglSwapIntervalEXT) = (PFNWGLSWAPINTERVALEXTPROC)GLH_EXT_GET_PROC_ADDRESS("wglSwapIntervalEXT"); | ||
318 | } | ||
319 | |||
320 | if( !glh_init_extensions("WGL_ARB_pbuffer") ) | ||
321 | { | ||
322 | LL_WARNS("RenderInit") << "No ARB WGL PBuffer extensions" << LL_ENDL; | ||
323 | } | ||
324 | |||
325 | if( !glh_init_extensions("WGL_ARB_render_texture") ) | ||
326 | { | ||
327 | LL_WARNS("RenderInit") << "No ARB WGL render texture extensions" << LL_ENDL; | ||
328 | } | ||
329 | |||
330 | mHasPBuffer = ExtensionExists("WGL_ARB_pbuffer", gGLHExts.mSysExts) && | ||
331 | ExtensionExists("WGL_ARB_render_texture", gGLHExts.mSysExts) && | ||
332 | ExtensionExists("WGL_ARB_pixel_format", gGLHExts.mSysExts); | ||
333 | #endif | ||
334 | } | ||
335 | |||
336 | // return false if unable (or unwilling due to old drivers) to init GL | ||
337 | bool LLGLManager::initGL() | ||
338 | { | ||
339 | if (mInited) | ||
340 | { | ||
341 | LL_ERRS("RenderInit") << "Calling init on LLGLManager after already initialized!" << LL_ENDL; | ||
342 | } | ||
343 | |||
344 | GLint alpha_bits; | ||
345 | glGetIntegerv( GL_ALPHA_BITS, &alpha_bits ); | ||
346 | if( 8 != alpha_bits ) | ||
347 | { | ||
348 | LL_WARNS("RenderInit") << "Frame buffer has less than 8 bits of alpha. Avatar texture compositing will fail." << LL_ENDL; | ||
349 | } | ||
350 | |||
351 | // Extract video card strings and convert to upper case to | ||
352 | // work around driver-to-driver variation in capitalization. | ||
353 | mGLVendor = LLString((const char *)glGetString(GL_VENDOR)); | ||
354 | LLString::toUpper(mGLVendor); | ||
355 | |||
356 | mGLRenderer = LLString((const char *)glGetString(GL_RENDERER)); | ||
357 | LLString::toUpper(mGLRenderer); | ||
358 | |||
359 | parse_gl_version( &mDriverVersionMajor, | ||
360 | &mDriverVersionMinor, | ||
361 | &mDriverVersionRelease, | ||
362 | &mDriverVersionVendorString ); | ||
363 | |||
364 | mGLVersion = mDriverVersionMajor + mDriverVersionMinor * .1f; | ||
365 | |||
366 | // Trailing space necessary to keep "nVidia Corpor_ati_on" cards | ||
367 | // from being recognized as ATI. | ||
368 | if (mGLVendor.substr(0,4) == "ATI ") | ||
369 | { | ||
370 | mGLVendorShort = "ATI"; | ||
371 | BOOL mobile = FALSE; | ||
372 | if (mGLRenderer.find("MOBILITY") != LLString::npos) | ||
373 | { | ||
374 | mobile = TRUE; | ||
375 | } | ||
376 | mIsATI = TRUE; | ||
377 | |||
378 | #if LL_WINDOWS && !LL_MESA_HEADLESS | ||
379 | if (mDriverVersionRelease < 3842) | ||
380 | { | ||
381 | mATIOffsetVerticalLines = TRUE; | ||
382 | } | ||
383 | #endif // LL_WINDOWS | ||
384 | } | ||
385 | else if (mGLVendor.find("NVIDIA ") != LLString::npos) | ||
386 | { | ||
387 | mGLVendorShort = "NVIDIA"; | ||
388 | mIsNVIDIA = TRUE; | ||
389 | if ( mGLRenderer.find("GEFORCE4 MX") != LLString::npos | ||
390 | || mGLRenderer.find("GEFORCE2") != LLString::npos | ||
391 | || mGLRenderer.find("GEFORCE 2") != LLString::npos | ||
392 | || mGLRenderer.find("GEFORCE4 460 GO") != LLString::npos | ||
393 | || mGLRenderer.find("GEFORCE4 440 GO") != LLString::npos | ||
394 | || mGLRenderer.find("GEFORCE4 420 GO") != LLString::npos) | ||
395 | { | ||
396 | mIsGF2or4MX = TRUE; | ||
397 | } | ||
398 | else if (mGLRenderer.find("GEFORCE FX") != LLString::npos | ||
399 | || mGLRenderer.find("QUADRO FX") != LLString::npos | ||
400 | || mGLRenderer.find("NV34") != LLString::npos) | ||
401 | { | ||
402 | mIsGFFX = TRUE; | ||
403 | } | ||
404 | else if(mGLRenderer.find("GEFORCE3") != LLString::npos) | ||
405 | { | ||
406 | mIsGF3 = TRUE; | ||
407 | } | ||
408 | |||
409 | } | ||
410 | else if (mGLVendor.find("INTEL") != LLString::npos | ||
411 | #if LL_LINUX | ||
412 | // The Mesa-based drivers put this in the Renderer string, | ||
413 | // not the Vendor string. | ||
414 | || mGLRenderer.find("INTEL") != LLString::npos | ||
415 | #endif //LL_LINUX | ||
416 | ) | ||
417 | { | ||
418 | mGLVendorShort = "INTEL"; | ||
419 | mIsIntel = TRUE; | ||
420 | } | ||
421 | else | ||
422 | { | ||
423 | mGLVendorShort = "MISC"; | ||
424 | } | ||
425 | |||
426 | // This is called here because it depends on the setting of mIsGF2or4MX, and sets up mHasMultitexture. | ||
427 | initExtensions(); | ||
428 | |||
429 | if (mHasMultitexture) | ||
430 | { | ||
431 | GLint num_tex_units; | ||
432 | glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &num_tex_units); | ||
433 | mNumTextureUnits = llmin(num_tex_units, (GLint)MAX_GL_TEXTURE_UNITS); | ||
434 | if (mIsIntel) | ||
435 | { | ||
436 | mNumTextureUnits = llmin(mNumTextureUnits, 2); | ||
437 | } | ||
438 | } | ||
439 | else | ||
440 | { | ||
441 | mHasRequirements = FALSE; | ||
442 | |||
443 | // We don't support cards that don't support the GL_ARB_multitexture extension | ||
444 | LL_WARNS("RenderInit") << "GL Drivers do not support GL_ARB_multitexture" << LL_ENDL; | ||
445 | return false; | ||
446 | } | ||
447 | |||
448 | |||
449 | initGLStates(); | ||
450 | return true; | ||
451 | } | ||
452 | |||
453 | void LLGLManager::getGLInfo(LLSD& info) | ||
454 | { | ||
455 | info["GLInfo"]["GLVendor"] = LLString((const char *)glGetString(GL_VENDOR)); | ||
456 | info["GLInfo"]["GLRenderer"] = LLString((const char *)glGetString(GL_RENDERER)); | ||
457 | info["GLInfo"]["GLVersion"] = LLString((const char *)glGetString(GL_VERSION)); | ||
458 | |||
459 | #if !LL_MESA_HEADLESS | ||
460 | LLString all_exts = (const char *)gGLHExts.mSysExts; | ||
461 | boost::char_separator<char> sep(" "); | ||
462 | boost::tokenizer<boost::char_separator<char> > tok(all_exts, sep); | ||
463 | for(boost::tokenizer<boost::char_separator<char> >::iterator i = tok.begin(); i != tok.end(); ++i) | ||
464 | { | ||
465 | info["GLInfo"]["GLExtensions"].append(*i); | ||
466 | } | ||
467 | #endif | ||
468 | } | ||
469 | |||
470 | LLString LLGLManager::getGLInfoString() | ||
471 | { | ||
472 | LLString info_str; | ||
473 | LLString all_exts, line; | ||
474 | |||
475 | info_str += LLString("GL_VENDOR ") + LLString((const char *)glGetString(GL_VENDOR)) + LLString("\n"); | ||
476 | info_str += LLString("GL_RENDERER ") + LLString((const char *)glGetString(GL_RENDERER)) + LLString("\n"); | ||
477 | info_str += LLString("GL_VERSION ") + LLString((const char *)glGetString(GL_VERSION)) + LLString("\n"); | ||
478 | |||
479 | #if !LL_MESA_HEADLESS | ||
480 | all_exts = (const char *)gGLHExts.mSysExts; | ||
481 | LLString::replaceChar(all_exts, ' ', '\n'); | ||
482 | info_str += LLString("GL_EXTENSIONS:\n") + all_exts + LLString("\n"); | ||
483 | #endif | ||
484 | |||
485 | return info_str; | ||
486 | } | ||
487 | |||
488 | void LLGLManager::printGLInfoString() | ||
489 | { | ||
490 | LLString info_str; | ||
491 | LLString all_exts, line; | ||
492 | |||
493 | LL_INFOS("RenderInit") << "GL_VENDOR: " << ((const char *)glGetString(GL_VENDOR)) << LL_ENDL; | ||
494 | LL_INFOS("RenderInit") << "GL_RENDERER: " << ((const char *)glGetString(GL_RENDERER)) << LL_ENDL; | ||
495 | LL_INFOS("RenderInit") << "GL_VERSION: " << ((const char *)glGetString(GL_VERSION)) << LL_ENDL; | ||
496 | |||
497 | #if !LL_MESA_HEADLESS | ||
498 | all_exts = (const char *)gGLHExts.mSysExts; | ||
499 | LLString::replaceChar(all_exts, ' ', '\n'); | ||
500 | LL_DEBUGS("RenderInit") << "GL_EXTENSIONS:\n" << all_exts << LL_ENDL; | ||
501 | #endif | ||
502 | } | ||
503 | |||
504 | LLString LLGLManager::getRawGLString() | ||
505 | { | ||
506 | LLString gl_string; | ||
507 | gl_string.assign((char*)glGetString(GL_VENDOR)); | ||
508 | gl_string.append(" "); | ||
509 | gl_string.append((char*)glGetString(GL_RENDERER)); | ||
510 | return gl_string; | ||
511 | } | ||
512 | |||
513 | void LLGLManager::shutdownGL() | ||
514 | { | ||
515 | if (mInited) | ||
516 | { | ||
517 | glFinish(); | ||
518 | stop_glerror(); | ||
519 | mInited = FALSE; | ||
520 | } | ||
521 | } | ||
522 | |||
523 | // these are used to turn software blending on. They appear in the Debug/Avatar menu | ||
524 | // presence of vertex skinning/blending or vertex programs will set these to FALSE by default. | ||
525 | |||
526 | extern LLCPUInfo gSysCPU; | ||
527 | |||
528 | void LLGLManager::initExtensions() | ||
529 | { | ||
530 | #if LL_MESA_HEADLESS | ||
531 | # if GL_ARB_multitexture | ||
532 | mHasMultitexture = TRUE; | ||
533 | # else | ||
534 | mHasMultitexture = FALSE; | ||
535 | # endif | ||
536 | # if GL_ARB_texture_env_combine | ||
537 | mHasARBEnvCombine = TRUE; | ||
538 | # else | ||
539 | mHasARBEnvCombine = FALSE; | ||
540 | # endif | ||
541 | # if GL_ARB_texture_compression | ||
542 | mHasCompressedTextures = TRUE; | ||
543 | # else | ||
544 | mHasCompressedTextures = FALSE; | ||
545 | # endif | ||
546 | # if GL_ARB_vertex_buffer_object | ||
547 | mHasVertexBufferObject = TRUE; | ||
548 | # else | ||
549 | mHasVertexBufferObject = FALSE; | ||
550 | # endif | ||
551 | # if GL_EXT_framebuffer_object | ||
552 | mHasFramebufferObject = TRUE; | ||
553 | # else | ||
554 | mHasFramebufferObject = FALSE; | ||
555 | # endif | ||
556 | mHasMipMapGeneration = FALSE; | ||
557 | mHasPalettedTextures = FALSE; | ||
558 | mHasSeparateSpecularColor = FALSE; | ||
559 | mHasAnisotropic = FALSE; | ||
560 | mHasCubeMap = FALSE; | ||
561 | mHasOcclusionQuery = FALSE; | ||
562 | mHasPointParameters = FALSE; | ||
563 | mHasShaderObjects = FALSE; | ||
564 | mHasVertexShader = FALSE; | ||
565 | mHasFragmentShader = FALSE; | ||
566 | #else // LL_MESA_HEADLESS | ||
567 | mHasMultitexture = glh_init_extensions("GL_ARB_multitexture"); | ||
568 | mHasMipMapGeneration = glh_init_extensions("GL_SGIS_generate_mipmap"); | ||
569 | mHasPalettedTextures = glh_init_extension("GL_EXT_paletted_texture"); | ||
570 | mHasSeparateSpecularColor = glh_init_extensions("GL_EXT_separate_specular_color"); | ||
571 | mHasAnisotropic = glh_init_extensions("GL_EXT_texture_filter_anisotropic"); | ||
572 | glh_init_extensions("GL_ARB_texture_cube_map"); | ||
573 | mHasCubeMap = ExtensionExists("GL_ARB_texture_cube_map", gGLHExts.mSysExts); | ||
574 | mHasARBEnvCombine = ExtensionExists("GL_ARB_texture_env_combine", gGLHExts.mSysExts); | ||
575 | mHasCompressedTextures = glh_init_extensions("GL_ARB_texture_compression"); | ||
576 | mHasOcclusionQuery = ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts); | ||
577 | mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts); | ||
578 | // mask out FBO support when packed_depth_stencil isn't there 'cause we need it for LLRenderTarget -Brad | ||
579 | mHasFramebufferObject = ExtensionExists("GL_EXT_framebuffer_object", gGLHExts.mSysExts) | ||
580 | && ExtensionExists("GL_EXT_packed_depth_stencil", gGLHExts.mSysExts); | ||
581 | #if !LL_DARWIN | ||
582 | mHasPointParameters = !mIsATI && ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts); | ||
583 | #endif | ||
584 | mHasShaderObjects = ExtensionExists("GL_ARB_shader_objects", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts); | ||
585 | mHasVertexShader = ExtensionExists("GL_ARB_vertex_program", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_vertex_shader", gGLHExts.mSysExts) | ||
586 | && ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts); | ||
587 | mHasFragmentShader = ExtensionExists("GL_ARB_fragment_shader", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts); | ||
588 | #endif | ||
589 | |||
590 | #if LL_LINUX | ||
591 | // Our extension support for the Linux Client is very young with some | ||
592 | // potential driver gotchas, so offer a semi-secret way to turn it off. | ||
593 | if (getenv("LL_GL_NOEXT")) /* Flawfinder: ignore */ | ||
594 | { | ||
595 | //mHasMultitexture = FALSE; // NEEDED! | ||
596 | mHasARBEnvCombine = FALSE; | ||
597 | mHasCompressedTextures = FALSE; | ||
598 | mHasVertexBufferObject = FALSE; | ||
599 | mHasFramebufferObject = FALSE; | ||
600 | mHasMipMapGeneration = FALSE; | ||
601 | mHasPalettedTextures = FALSE; | ||
602 | mHasSeparateSpecularColor = FALSE; | ||
603 | mHasAnisotropic = FALSE; | ||
604 | mHasCubeMap = FALSE; | ||
605 | mHasOcclusionQuery = FALSE; | ||
606 | mHasPointParameters = FALSE; | ||
607 | mHasShaderObjects = FALSE; | ||
608 | mHasVertexShader = FALSE; | ||
609 | mHasFragmentShader = FALSE; | ||
610 | LL_WARNS("RenderInit") << "GL extension support DISABLED via LL_GL_NOEXT" << LL_ENDL; | ||
611 | } | ||
612 | else if (getenv("LL_GL_BASICEXT")) /* Flawfinder: ignore */ | ||
613 | { | ||
614 | // This switch attempts to turn off all support for exotic | ||
615 | // extensions which I believe correspond to fatal driver | ||
616 | // bug reports. This should be the default until we get a | ||
617 | // proper blacklist/whitelist on Linux. | ||
618 | mHasMipMapGeneration = FALSE; | ||
619 | mHasPalettedTextures = FALSE; | ||
620 | mHasAnisotropic = FALSE; | ||
621 | //mHasCubeMap = FALSE; // apparently fatal on Intel 915 & similar | ||
622 | //mHasOcclusionQuery = FALSE; // source of many ATI system hangs | ||
623 | mHasShaderObjects = FALSE; | ||
624 | mHasVertexShader = FALSE; | ||
625 | mHasFragmentShader = FALSE; | ||
626 | LL_WARNS("RenderInit") << "GL extension support forced to SIMPLE level via LL_GL_BASICEXT" << LL_ENDL; | ||
627 | } | ||
628 | if (getenv("LL_GL_BLACKLIST")) /* Flawfinder: ignore */ | ||
629 | { | ||
630 | // This lets advanced troubleshooters disable specific | ||
631 | // GL extensions to isolate problems with their hardware. | ||
632 | // SL-28126 | ||
633 | const char *const blacklist = getenv("LL_GL_BLACKLIST"); /* Flawfinder: ignore */ | ||
634 | LL_WARNS("RenderInit") << "GL extension support partially disabled via LL_GL_BLACKLIST: " << blacklist << LL_ENDL; | ||
635 | if (strchr(blacklist,'a')) mHasARBEnvCombine = FALSE; | ||
636 | if (strchr(blacklist,'b')) mHasCompressedTextures = FALSE; | ||
637 | if (strchr(blacklist,'c')) mHasVertexBufferObject = FALSE; | ||
638 | if (strchr(blacklist,'d')) mHasMipMapGeneration = FALSE;//S | ||
639 | if (strchr(blacklist,'e')) mHasPalettedTextures = FALSE;//S | ||
640 | // if (strchr(blacklist,'f')) mHasNVVertexArrayRange = FALSE;//S | ||
641 | // if (strchr(blacklist,'g')) mHasNVFence = FALSE;//S | ||
642 | if (strchr(blacklist,'h')) mHasSeparateSpecularColor = FALSE; | ||
643 | if (strchr(blacklist,'i')) mHasAnisotropic = FALSE;//S | ||
644 | if (strchr(blacklist,'j')) mHasCubeMap = FALSE;//S | ||
645 | // if (strchr(blacklist,'k')) mHasATIVAO = FALSE;//S | ||
646 | if (strchr(blacklist,'l')) mHasOcclusionQuery = FALSE; | ||
647 | if (strchr(blacklist,'m')) mHasShaderObjects = FALSE;//S | ||
648 | if (strchr(blacklist,'n')) mHasVertexShader = FALSE;//S | ||
649 | if (strchr(blacklist,'o')) mHasFragmentShader = FALSE;//S | ||
650 | if (strchr(blacklist,'p')) mHasPointParameters = FALSE;//S | ||
651 | if (strchr(blacklist,'q')) mHasFramebufferObject = FALSE;//S | ||
652 | } | ||
653 | #endif // LL_LINUX | ||
654 | |||
655 | #if LL_DARWIN || LL_LINUX | ||
656 | // MBW -- 12/4/2003 -- Using paletted textures causes a bunch of avatar rendering problems on the Mac. | ||
657 | // Not sure if this is due to driver problems or incorrect use of the extension, but I'm disabling it for now. | ||
658 | // Tofu - 2006-10-03 -- Same problem on Linux. | ||
659 | mHasPalettedTextures = false; | ||
660 | #endif | ||
661 | |||
662 | if (!mHasMultitexture) | ||
663 | { | ||
664 | LL_INFOS("RenderInit") << "Couldn't initialize multitexturing" << LL_ENDL; | ||
665 | } | ||
666 | if (!mHasMipMapGeneration) | ||
667 | { | ||
668 | LL_INFOS("RenderInit") << "Couldn't initialize mipmap generation" << LL_ENDL; | ||
669 | } | ||
670 | if (!mHasARBEnvCombine) | ||
671 | { | ||
672 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_texture_env_combine" << LL_ENDL; | ||
673 | } | ||
674 | if (!mHasPalettedTextures) | ||
675 | { | ||
676 | LL_INFOS("RenderInit") << "Couldn't initialize GL_EXT_paletted_texture" << LL_ENDL; | ||
677 | } | ||
678 | if (!mHasSeparateSpecularColor) | ||
679 | { | ||
680 | LL_INFOS("RenderInit") << "Couldn't initialize separate specular color" << LL_ENDL; | ||
681 | } | ||
682 | if (!mHasAnisotropic) | ||
683 | { | ||
684 | LL_INFOS("RenderInit") << "Couldn't initialize anisotropic filtering" << LL_ENDL; | ||
685 | } | ||
686 | if (!mHasCompressedTextures) | ||
687 | { | ||
688 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_texture_compression" << LL_ENDL; | ||
689 | } | ||
690 | if (!mHasOcclusionQuery) | ||
691 | { | ||
692 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_occlusion_query" << LL_ENDL; | ||
693 | } | ||
694 | if (!mHasPointParameters) | ||
695 | { | ||
696 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_point_parameters" << LL_ENDL; | ||
697 | } | ||
698 | if (!mHasShaderObjects) | ||
699 | { | ||
700 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_shader_objects" << LL_ENDL; | ||
701 | } | ||
702 | if (!mHasVertexShader) | ||
703 | { | ||
704 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_vertex_shader" << LL_ENDL; | ||
705 | } | ||
706 | if (!mHasFragmentShader) | ||
707 | { | ||
708 | LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_fragment_shader" << LL_ENDL; | ||
709 | } | ||
710 | |||
711 | // Disable certain things due to known bugs | ||
712 | if (mIsIntel && mHasMipMapGeneration) | ||
713 | { | ||
714 | LL_INFOS("RenderInit") << "Disabling mip-map generation for Intel GPUs" << LL_ENDL; | ||
715 | mHasMipMapGeneration = FALSE; | ||
716 | } | ||
717 | if (mIsATI && mHasMipMapGeneration) | ||
718 | { | ||
719 | LL_INFOS("RenderInit") << "Disabling mip-map generation for ATI GPUs (performance opt)" << LL_ENDL; | ||
720 | mHasMipMapGeneration = FALSE; | ||
721 | } | ||
722 | |||
723 | // Misc | ||
724 | glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, (GLint*) &mGLMaxVertexRange); | ||
725 | glGetIntegerv(GL_MAX_ELEMENTS_INDICES, (GLint*) &mGLMaxIndexRange); | ||
726 | |||
727 | #if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS | ||
728 | LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL; | ||
729 | if (mHasVertexBufferObject) | ||
730 | { | ||
731 | glBindBufferARB = (PFNGLBINDBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBufferARB"); | ||
732 | if (glBindBufferARB) | ||
733 | { | ||
734 | glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteBuffersARB"); | ||
735 | glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenBuffersARB"); | ||
736 | glIsBufferARB = (PFNGLISBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsBufferARB"); | ||
737 | glBufferDataARB = (PFNGLBUFFERDATAARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferDataARB"); | ||
738 | glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBufferSubDataARB"); | ||
739 | glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferSubDataARB"); | ||
740 | glMapBufferARB = (PFNGLMAPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glMapBufferARB"); | ||
741 | glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glUnmapBufferARB"); | ||
742 | glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferParameterivARB"); | ||
743 | glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetBufferPointervARB"); | ||
744 | } | ||
745 | else | ||
746 | { | ||
747 | mHasVertexBufferObject = FALSE; | ||
748 | } | ||
749 | } | ||
750 | if (mHasFramebufferObject) | ||
751 | { | ||
752 | glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glIsRenderbufferEXT"); | ||
753 | glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBindRenderbufferEXT"); | ||
754 | glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteRenderbuffersEXT"); | ||
755 | glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenRenderbuffersEXT"); | ||
756 | glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glRenderbufferStorageEXT"); | ||
757 | glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGetRenderbufferParameterivEXT"); | ||
758 | glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glIsFramebufferEXT"); | ||
759 | glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glBindFramebufferEXT"); | ||
760 | glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteFramebuffersEXT"); | ||
761 | glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenFramebuffersEXT"); | ||
762 | glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glCheckFramebufferStatusEXT"); | ||
763 | glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture1DEXT"); | ||
764 | glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture2DEXT"); | ||
765 | glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferTexture3DEXT"); | ||
766 | glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) GLH_EXT_GET_PROC_ADDRESS("glFramebufferRenderbufferEXT"); | ||
767 | glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGetFramebufferAttachmentParameterivEXT"); | ||
768 | glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC) GLH_EXT_GET_PROC_ADDRESS("glGenerateMipmapEXT"); | ||
769 | } | ||
770 | #if !LL_LINUX | ||
771 | // This is expected to be a static symbol on Linux GL implementations | ||
772 | glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements"); | ||
773 | if (!glDrawRangeElements) | ||
774 | { | ||
775 | mGLMaxVertexRange = 0; | ||
776 | mGLMaxIndexRange = 0; | ||
777 | } | ||
778 | #endif // !LL_LINUX | ||
779 | #if LL_LINUX | ||
780 | // On Linux we need to get glColorTableEXT dynamically. | ||
781 | if (mHasPalettedTextures) | ||
782 | { | ||
783 | glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)GLH_EXT_GET_PROC_ADDRESS("glColorTableEXT"); | ||
784 | } | ||
785 | #endif // LL_LINUX | ||
786 | if (mHasOcclusionQuery) | ||
787 | { | ||
788 | glGenQueriesARB = (PFNGLGENQUERIESARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGenQueriesARB"); | ||
789 | glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)GLH_EXT_GET_PROC_ADDRESS("glDeleteQueriesARB"); | ||
790 | glIsQueryARB = (PFNGLISQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glIsQueryARB"); | ||
791 | glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBeginQueryARB"); | ||
792 | glEndQueryARB = (PFNGLENDQUERYARBPROC)GLH_EXT_GET_PROC_ADDRESS("glEndQueryARB"); | ||
793 | glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryivARB"); | ||
794 | glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectivARB"); | ||
795 | glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glGetQueryObjectuivARB"); | ||
796 | } | ||
797 | if (mHasPointParameters) | ||
798 | { | ||
799 | glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfARB"); | ||
800 | glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)GLH_EXT_GET_PROC_ADDRESS("glPointParameterfvARB"); | ||
801 | } | ||
802 | if (mHasShaderObjects) | ||
803 | { | ||
804 | glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteObjectARB"); | ||
805 | glGetHandleARB = (PFNGLGETHANDLEARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetHandleARB"); | ||
806 | glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDetachObjectARB"); | ||
807 | glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glCreateShaderObjectARB"); | ||
808 | glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) GLH_EXT_GET_PROC_ADDRESS("glShaderSourceARB"); | ||
809 | glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) GLH_EXT_GET_PROC_ADDRESS("glCompileShaderARB"); | ||
810 | glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glCreateProgramObjectARB"); | ||
811 | glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glAttachObjectARB"); | ||
812 | glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glLinkProgramARB"); | ||
813 | glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUseProgramObjectARB"); | ||
814 | glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glValidateProgramARB"); | ||
815 | glUniform1fARB = (PFNGLUNIFORM1FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1fARB"); | ||
816 | glUniform2fARB = (PFNGLUNIFORM2FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2fARB"); | ||
817 | glUniform3fARB = (PFNGLUNIFORM3FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3fARB"); | ||
818 | glUniform4fARB = (PFNGLUNIFORM4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4fARB"); | ||
819 | glUniform1iARB = (PFNGLUNIFORM1IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1iARB"); | ||
820 | glUniform2iARB = (PFNGLUNIFORM2IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2iARB"); | ||
821 | glUniform3iARB = (PFNGLUNIFORM3IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3iARB"); | ||
822 | glUniform4iARB = (PFNGLUNIFORM4IARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4iARB"); | ||
823 | glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1fvARB"); | ||
824 | glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2fvARB"); | ||
825 | glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3fvARB"); | ||
826 | glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4fvARB"); | ||
827 | glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform1ivARB"); | ||
828 | glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform2ivARB"); | ||
829 | glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform3ivARB"); | ||
830 | glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniform4ivARB"); | ||
831 | glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix2fvARB"); | ||
832 | glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix3fvARB"); | ||
833 | glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glUniformMatrix4fvARB"); | ||
834 | glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetObjectParameterfvARB"); | ||
835 | glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetObjectParameterivARB"); | ||
836 | glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetInfoLogARB"); | ||
837 | glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetAttachedObjectsARB"); | ||
838 | glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetUniformLocationARB"); | ||
839 | glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetActiveUniformARB"); | ||
840 | glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetUniformfvARB"); | ||
841 | glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetUniformivARB"); | ||
842 | glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetShaderSourceARB"); | ||
843 | } | ||
844 | if (mHasVertexShader) | ||
845 | { | ||
846 | glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetAttribLocationARB"); | ||
847 | glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) GLH_EXT_GET_PROC_ADDRESS("glBindAttribLocationARB"); | ||
848 | glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetActiveAttribARB"); | ||
849 | glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dARB"); | ||
850 | glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1dvARB"); | ||
851 | glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fARB"); | ||
852 | glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1fvARB"); | ||
853 | glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1sARB"); | ||
854 | glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib1svARB"); | ||
855 | glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dARB"); | ||
856 | glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2dvARB"); | ||
857 | glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fARB"); | ||
858 | glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2fvARB"); | ||
859 | glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2sARB"); | ||
860 | glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib2svARB"); | ||
861 | glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dARB"); | ||
862 | glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3dvARB"); | ||
863 | glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fARB"); | ||
864 | glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3fvARB"); | ||
865 | glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3sARB"); | ||
866 | glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib3svARB"); | ||
867 | glVertexAttrib4nbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nbvARB"); | ||
868 | glVertexAttrib4nivARB = (PFNGLVERTEXATTRIB4NIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nivARB"); | ||
869 | glVertexAttrib4nsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nsvARB"); | ||
870 | glVertexAttrib4nubARB = (PFNGLVERTEXATTRIB4NUBARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nubARB"); | ||
871 | glVertexAttrib4nubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nubvARB"); | ||
872 | glVertexAttrib4nuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nuivARB"); | ||
873 | glVertexAttrib4nusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4nusvARB"); | ||
874 | glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4bvARB"); | ||
875 | glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dARB"); | ||
876 | glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4dvARB"); | ||
877 | glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fARB"); | ||
878 | glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4fvARB"); | ||
879 | glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ivARB"); | ||
880 | glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4sARB"); | ||
881 | glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4svARB"); | ||
882 | glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4ubvARB"); | ||
883 | glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4uivARB"); | ||
884 | glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttrib4usvARB"); | ||
885 | glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC) GLH_EXT_GET_PROC_ADDRESS("glVertexAttribPointerARB"); | ||
886 | glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) GLH_EXT_GET_PROC_ADDRESS("glEnableVertexAttribArrayARB"); | ||
887 | glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDisableVertexAttribArrayARB"); | ||
888 | glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramStringARB"); | ||
889 | glBindProgramARB = (PFNGLBINDPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glBindProgramARB"); | ||
890 | glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteProgramsARB"); | ||
891 | glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGenProgramsARB"); | ||
892 | glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dARB"); | ||
893 | glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4dvARB"); | ||
894 | glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fARB"); | ||
895 | glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramEnvParameter4fvARB"); | ||
896 | glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dARB"); | ||
897 | glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4dvARB"); | ||
898 | glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fARB"); | ||
899 | glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glProgramLocalParameter4fvARB"); | ||
900 | glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterdvARB"); | ||
901 | glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramEnvParameterfvARB"); | ||
902 | glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterdvARB"); | ||
903 | glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramLocalParameterfvARB"); | ||
904 | glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramivARB"); | ||
905 | glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetProgramStringARB"); | ||
906 | glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribdvARB"); | ||
907 | glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribfvARB"); | ||
908 | glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetVertexAttribivARB"); | ||
909 | glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glgetVertexAttribPointervARB"); | ||
910 | glIsProgramARB = (PFNGLISPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glIsProgramARB"); | ||
911 | } | ||
912 | LL_DEBUGS("RenderInit") << "GL Probe: Got symbols" << LL_ENDL; | ||
913 | #endif | ||
914 | |||
915 | mInited = TRUE; | ||
916 | } | ||
917 | |||
918 | void rotate_quat(LLQuaternion& rotation) | ||
919 | { | ||
920 | F32 angle_radians, x, y, z; | ||
921 | rotation.getAngleAxis(&angle_radians, &x, &y, &z); | ||
922 | glRotatef(angle_radians * RAD_TO_DEG, x, y, z); | ||
923 | } | ||
924 | |||
925 | void flush_glerror() | ||
926 | { | ||
927 | glGetError(); | ||
928 | } | ||
929 | |||
930 | void assert_glerror() | ||
931 | { | ||
932 | if (gNoRender || !gDebugGL) | ||
933 | { | ||
934 | return; | ||
935 | } | ||
936 | if (!gGLManager.mInited) | ||
937 | { | ||
938 | LL_ERRS("RenderInit") << "GL not initialized" << LL_ENDL; | ||
939 | } | ||
940 | // Create or update texture to be used with this data | ||
941 | GLenum error; | ||
942 | error = glGetError(); | ||
943 | BOOL quit = FALSE; | ||
944 | while (error) | ||
945 | { | ||
946 | quit = TRUE; | ||
947 | #ifndef LL_LINUX // *FIX: ! This should be an error for linux as well. | ||
948 | GLubyte const * gl_error_msg = gluErrorString(error); | ||
949 | if (NULL != gl_error_msg) | ||
950 | { | ||
951 | LL_WARNS("RenderState") << "GL Error:" << gl_error_msg << LL_ENDL; | ||
952 | } | ||
953 | else | ||
954 | { | ||
955 | // gluErrorString returns NULL for some extensions' error codes. | ||
956 | // you'll probably have to grep for the number in glext.h. | ||
957 | LL_WARNS("RenderState") << "GL Error: UNKNOWN 0x" << std::hex << error << LL_ENDL; | ||
958 | } | ||
959 | error = glGetError(); | ||
960 | #endif | ||
961 | } | ||
962 | |||
963 | if (quit) | ||
964 | { | ||
965 | llerrs << "One or more unhandled GL errors." << llendl; | ||
966 | } | ||
967 | } | ||
968 | |||
969 | void clear_glerror() | ||
970 | { | ||
971 | // Create or update texture to be used with this data | ||
972 | GLenum error; | ||
973 | error = glGetError(); | ||
974 | } | ||
975 | |||
976 | /////////////////////////////////////////////////////////////// | ||
977 | // | ||
978 | // LLGLState | ||
979 | // | ||
980 | |||
981 | // Static members | ||
982 | std::map<LLGLenum, LLGLboolean> LLGLState::sStateMap; | ||
983 | |||
984 | GLboolean LLGLDepthTest::sDepthEnabled = GL_FALSE; // OpenGL default | ||
985 | GLenum LLGLDepthTest::sDepthFunc = GL_LESS; // OpenGL default | ||
986 | GLboolean LLGLDepthTest::sWriteEnabled = GL_TRUE; // OpenGL default | ||
987 | |||
988 | //static | ||
989 | void LLGLState::initClass() | ||
990 | { | ||
991 | sStateMap[GL_DITHER] = GL_TRUE; | ||
992 | sStateMap[GL_TEXTURE_2D] = GL_TRUE; | ||
993 | |||
994 | //make sure vertex arrays are enabled | ||
995 | glEnableClientState(GL_VERTEX_ARRAY); | ||
996 | |||
997 | //make sure multi sampling is disabled by default | ||
998 | glDisable(GL_MULTISAMPLE_ARB); | ||
999 | } | ||
1000 | |||
1001 | //static | ||
1002 | void LLGLState::restoreGL() | ||
1003 | { | ||
1004 | sStateMap.clear(); | ||
1005 | initClass(); | ||
1006 | } | ||
1007 | |||
1008 | //static | ||
1009 | // Really shouldn't be needed, but seems we sometimes do. | ||
1010 | void LLGLState::resetTextureStates() | ||
1011 | { | ||
1012 | gGL.flush(); | ||
1013 | GLint maxTextureUnits; | ||
1014 | |||
1015 | glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits); | ||
1016 | for (S32 j = maxTextureUnits-1; j >=0; j--) | ||
1017 | { | ||
1018 | gGL.getTexUnit(j)->activate(); | ||
1019 | glClientActiveTextureARB(GL_TEXTURE0_ARB+j); | ||
1020 | j == 0 ? glEnable(GL_TEXTURE_2D) : glDisable(GL_TEXTURE_2D); | ||
1021 | } | ||
1022 | } | ||
1023 | |||
1024 | void LLGLState::dumpStates() | ||
1025 | { | ||
1026 | LL_INFOS("RenderState") << "GL States:" << LL_ENDL; | ||
1027 | for (std::map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin(); | ||
1028 | iter != sStateMap.end(); ++iter) | ||
1029 | { | ||
1030 | LL_INFOS("RenderState") << llformat(" 0x%04x : %s",(S32)iter->first,iter->second?"TRUE":"FALSE") << LL_ENDL; | ||
1031 | } | ||
1032 | } | ||
1033 | |||
1034 | void LLGLState::checkStates() | ||
1035 | { | ||
1036 | if (!gDebugGL) | ||
1037 | { | ||
1038 | return; | ||
1039 | } | ||
1040 | |||
1041 | stop_glerror(); | ||
1042 | |||
1043 | GLint activeTexture; | ||
1044 | glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &activeTexture); | ||
1045 | |||
1046 | if (activeTexture != GL_TEXTURE0_ARB) | ||
1047 | { | ||
1048 | LL_GL_ERRS << "Texture channel corrupted. " << LL_ENDL; | ||
1049 | } | ||
1050 | |||
1051 | GLint src; | ||
1052 | GLint dst; | ||
1053 | glGetIntegerv(GL_BLEND_SRC, &src); | ||
1054 | glGetIntegerv(GL_BLEND_DST, &dst); | ||
1055 | |||
1056 | if (src != GL_SRC_ALPHA || dst != GL_ONE_MINUS_SRC_ALPHA) | ||
1057 | { | ||
1058 | LL_GL_ERRS << "Blend function corrupted: " << std::hex << src << " " << std::hex << dst << LL_ENDL; | ||
1059 | } | ||
1060 | |||
1061 | for (std::map<LLGLenum, LLGLboolean>::iterator iter = sStateMap.begin(); | ||
1062 | iter != sStateMap.end(); ++iter) | ||
1063 | { | ||
1064 | LLGLenum state = iter->first; | ||
1065 | LLGLboolean cur_state = iter->second; | ||
1066 | LLGLboolean gl_state = glIsEnabled(state); | ||
1067 | if(cur_state != gl_state) | ||
1068 | { | ||
1069 | dumpStates(); | ||
1070 | LL_GL_ERRS << llformat("LLGLState error. State: 0x%04x",state) << LL_ENDL; | ||
1071 | } | ||
1072 | } | ||
1073 | |||
1074 | stop_glerror(); | ||
1075 | } | ||
1076 | |||
1077 | void LLGLState::checkTextureChannels() | ||
1078 | { | ||
1079 | if (!gDebugGL) | ||
1080 | { | ||
1081 | return; | ||
1082 | } | ||
1083 | |||
1084 | GLint activeTexture; | ||
1085 | glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &activeTexture); | ||
1086 | |||
1087 | BOOL error = FALSE; | ||
1088 | |||
1089 | if (activeTexture != GL_TEXTURE0_ARB) | ||
1090 | { | ||
1091 | error = TRUE; | ||
1092 | LL_WARNS("RenderState") << "Active texture channel corrupted. " << LL_ENDL; | ||
1093 | } | ||
1094 | else if (!glIsEnabled(GL_TEXTURE_2D)) | ||
1095 | { | ||
1096 | error = TRUE; | ||
1097 | LL_WARNS("RenderState") << "GL_TEXTURE_2D not enabled on texture channel 0." << LL_ENDL; | ||
1098 | } | ||
1099 | else | ||
1100 | { | ||
1101 | GLint tex_env_mode = 0; | ||
1102 | |||
1103 | glGetTexEnviv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, &tex_env_mode); | ||
1104 | if (tex_env_mode != GL_MODULATE) | ||
1105 | { | ||
1106 | error = TRUE; | ||
1107 | LL_WARNS("RenderState") << "GL_TEXTURE_ENV_MODE invalid: " << std::hex << tex_env_mode << LL_ENDL; | ||
1108 | } | ||
1109 | } | ||
1110 | |||
1111 | GLint maxTextureUnits; | ||
1112 | glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits); | ||
1113 | |||
1114 | static const char* label[] = | ||
1115 | { | ||
1116 | "GL_TEXTURE_2D", | ||
1117 | "GL_TEXTURE_COORD_ARRAY", | ||
1118 | "GL_TEXTURE_1D", | ||
1119 | "GL_TEXTURE_CUBE_MAP_ARB", | ||
1120 | "GL_TEXTURE_GEN_S", | ||
1121 | "GL_TEXTURE_GEN_T", | ||
1122 | "GL_TEXTURE_GEN_Q", | ||
1123 | "GL_TEXTURE_GEN_R" | ||
1124 | }; | ||
1125 | |||
1126 | static GLint value[] = | ||
1127 | { | ||
1128 | GL_TEXTURE_2D, | ||
1129 | GL_TEXTURE_COORD_ARRAY, | ||
1130 | GL_TEXTURE_1D, | ||
1131 | GL_TEXTURE_CUBE_MAP_ARB, | ||
1132 | GL_TEXTURE_GEN_S, | ||
1133 | GL_TEXTURE_GEN_T, | ||
1134 | GL_TEXTURE_GEN_Q, | ||
1135 | GL_TEXTURE_GEN_R | ||
1136 | }; | ||
1137 | |||
1138 | GLint stackDepth = 0; | ||
1139 | LLMatrix4 identity; | ||
1140 | LLMatrix4 matrix; | ||
1141 | |||
1142 | for (GLint i = 0; i < maxTextureUnits; i++) | ||
1143 | { | ||
1144 | gGL.getTexUnit(i)->activate(); | ||
1145 | glClientActiveTextureARB(GL_TEXTURE0_ARB+i); | ||
1146 | |||
1147 | glGetIntegerv(GL_TEXTURE_STACK_DEPTH, &stackDepth); | ||
1148 | |||
1149 | if (stackDepth != 1) | ||
1150 | { | ||
1151 | error = TRUE; | ||
1152 | LL_WARNS("RenderState") << "Texture matrix stack corrupted." << LL_ENDL; | ||
1153 | } | ||
1154 | |||
1155 | glGetFloatv(GL_TEXTURE_MATRIX, (GLfloat*) matrix.mMatrix); | ||
1156 | |||
1157 | if (matrix != identity) | ||
1158 | { | ||
1159 | error = TRUE; | ||
1160 | LL_WARNS("RenderState") << "Texture matrix in channel " << i << " corrupt." << LL_ENDL; | ||
1161 | } | ||
1162 | |||
1163 | for (S32 j = (i == 0 ? 1 : 0); j < 8; j++) | ||
1164 | { | ||
1165 | if (glIsEnabled(value[j])) | ||
1166 | { | ||
1167 | error = TRUE; | ||
1168 | LL_WARNS("RenderState") << "Texture channel " << i << " still has " << label[j] << " enabled." << LL_ENDL; | ||
1169 | } | ||
1170 | } | ||
1171 | } | ||
1172 | |||
1173 | gGL.getTexUnit(0)->activate(); | ||
1174 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
1175 | |||
1176 | if (error) | ||
1177 | { | ||
1178 | LL_GL_ERRS << "GL texture state corruption detected." << LL_ENDL; | ||
1179 | } | ||
1180 | } | ||
1181 | |||
1182 | void LLGLState::checkClientArrays(U32 data_mask) | ||
1183 | { | ||
1184 | if (!gDebugGL) | ||
1185 | { | ||
1186 | return; | ||
1187 | } | ||
1188 | |||
1189 | stop_glerror(); | ||
1190 | BOOL error = FALSE; | ||
1191 | |||
1192 | GLint active_texture; | ||
1193 | glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE_ARB, &active_texture); | ||
1194 | |||
1195 | if (active_texture != GL_TEXTURE0_ARB) | ||
1196 | { | ||
1197 | llwarns << "Client active texture corrupted: " << active_texture << llendl; | ||
1198 | error = TRUE; | ||
1199 | } | ||
1200 | |||
1201 | glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &active_texture); | ||
1202 | if (active_texture != GL_TEXTURE0_ARB) | ||
1203 | { | ||
1204 | llwarns << "Active texture corrupted: " << active_texture << llendl; | ||
1205 | error = TRUE; | ||
1206 | } | ||
1207 | |||
1208 | static const char* label[] = | ||
1209 | { | ||
1210 | "GL_VERTEX_ARRAY", | ||
1211 | "GL_NORMAL_ARRAY", | ||
1212 | "GL_COLOR_ARRAY", | ||
1213 | "GL_TEXTURE_COORD_ARRAY" | ||
1214 | }; | ||
1215 | |||
1216 | static GLint value[] = | ||
1217 | { | ||
1218 | GL_VERTEX_ARRAY, | ||
1219 | GL_NORMAL_ARRAY, | ||
1220 | GL_COLOR_ARRAY, | ||
1221 | GL_TEXTURE_COORD_ARRAY | ||
1222 | }; | ||
1223 | |||
1224 | U32 mask[] = | ||
1225 | { //copied from llvertexbuffer.h | ||
1226 | 0x0001, //MAP_VERTEX, | ||
1227 | 0x0002, //MAP_NORMAL, | ||
1228 | 0x0010, //MAP_COLOR, | ||
1229 | 0x0004, //MAP_TEXCOORD | ||
1230 | }; | ||
1231 | |||
1232 | |||
1233 | for (S32 j = 0; j < 4; j++) | ||
1234 | { | ||
1235 | if (glIsEnabled(value[j])) | ||
1236 | { | ||
1237 | if (!(mask[j] & data_mask)) | ||
1238 | { | ||
1239 | error = TRUE; | ||
1240 | LL_WARNS("RenderState") << "GL still has " << label[j] << " enabled." << LL_ENDL; | ||
1241 | } | ||
1242 | } | ||
1243 | else | ||
1244 | { | ||
1245 | if (mask[j] & data_mask) | ||
1246 | { | ||
1247 | error = TRUE; | ||
1248 | LL_WARNS("RenderState") << "GL does not have " << label[j] << " enabled." << LL_ENDL; | ||
1249 | } | ||
1250 | } | ||
1251 | } | ||
1252 | |||
1253 | glClientActiveTextureARB(GL_TEXTURE1_ARB); | ||
1254 | gGL.getTexUnit(1)->activate(); | ||
1255 | if (glIsEnabled(GL_TEXTURE_COORD_ARRAY)) | ||
1256 | { | ||
1257 | if (!(data_mask & 0x0008)) | ||
1258 | { | ||
1259 | error = TRUE; | ||
1260 | LL_WARNS("RenderState") << "GL still has GL_TEXTURE_COORD_ARRAY enabled on channel 1." << LL_ENDL; | ||
1261 | } | ||
1262 | } | ||
1263 | else | ||
1264 | { | ||
1265 | if (data_mask & 0x0008) | ||
1266 | { | ||
1267 | error = TRUE; | ||
1268 | LL_WARNS("RenderState") << "GL does not have GL_TEXTURE_COORD_ARRAY enabled on channel 1." << LL_ENDL; | ||
1269 | } | ||
1270 | } | ||
1271 | |||
1272 | if (glIsEnabled(GL_TEXTURE_2D)) | ||
1273 | { | ||
1274 | if (!(data_mask & 0x0008)) | ||
1275 | { | ||
1276 | error = TRUE; | ||
1277 | LL_WARNS("RenderState") << "GL still has GL_TEXTURE_2D enabled on channel 1." << LL_ENDL; | ||
1278 | } | ||
1279 | } | ||
1280 | else | ||
1281 | { | ||
1282 | if (data_mask & 0x0008) | ||
1283 | { | ||
1284 | error = TRUE; | ||
1285 | LL_WARNS("RenderState") << "GL does not have GL_TEXTURE_2D enabled on channel 1." << LL_ENDL; | ||
1286 | } | ||
1287 | } | ||
1288 | |||
1289 | glClientActiveTextureARB(GL_TEXTURE0_ARB); | ||
1290 | gGL.getTexUnit(0)->activate(); | ||
1291 | |||
1292 | if (error) | ||
1293 | { | ||
1294 | LL_GL_ERRS << "GL client array corruption detected." << LL_ENDL; | ||
1295 | } | ||
1296 | } | ||
1297 | |||
1298 | /////////////////////////////////////////////////////////////////////// | ||
1299 | |||
1300 | LLGLState::LLGLState(LLGLenum state, S32 enabled) : | ||
1301 | mState(state), mWasEnabled(FALSE), mIsEnabled(FALSE) | ||
1302 | { | ||
1303 | stop_glerror(); | ||
1304 | if (state) | ||
1305 | { | ||
1306 | mWasEnabled = sStateMap[state]; | ||
1307 | llassert(mWasEnabled == glIsEnabled(state)); | ||
1308 | setEnabled(enabled); | ||
1309 | stop_glerror(); | ||
1310 | } | ||
1311 | } | ||
1312 | |||
1313 | void LLGLState::setEnabled(S32 enabled) | ||
1314 | { | ||
1315 | if (!mState) | ||
1316 | { | ||
1317 | return; | ||
1318 | } | ||
1319 | if (enabled == CURRENT_STATE) | ||
1320 | { | ||
1321 | enabled = sStateMap[mState] == GL_TRUE ? TRUE : FALSE; | ||
1322 | } | ||
1323 | else if (enabled == TRUE && sStateMap[mState] != GL_TRUE) | ||
1324 | { | ||
1325 | gGL.flush(); | ||
1326 | glEnable(mState); | ||
1327 | sStateMap[mState] = GL_TRUE; | ||
1328 | } | ||
1329 | else if (enabled == FALSE && sStateMap[mState] != GL_FALSE) | ||
1330 | { | ||
1331 | gGL.flush(); | ||
1332 | glDisable(mState); | ||
1333 | sStateMap[mState] = GL_FALSE; | ||
1334 | } | ||
1335 | mIsEnabled = enabled; | ||
1336 | } | ||
1337 | |||
1338 | LLGLState::~LLGLState() | ||
1339 | { | ||
1340 | stop_glerror(); | ||
1341 | if (mState) | ||
1342 | { | ||
1343 | if (gDebugGL) | ||
1344 | { | ||
1345 | llassert_always(sStateMap[mState] == glIsEnabled(mState)); | ||
1346 | } | ||
1347 | |||
1348 | if (mIsEnabled != mWasEnabled) | ||
1349 | { | ||
1350 | gGL.flush(); | ||
1351 | if (mWasEnabled) | ||
1352 | { | ||
1353 | glEnable(mState); | ||
1354 | sStateMap[mState] = GL_TRUE; | ||
1355 | } | ||
1356 | else | ||
1357 | { | ||
1358 | glDisable(mState); | ||
1359 | sStateMap[mState] = GL_FALSE; | ||
1360 | } | ||
1361 | } | ||
1362 | } | ||
1363 | stop_glerror(); | ||
1364 | } | ||
1365 | |||
1366 | //////////////////////////////////////////////////////////////////////////////// | ||
1367 | |||
1368 | void LLGLManager::initGLStates() | ||
1369 | { | ||
1370 | //gl states moved to classes in llglstates.h | ||
1371 | LLGLState::initClass(); | ||
1372 | } | ||
1373 | |||
1374 | //////////////////////////////////////////////////////////////////////////////// | ||
1375 | |||
1376 | void enable_vertex_weighting(const S32 index) | ||
1377 | { | ||
1378 | #if GL_ARB_vertex_program | ||
1379 | if (index > 0) glEnableVertexAttribArrayARB(index); // vertex weights | ||
1380 | #endif | ||
1381 | } | ||
1382 | |||
1383 | void disable_vertex_weighting(const S32 index) | ||
1384 | { | ||
1385 | #if GL_ARB_vertex_program | ||
1386 | if (index > 0) glDisableVertexAttribArrayARB(index); // vertex weights | ||
1387 | #endif | ||
1388 | } | ||
1389 | |||
1390 | void enable_binormals(const S32 index) | ||
1391 | { | ||
1392 | #if GL_ARB_vertex_program | ||
1393 | if (index > 0) | ||
1394 | { | ||
1395 | glEnableVertexAttribArrayARB(index); // binormals | ||
1396 | } | ||
1397 | #endif | ||
1398 | } | ||
1399 | |||
1400 | void disable_binormals(const S32 index) | ||
1401 | { | ||
1402 | #if GL_ARB_vertex_program | ||
1403 | if (index > 0) | ||
1404 | { | ||
1405 | glDisableVertexAttribArrayARB(index); // binormals | ||
1406 | } | ||
1407 | #endif | ||
1408 | } | ||
1409 | |||
1410 | |||
1411 | void enable_cloth_weights(const S32 index) | ||
1412 | { | ||
1413 | #if GL_ARB_vertex_program | ||
1414 | if (index > 0) glEnableVertexAttribArrayARB(index); | ||
1415 | #endif | ||
1416 | } | ||
1417 | |||
1418 | void disable_cloth_weights(const S32 index) | ||
1419 | { | ||
1420 | #if GL_ARB_vertex_program | ||
1421 | if (index > 0) glDisableVertexAttribArrayARB(index); | ||
1422 | #endif | ||
1423 | } | ||
1424 | |||
1425 | void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights) | ||
1426 | { | ||
1427 | #if GL_ARB_vertex_program | ||
1428 | if (index > 0) glVertexAttribPointerARB(index, 1, GL_FLOAT, FALSE, stride, weights); | ||
1429 | stop_glerror(); | ||
1430 | #endif | ||
1431 | } | ||
1432 | |||
1433 | void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights) | ||
1434 | { | ||
1435 | #if GL_ARB_vertex_program | ||
1436 | if (index > 0) glVertexAttribPointerARB(index, 4, GL_FLOAT, TRUE, stride, weights); | ||
1437 | stop_glerror(); | ||
1438 | #endif | ||
1439 | } | ||
1440 | |||
1441 | void set_binormals(const S32 index, const U32 stride,const LLVector3 *binormals) | ||
1442 | { | ||
1443 | #if GL_ARB_vertex_program | ||
1444 | if (index > 0) glVertexAttribPointerARB(index, 3, GL_FLOAT, FALSE, stride, binormals); | ||
1445 | stop_glerror(); | ||
1446 | #endif | ||
1447 | } | ||
1448 | |||
1449 | |||
1450 | void set_palette(U8 *palette_data) | ||
1451 | { | ||
1452 | if (gGLManager.mHasPalettedTextures) | ||
1453 | { | ||
1454 | glColorTableEXT(GL_TEXTURE_2D, GL_RGBA8, 256, GL_RGBA, GL_UNSIGNED_BYTE, palette_data); | ||
1455 | } | ||
1456 | } | ||
1457 | |||
1458 | |||
1459 | void parse_gl_version( S32* major, S32* minor, S32* release, LLString* vendor_specific ) | ||
1460 | { | ||
1461 | // GL_VERSION returns a null-terminated string with the format: | ||
1462 | // <major>.<minor>[.<release>] [<vendor specific>] | ||
1463 | |||
1464 | const char* version = (const char*) glGetString(GL_VERSION); | ||
1465 | *major = 0; | ||
1466 | *minor = 0; | ||
1467 | *release = 0; | ||
1468 | vendor_specific->assign(""); | ||
1469 | |||
1470 | if( !version ) | ||
1471 | { | ||
1472 | return; | ||
1473 | } | ||
1474 | |||
1475 | LLString ver_copy( version ); | ||
1476 | S32 len = (S32)strlen( version ); /* Flawfinder: ignore */ | ||
1477 | S32 i = 0; | ||
1478 | S32 start; | ||
1479 | // Find the major version | ||
1480 | start = i; | ||
1481 | for( ; i < len; i++ ) | ||
1482 | { | ||
1483 | if( '.' == version[i] ) | ||
1484 | { | ||
1485 | break; | ||
1486 | } | ||
1487 | } | ||
1488 | LLString major_str = ver_copy.substr(start,i-start); | ||
1489 | LLString::convertToS32(major_str, *major); | ||
1490 | |||
1491 | if( '.' == version[i] ) | ||
1492 | { | ||
1493 | i++; | ||
1494 | } | ||
1495 | |||
1496 | // Find the minor version | ||
1497 | start = i; | ||
1498 | for( ; i < len; i++ ) | ||
1499 | { | ||
1500 | if( ('.' == version[i]) || isspace(version[i]) ) | ||
1501 | { | ||
1502 | break; | ||
1503 | } | ||
1504 | } | ||
1505 | LLString minor_str = ver_copy.substr(start,i-start); | ||
1506 | LLString::convertToS32(minor_str, *minor); | ||
1507 | |||
1508 | // Find the release number (optional) | ||
1509 | if( '.' == version[i] ) | ||
1510 | { | ||
1511 | i++; | ||
1512 | |||
1513 | start = i; | ||
1514 | for( ; i < len; i++ ) | ||
1515 | { | ||
1516 | if( isspace(version[i]) ) | ||
1517 | { | ||
1518 | break; | ||
1519 | } | ||
1520 | } | ||
1521 | |||
1522 | LLString release_str = ver_copy.substr(start,i-start); | ||
1523 | LLString::convertToS32(release_str, *release); | ||
1524 | } | ||
1525 | |||
1526 | // Skip over any white space | ||
1527 | while( version[i] && isspace( version[i] ) ) | ||
1528 | { | ||
1529 | i++; | ||
1530 | } | ||
1531 | |||
1532 | // Copy the vendor-specific string (optional) | ||
1533 | if( version[i] ) | ||
1534 | { | ||
1535 | vendor_specific->assign( version + i ); | ||
1536 | } | ||
1537 | } | ||
1538 | |||
1539 | LLGLUserClipPlane::LLGLUserClipPlane(const LLPlane& p, const glh::matrix4f& modelview, const glh::matrix4f& projection) | ||
1540 | { | ||
1541 | mModelview = modelview; | ||
1542 | mProjection = projection; | ||
1543 | |||
1544 | setPlane(p.mV[0], p.mV[1], p.mV[2], p.mV[3]); | ||
1545 | } | ||
1546 | |||
1547 | void LLGLUserClipPlane::setPlane(F32 a, F32 b, F32 c, F32 d) | ||
1548 | { | ||
1549 | glh::matrix4f& P = mProjection; | ||
1550 | glh::matrix4f& M = mModelview; | ||
1551 | |||
1552 | glh::matrix4f invtrans_MVP = (P * M).inverse().transpose(); | ||
1553 | glh::vec4f oplane(a,b,c,d); | ||
1554 | glh::vec4f cplane; | ||
1555 | invtrans_MVP.mult_matrix_vec(oplane, cplane); | ||
1556 | |||
1557 | cplane /= fabs(cplane[2]); // normalize such that depth is not scaled | ||
1558 | cplane[3] -= 1; | ||
1559 | |||
1560 | if(cplane[2] < 0) | ||
1561 | cplane *= -1; | ||
1562 | |||
1563 | glh::matrix4f suffix; | ||
1564 | suffix.set_row(2, cplane); | ||
1565 | glh::matrix4f newP = suffix * P; | ||
1566 | glMatrixMode(GL_PROJECTION); | ||
1567 | glPushMatrix(); | ||
1568 | glLoadMatrixf(newP.m); | ||
1569 | gGLObliqueProjectionInverse = LLMatrix4(newP.inverse().transpose().m); | ||
1570 | glMatrixMode(GL_MODELVIEW); | ||
1571 | } | ||
1572 | |||
1573 | LLGLUserClipPlane::~LLGLUserClipPlane() | ||
1574 | { | ||
1575 | glMatrixMode(GL_PROJECTION); | ||
1576 | glPopMatrix(); | ||
1577 | glMatrixMode(GL_MODELVIEW); | ||
1578 | } | ||
1579 | |||
1580 | LLGLNamePool::LLGLNamePool() | ||
1581 | { | ||
1582 | } | ||
1583 | |||
1584 | void LLGLNamePool::registerPool(LLGLNamePool* pool) | ||
1585 | { | ||
1586 | pool_list_t::iterator iter = std::find(sInstances.begin(), sInstances.end(), pool); | ||
1587 | if (iter == sInstances.end()) | ||
1588 | { | ||
1589 | sInstances.push_back(pool); | ||
1590 | } | ||
1591 | } | ||
1592 | |||
1593 | LLGLNamePool::~LLGLNamePool() | ||
1594 | { | ||
1595 | pool_list_t::iterator iter = std::find(sInstances.begin(), sInstances.end(), this); | ||
1596 | if (iter != sInstances.end()) | ||
1597 | { | ||
1598 | sInstances.erase(iter); | ||
1599 | } | ||
1600 | } | ||
1601 | |||
1602 | void LLGLNamePool::upkeep() | ||
1603 | { | ||
1604 | std::sort(mNameList.begin(), mNameList.end(), CompareUsed()); | ||
1605 | } | ||
1606 | |||
1607 | void LLGLNamePool::cleanup() | ||
1608 | { | ||
1609 | for (name_list_t::iterator iter = mNameList.begin(); iter != mNameList.end(); ++iter) | ||
1610 | { | ||
1611 | releaseName(iter->name); | ||
1612 | } | ||
1613 | |||
1614 | mNameList.clear(); | ||
1615 | } | ||
1616 | |||
1617 | GLuint LLGLNamePool::allocate() | ||
1618 | { | ||
1619 | for (name_list_t::iterator iter = mNameList.begin(); iter != mNameList.end(); ++iter) | ||
1620 | { | ||
1621 | if (!iter->used) | ||
1622 | { | ||
1623 | iter->used = TRUE; | ||
1624 | return iter->name; | ||
1625 | } | ||
1626 | } | ||
1627 | |||
1628 | NameEntry entry; | ||
1629 | entry.name = allocateName(); | ||
1630 | entry.used = TRUE; | ||
1631 | mNameList.push_back(entry); | ||
1632 | |||
1633 | return entry.name; | ||
1634 | } | ||
1635 | |||
1636 | void LLGLNamePool::release(GLuint name) | ||
1637 | { | ||
1638 | for (name_list_t::iterator iter = mNameList.begin(); iter != mNameList.end(); ++iter) | ||
1639 | { | ||
1640 | if (iter->name == name) | ||
1641 | { | ||
1642 | iter->used = FALSE; | ||
1643 | return; | ||
1644 | } | ||
1645 | } | ||
1646 | } | ||
1647 | |||
1648 | //static | ||
1649 | void LLGLNamePool::upkeepPools() | ||
1650 | { | ||
1651 | for (pool_list_t::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter) | ||
1652 | { | ||
1653 | LLGLNamePool* pool = *iter; | ||
1654 | pool->upkeep(); | ||
1655 | } | ||
1656 | } | ||
1657 | |||
1658 | //static | ||
1659 | void LLGLNamePool::cleanupPools() | ||
1660 | { | ||
1661 | for (pool_list_t::iterator iter = sInstances.begin(); iter != sInstances.end(); ++iter) | ||
1662 | { | ||
1663 | LLGLNamePool* pool = *iter; | ||
1664 | pool->cleanup(); | ||
1665 | } | ||
1666 | } | ||
1667 | |||
1668 | LLGLDepthTest::LLGLDepthTest(GLboolean depth_enabled, GLboolean write_enabled, GLenum depth_func) | ||
1669 | : mPrevDepthEnabled(sDepthEnabled), mPrevDepthFunc(sDepthFunc), mPrevWriteEnabled(sWriteEnabled) | ||
1670 | { | ||
1671 | if (depth_enabled != sDepthEnabled) | ||
1672 | { | ||
1673 | gGL.flush(); | ||
1674 | if (depth_enabled) glEnable(GL_DEPTH_TEST); | ||
1675 | else glDisable(GL_DEPTH_TEST); | ||
1676 | sDepthEnabled = depth_enabled; | ||
1677 | } | ||
1678 | if (depth_func != sDepthFunc) | ||
1679 | { | ||
1680 | gGL.flush(); | ||
1681 | glDepthFunc(depth_func); | ||
1682 | sDepthFunc = depth_func; | ||
1683 | } | ||
1684 | if (write_enabled != sWriteEnabled) | ||
1685 | { | ||
1686 | gGL.flush(); | ||
1687 | glDepthMask(write_enabled); | ||
1688 | sWriteEnabled = write_enabled; | ||
1689 | } | ||
1690 | } | ||
1691 | |||
1692 | LLGLDepthTest::~LLGLDepthTest() | ||
1693 | { | ||
1694 | if (sDepthEnabled != mPrevDepthEnabled ) | ||
1695 | { | ||
1696 | gGL.flush(); | ||
1697 | if (mPrevDepthEnabled) glEnable(GL_DEPTH_TEST); | ||
1698 | else glDisable(GL_DEPTH_TEST); | ||
1699 | sDepthEnabled = mPrevDepthEnabled; | ||
1700 | } | ||
1701 | if (sDepthFunc != mPrevDepthFunc) | ||
1702 | { | ||
1703 | gGL.flush(); | ||
1704 | glDepthFunc(mPrevDepthFunc); | ||
1705 | sDepthFunc = mPrevDepthFunc; | ||
1706 | } | ||
1707 | if (sWriteEnabled != mPrevWriteEnabled ) | ||
1708 | { | ||
1709 | gGL.flush(); | ||
1710 | glDepthMask(mPrevWriteEnabled); | ||
1711 | sWriteEnabled = mPrevWriteEnabled; | ||
1712 | } | ||
1713 | } | ||
1714 | |||
1715 | LLGLClampToFarClip::LLGLClampToFarClip(glh::matrix4f P) | ||
1716 | { | ||
1717 | for (U32 i = 0; i < 4; i++) | ||
1718 | { | ||
1719 | P.element(2, i) = P.element(3, i) * 0.99999f; | ||
1720 | } | ||
1721 | |||
1722 | glMatrixMode(GL_PROJECTION); | ||
1723 | glPushMatrix(); | ||
1724 | glLoadMatrixf(P.m); | ||
1725 | glMatrixMode(GL_MODELVIEW); | ||
1726 | } | ||
1727 | |||
1728 | LLGLClampToFarClip::~LLGLClampToFarClip() | ||
1729 | { | ||
1730 | glMatrixMode(GL_PROJECTION); | ||
1731 | glPopMatrix(); | ||
1732 | glMatrixMode(GL_MODELVIEW); | ||
1733 | } | ||
1734 | |||
diff --git a/linden/indra/llwindow/llgl.h b/linden/indra/llwindow/llgl.h deleted file mode 100644 index 2618dca..0000000 --- a/linden/indra/llwindow/llgl.h +++ /dev/null | |||
@@ -1,377 +0,0 @@ | |||
1 | /** | ||
2 | * @file llgl.h | ||
3 | * @brief LLGL definition | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | #ifndef LL_LLGL_H | ||
33 | #define LL_LLGL_H | ||
34 | |||
35 | // This file contains various stuff for handling gl extensions and other gl related stuff. | ||
36 | |||
37 | #include <string> | ||
38 | #include <map> | ||
39 | |||
40 | #include "llerror.h" | ||
41 | #include "v4color.h" | ||
42 | #include "llstring.h" | ||
43 | #include "stdtypes.h" | ||
44 | #include "v4math.h" | ||
45 | #include "llplane.h" | ||
46 | #include "llgltypes.h" | ||
47 | |||
48 | #include "llglheaders.h" | ||
49 | #include "glh/glh_linear.h" | ||
50 | |||
51 | extern BOOL gDebugGL; | ||
52 | |||
53 | #define LL_GL_ERRS LL_ERRS("RenderState") | ||
54 | |||
55 | class LLSD; | ||
56 | |||
57 | // Manage GL extensions... | ||
58 | class LLGLManager | ||
59 | { | ||
60 | public: | ||
61 | LLGLManager(); | ||
62 | |||
63 | bool initGL(); | ||
64 | void shutdownGL(); | ||
65 | |||
66 | void initWGL(); // Initializes stupid WGL extensions | ||
67 | |||
68 | LLString getRawGLString(); // For sending to simulator | ||
69 | |||
70 | BOOL mInited; | ||
71 | BOOL mIsDisabled; | ||
72 | |||
73 | // Extensions used by everyone | ||
74 | BOOL mHasMultitexture; | ||
75 | S32 mNumTextureUnits; | ||
76 | BOOL mHasMipMapGeneration; | ||
77 | BOOL mHasPalettedTextures; | ||
78 | BOOL mHasCompressedTextures; | ||
79 | BOOL mHasFramebufferObject; | ||
80 | |||
81 | // ARB Extensions | ||
82 | BOOL mHasVertexBufferObject; | ||
83 | BOOL mHasPBuffer; | ||
84 | BOOL mHasShaderObjects; | ||
85 | BOOL mHasVertexShader; | ||
86 | BOOL mHasFragmentShader; | ||
87 | BOOL mHasOcclusionQuery; | ||
88 | BOOL mHasPointParameters; | ||
89 | |||
90 | // Other extensions. | ||
91 | BOOL mHasAnisotropic; | ||
92 | BOOL mHasARBEnvCombine; | ||
93 | BOOL mHasCubeMap; | ||
94 | |||
95 | // Vendor-specific extensions | ||
96 | BOOL mIsATI; | ||
97 | BOOL mIsNVIDIA; | ||
98 | BOOL mIsIntel; | ||
99 | BOOL mIsGF2or4MX; | ||
100 | BOOL mIsGF3; | ||
101 | BOOL mIsGFFX; | ||
102 | BOOL mATIOffsetVerticalLines; | ||
103 | |||
104 | // Whether this version of GL is good enough for SL to use | ||
105 | BOOL mHasRequirements; | ||
106 | |||
107 | // Misc extensions | ||
108 | BOOL mHasSeparateSpecularColor; | ||
109 | |||
110 | S32 mDriverVersionMajor; | ||
111 | S32 mDriverVersionMinor; | ||
112 | S32 mDriverVersionRelease; | ||
113 | F32 mGLVersion; // e.g = 1.4 | ||
114 | LLString mDriverVersionVendorString; | ||
115 | |||
116 | S32 mVRAM; // VRAM in MB | ||
117 | S32 mGLMaxVertexRange; | ||
118 | S32 mGLMaxIndexRange; | ||
119 | |||
120 | void getPixelFormat(); // Get the best pixel format | ||
121 | |||
122 | LLString getGLInfoString(); | ||
123 | void printGLInfoString(); | ||
124 | void getGLInfo(LLSD& info); | ||
125 | |||
126 | // In ALL CAPS | ||
127 | LLString mGLVendor; | ||
128 | LLString mGLVendorShort; | ||
129 | |||
130 | // In ALL CAPS | ||
131 | LLString mGLRenderer; | ||
132 | |||
133 | private: | ||
134 | void initExtensions(); | ||
135 | void initGLStates(); | ||
136 | void initGLImages(); | ||
137 | }; | ||
138 | |||
139 | extern LLGLManager gGLManager; | ||
140 | |||
141 | class LLQuaternion; | ||
142 | class LLMatrix4; | ||
143 | |||
144 | void rotate_quat(LLQuaternion& rotation); | ||
145 | |||
146 | void flush_glerror(); // Flush GL errors when we know we're handling them correctly. | ||
147 | |||
148 | void assert_glerror(); | ||
149 | |||
150 | void clear_glerror(); | ||
151 | |||
152 | //#if LL_DEBUG | ||
153 | # define stop_glerror() assert_glerror() | ||
154 | # define llglassertok() assert_glerror() | ||
155 | //#else | ||
156 | //# define stop_glerror() | ||
157 | //# define llglassertok() | ||
158 | //#endif | ||
159 | |||
160 | #define llglassertok_always() assert_glerror() | ||
161 | |||
162 | //////////////////////// | ||
163 | // | ||
164 | // Note: U32's are GLEnum's... | ||
165 | // | ||
166 | |||
167 | // This is a class for GL state management | ||
168 | |||
169 | /* | ||
170 | GL STATE MANAGEMENT DESCRIPTION | ||
171 | |||
172 | LLGLState and its two subclasses, LLGLEnable and LLGLDisable, manage the current | ||
173 | enable/disable states of the GL to prevent redundant setting of state within a | ||
174 | render path or the accidental corruption of what state the next path expects. | ||
175 | |||
176 | Essentially, wherever you would call glEnable set a state and then | ||
177 | subsequently reset it by calling glDisable (or vice versa), make an instance of | ||
178 | LLGLEnable with the state you want to set, and assume it will be restored to its | ||
179 | original state when that instance of LLGLEnable is destroyed. It is good practice | ||
180 | to exploit stack frame controls for optimal setting/unsetting and readability of | ||
181 | code. In llglstates.h, there are a collection of helper classes that define groups | ||
182 | of enables/disables that can cause multiple states to be set with the creation of | ||
183 | one instance. | ||
184 | |||
185 | Sample usage: | ||
186 | |||
187 | //disable lighting for rendering hud objects | ||
188 | //INCORRECT USAGE | ||
189 | LLGLEnable lighting(GL_LIGHTING); | ||
190 | renderHUD(); | ||
191 | LLGLDisable lighting(GL_LIGHTING); | ||
192 | |||
193 | //CORRECT USAGE | ||
194 | { | ||
195 | LLGLEnable lighting(GL_LIGHTING); | ||
196 | renderHUD(); | ||
197 | } | ||
198 | |||
199 | If a state is to be set on a conditional, the following mechanism | ||
200 | is useful: | ||
201 | |||
202 | { | ||
203 | LLGLEnable lighting(light_hud ? GL_LIGHTING : 0); | ||
204 | renderHUD(); | ||
205 | } | ||
206 | |||
207 | A LLGLState initialized with a parameter of 0 does nothing. | ||
208 | |||
209 | LLGLState works by maintaining a map of the current GL states, and ignoring redundant | ||
210 | enables/disables. If a redundant call is attempted, it becomes a noop, otherwise, | ||
211 | it is set in the constructor and reset in the destructor. | ||
212 | |||
213 | For debugging GL state corruption, running with debug enabled will trigger asserts | ||
214 | if the existing GL state does not match the expected GL state. | ||
215 | |||
216 | */ | ||
217 | class LLGLState | ||
218 | { | ||
219 | public: | ||
220 | static void initClass(); | ||
221 | static void restoreGL(); | ||
222 | |||
223 | static void resetTextureStates(); | ||
224 | static void dumpStates(); | ||
225 | static void checkStates(); | ||
226 | static void checkTextureChannels(); | ||
227 | static void checkClientArrays(U32 data_mask = 0x0001); | ||
228 | |||
229 | protected: | ||
230 | static std::map<LLGLenum, LLGLboolean> sStateMap; | ||
231 | |||
232 | public: | ||
233 | enum { CURRENT_STATE = -2 }; | ||
234 | LLGLState(LLGLenum state, S32 enabled = CURRENT_STATE); | ||
235 | ~LLGLState(); | ||
236 | void setEnabled(S32 enabled); | ||
237 | void enable() { setEnabled(TRUE); } | ||
238 | void disable() { setEnabled(FALSE); } | ||
239 | protected: | ||
240 | LLGLenum mState; | ||
241 | BOOL mWasEnabled; | ||
242 | BOOL mIsEnabled; | ||
243 | }; | ||
244 | |||
245 | // New LLGLState class wrappers that don't depend on actual GL flags. | ||
246 | class LLGLEnableBlending : public LLGLState | ||
247 | { | ||
248 | public: | ||
249 | LLGLEnableBlending(bool enable); | ||
250 | }; | ||
251 | |||
252 | class LLGLEnableAlphaReject : public LLGLState | ||
253 | { | ||
254 | public: | ||
255 | LLGLEnableAlphaReject(bool enable); | ||
256 | }; | ||
257 | |||
258 | /// TODO: Being deprecated. | ||
259 | class LLGLEnable : public LLGLState | ||
260 | { | ||
261 | public: | ||
262 | LLGLEnable(LLGLenum state) : LLGLState(state, TRUE) {} | ||
263 | }; | ||
264 | |||
265 | /// TODO: Being deprecated. | ||
266 | class LLGLDisable : public LLGLState | ||
267 | { | ||
268 | public: | ||
269 | LLGLDisable(LLGLenum state) : LLGLState(state, FALSE) {} | ||
270 | }; | ||
271 | |||
272 | /* | ||
273 | Store and modify projection matrix to create an oblique | ||
274 | projection that clips to the specified plane. Oblique | ||
275 | projections alter values in the depth buffer, so this | ||
276 | class should not be used mid-renderpass. | ||
277 | |||
278 | Restores projection matrix on destruction. | ||
279 | GL_MODELVIEW_MATRIX is active whenever program execution | ||
280 | leaves this class. | ||
281 | Does not stack. | ||
282 | Caches inverse of projection matrix used in gGLObliqueProjectionInverse | ||
283 | */ | ||
284 | class LLGLUserClipPlane | ||
285 | { | ||
286 | public: | ||
287 | |||
288 | LLGLUserClipPlane(const LLPlane& plane, const glh::matrix4f& modelview, const glh::matrix4f& projection); | ||
289 | ~LLGLUserClipPlane(); | ||
290 | |||
291 | void setPlane(F32 a, F32 b, F32 c, F32 d); | ||
292 | |||
293 | private: | ||
294 | glh::matrix4f mProjection; | ||
295 | glh::matrix4f mModelview; | ||
296 | }; | ||
297 | |||
298 | /* | ||
299 | Modify and load projection matrix to push depth values to far clip plane. | ||
300 | |||
301 | Restores projection matrix on destruction. | ||
302 | GL_MODELVIEW_MATRIX is active whenever program execution | ||
303 | leaves this class. | ||
304 | Does not stack. | ||
305 | */ | ||
306 | class LLGLClampToFarClip | ||
307 | { | ||
308 | public: | ||
309 | LLGLClampToFarClip(glh::matrix4f projection); | ||
310 | ~LLGLClampToFarClip(); | ||
311 | }; | ||
312 | |||
313 | /* | ||
314 | Generic pooling scheme for things which use GL names (used for occlusion queries and vertex buffer objects). | ||
315 | Prevents thrashing of GL name caches by avoiding calls to glGenFoo and glDeleteFoo. | ||
316 | */ | ||
317 | class LLGLNamePool | ||
318 | { | ||
319 | public: | ||
320 | typedef struct | ||
321 | { | ||
322 | GLuint name; | ||
323 | BOOL used; | ||
324 | } NameEntry; | ||
325 | |||
326 | struct CompareUsed | ||
327 | { | ||
328 | bool operator()(const NameEntry& lhs, const NameEntry& rhs) | ||
329 | { | ||
330 | return lhs.used < rhs.used; //FALSE entries first | ||
331 | } | ||
332 | }; | ||
333 | |||
334 | typedef std::vector<NameEntry> name_list_t; | ||
335 | name_list_t mNameList; | ||
336 | |||
337 | LLGLNamePool(); | ||
338 | virtual ~LLGLNamePool(); | ||
339 | |||
340 | void upkeep(); | ||
341 | void cleanup(); | ||
342 | |||
343 | GLuint allocate(); | ||
344 | void release(GLuint name); | ||
345 | |||
346 | static void registerPool(LLGLNamePool* pool); | ||
347 | static void upkeepPools(); | ||
348 | static void cleanupPools(); | ||
349 | |||
350 | protected: | ||
351 | typedef std::vector<LLGLNamePool*> pool_list_t; | ||
352 | static pool_list_t sInstances; | ||
353 | |||
354 | virtual GLuint allocateName() = 0; | ||
355 | virtual void releaseName(GLuint name) = 0; | ||
356 | }; | ||
357 | |||
358 | extern LLMatrix4 gGLObliqueProjectionInverse; | ||
359 | |||
360 | #include "llglstates.h" | ||
361 | |||
362 | void init_glstates(); | ||
363 | void enable_vertex_weighting(const S32 index); | ||
364 | void disable_vertex_weighting(const S32 index); | ||
365 | void enable_binormals(const S32 index); | ||
366 | void disable_binormals(const S32 index); | ||
367 | void enable_cloth_weights(const S32 index); | ||
368 | void disable_cloth_weights(const S32 index); | ||
369 | void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights); | ||
370 | void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights); | ||
371 | void set_binormals(const S32 index, const U32 stride, const LLVector3 *binormals); | ||
372 | void set_palette(U8* palette_data); | ||
373 | void parse_gl_version( S32* major, S32* minor, S32* release, LLString* vendor_specific ); | ||
374 | |||
375 | extern BOOL gClothRipple; | ||
376 | extern BOOL gNoRender; | ||
377 | #endif // LL_LLGL_H | ||
diff --git a/linden/indra/llwindow/llglheaders.h b/linden/indra/llwindow/llglheaders.h deleted file mode 100644 index d66fbe4..0000000 --- a/linden/indra/llwindow/llglheaders.h +++ /dev/null | |||
@@ -1,597 +0,0 @@ | |||
1 | /** | ||
2 | * @file llglheaders.h | ||
3 | * @brief LLGL definitions | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | #ifndef LL_LLGLHEADERS_H | ||
33 | #define LL_LLGLHEADERS_H | ||
34 | |||
35 | #if LL_LINUX | ||
36 | # ifndef LL_MESA | ||
37 | # define LL_MESA 1 // force MESA | ||
38 | # endif | ||
39 | # ifndef LL_MESA_HEADLESS | ||
40 | # define LL_MESA_HEADLESS 1 // force MESA HEADLESS | ||
41 | # endif | ||
42 | #endif | ||
43 | |||
44 | #if LL_MESA | ||
45 | //---------------------------------------------------------------------------- | ||
46 | // MESA headers | ||
47 | // quotes so we get libraries/.../GL/ version | ||
48 | #define GL_GLEXT_PROTOTYPES | ||
49 | #include "GL/gl.h" | ||
50 | #include "GL/glext.h" | ||
51 | #include "GL/glu.h" | ||
52 | |||
53 | // The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly | ||
54 | # define __APPLE__ | ||
55 | # include "GL/glh_extensions.h" | ||
56 | # undef __APPLE__ | ||
57 | |||
58 | #elif LL_LINUX | ||
59 | //---------------------------------------------------------------------------- | ||
60 | // Linux, MESA headers, but not necessarily assuming MESA runtime. | ||
61 | // quotes so we get libraries/.../GL/ version | ||
62 | #include "GL/gl.h" | ||
63 | #include "GL/glext.h" | ||
64 | #include "GL/glu.h" | ||
65 | |||
66 | |||
67 | #if LL_LINUX && !LL_MESA_HEADLESS | ||
68 | // The __APPLE__ kludge is to make glh_extensions.h not symbol-clash horribly | ||
69 | # define __APPLE__ | ||
70 | # include "GL/glh_extensions.h" | ||
71 | # undef __APPLE__ | ||
72 | |||
73 | /* Although SDL very likely ends up calling glXGetProcAddress() itself, | ||
74 | if we use SDL_GL_GetProcAddress() then we get bogus addresses back on | ||
75 | some systems. Weird. */ | ||
76 | /*# include "SDL/SDL.h" | ||
77 | # define GLH_EXT_GET_PROC_ADDRESS(p) SDL_GL_GetProcAddress(p) */ | ||
78 | #define GLX_GLXEXT_PROTOTYPES 1 | ||
79 | # include "GL/glx.h" | ||
80 | # include "GL/glxext.h" | ||
81 | // Use glXGetProcAddressARB instead of glXGetProcAddress - the ARB symbol | ||
82 | // is considered 'legacy' but works on more machines. | ||
83 | # define GLH_EXT_GET_PROC_ADDRESS(p) glXGetProcAddressARB((const GLubyte*)(p)) | ||
84 | // Whee, the X headers define 'Status'. Undefine to avoid confusion. | ||
85 | #undef Status | ||
86 | #endif // LL_LINUX && !LL_MESA_HEADLESS | ||
87 | |||
88 | |||
89 | // GL_ARB_vertex_buffer_object | ||
90 | extern PFNGLBINDBUFFERARBPROC glBindBufferARB; | ||
91 | extern PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB; | ||
92 | extern PFNGLGENBUFFERSARBPROC glGenBuffersARB; | ||
93 | extern PFNGLISBUFFERARBPROC glIsBufferARB; | ||
94 | extern PFNGLBUFFERDATAARBPROC glBufferDataARB; | ||
95 | extern PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB; | ||
96 | extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB; | ||
97 | extern PFNGLMAPBUFFERARBPROC glMapBufferARB; | ||
98 | extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB; | ||
99 | extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB; | ||
100 | extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB; | ||
101 | |||
102 | // GL_ATI_vertex_array_object | ||
103 | extern PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI; | ||
104 | extern PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI; | ||
105 | extern PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI; | ||
106 | extern PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI; | ||
107 | extern PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI; | ||
108 | extern PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI; | ||
109 | extern PFNGLARRAYOBJECTATIPROC glArrayObjectATI; | ||
110 | extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI; | ||
111 | extern PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI; | ||
112 | extern PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI; | ||
113 | extern PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI; | ||
114 | extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI; | ||
115 | extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI; | ||
116 | |||
117 | // GL_ARB_occlusion_query | ||
118 | extern PFNGLGENQUERIESARBPROC glGenQueriesARB; | ||
119 | extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB; | ||
120 | extern PFNGLISQUERYARBPROC glIsQueryARB; | ||
121 | extern PFNGLBEGINQUERYARBPROC glBeginQueryARB; | ||
122 | extern PFNGLENDQUERYARBPROC glEndQueryARB; | ||
123 | extern PFNGLGETQUERYIVARBPROC glGetQueryivARB; | ||
124 | extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB; | ||
125 | extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB; | ||
126 | |||
127 | // GL_ARB_point_parameters | ||
128 | extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB; | ||
129 | extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB; | ||
130 | |||
131 | // GL_ARB_shader_objects | ||
132 | extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; | ||
133 | extern PFNGLGETHANDLEARBPROC glGetHandleARB; | ||
134 | extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB; | ||
135 | extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; | ||
136 | extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; | ||
137 | extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; | ||
138 | extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; | ||
139 | extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; | ||
140 | extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; | ||
141 | extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; | ||
142 | extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB; | ||
143 | extern PFNGLUNIFORM1FARBPROC glUniform1fARB; | ||
144 | extern PFNGLUNIFORM2FARBPROC glUniform2fARB; | ||
145 | extern PFNGLUNIFORM3FARBPROC glUniform3fARB; | ||
146 | extern PFNGLUNIFORM4FARBPROC glUniform4fARB; | ||
147 | extern PFNGLUNIFORM1IARBPROC glUniform1iARB; | ||
148 | extern PFNGLUNIFORM2IARBPROC glUniform2iARB; | ||
149 | extern PFNGLUNIFORM3IARBPROC glUniform3iARB; | ||
150 | extern PFNGLUNIFORM4IARBPROC glUniform4iARB; | ||
151 | extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB; | ||
152 | extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB; | ||
153 | extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB; | ||
154 | extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB; | ||
155 | extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB; | ||
156 | extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB; | ||
157 | extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB; | ||
158 | extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB; | ||
159 | extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB; | ||
160 | extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB; | ||
161 | extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB; | ||
162 | extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB; | ||
163 | extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; | ||
164 | extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; | ||
165 | extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB; | ||
166 | extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; | ||
167 | extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB; | ||
168 | extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB; | ||
169 | extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB; | ||
170 | extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB; | ||
171 | |||
172 | // GL_ARB_vertex_shader | ||
173 | extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB; | ||
174 | extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB; | ||
175 | extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB; | ||
176 | extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB; | ||
177 | extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB; | ||
178 | extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB; | ||
179 | extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB; | ||
180 | extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB; | ||
181 | extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB; | ||
182 | extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB; | ||
183 | extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB; | ||
184 | extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB; | ||
185 | extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB; | ||
186 | extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB; | ||
187 | extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB; | ||
188 | extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB; | ||
189 | extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB; | ||
190 | extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB; | ||
191 | extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB; | ||
192 | extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB; | ||
193 | extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB; | ||
194 | extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB; | ||
195 | extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB; | ||
196 | extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB; | ||
197 | extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB; | ||
198 | extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB; | ||
199 | extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB; | ||
200 | extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB; | ||
201 | extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB; | ||
202 | extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; | ||
203 | extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB; | ||
204 | extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB; | ||
205 | extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB; | ||
206 | extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB; | ||
207 | extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB; | ||
208 | extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB; | ||
209 | extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; | ||
210 | extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; | ||
211 | extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; | ||
212 | extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB; | ||
213 | extern PFNGLBINDPROGRAMARBPROC glBindProgramARB; | ||
214 | extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB; | ||
215 | extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB; | ||
216 | extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB; | ||
217 | extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB; | ||
218 | extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB; | ||
219 | extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB; | ||
220 | extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB; | ||
221 | extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB; | ||
222 | extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB; | ||
223 | extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB; | ||
224 | extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB; | ||
225 | extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB; | ||
226 | extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB; | ||
227 | extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB; | ||
228 | extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB; | ||
229 | extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB; | ||
230 | extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB; | ||
231 | extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB; | ||
232 | extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB; | ||
233 | extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB; | ||
234 | extern PFNGLISPROGRAMARBPROC glIsProgramARB; | ||
235 | extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; | ||
236 | extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB; | ||
237 | extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; | ||
238 | |||
239 | extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB; | ||
240 | extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glGetCompressedTexImageARB; | ||
241 | |||
242 | extern PFNGLCOLORTABLEEXTPROC glColorTableEXT; | ||
243 | |||
244 | //GL_EXT_framebuffer_object | ||
245 | extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; | ||
246 | extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; | ||
247 | extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; | ||
248 | extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; | ||
249 | extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; | ||
250 | extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT; | ||
251 | extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT; | ||
252 | extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; | ||
253 | extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; | ||
254 | extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; | ||
255 | extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; | ||
256 | extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT; | ||
257 | extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; | ||
258 | extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT; | ||
259 | extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; | ||
260 | extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT; | ||
261 | extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT; | ||
262 | |||
263 | |||
264 | #elif LL_WINDOWS | ||
265 | |||
266 | // windows gl headers depend on things like APIENTRY, so include windows. | ||
267 | #define WIN32_LEAN_AND_MEAN | ||
268 | #include <winsock2.h> | ||
269 | #include <windows.h> | ||
270 | |||
271 | //---------------------------------------------------------------------------- | ||
272 | #include <GL/gl.h> | ||
273 | #include <GL/glu.h> | ||
274 | |||
275 | // quotes so we get libraries/.../GL/ version | ||
276 | #include "GL/glext.h" | ||
277 | #include "GL/glh_extensions.h" | ||
278 | |||
279 | |||
280 | // GL_ARB_vertex_buffer_object | ||
281 | extern PFNGLBINDBUFFERARBPROC glBindBufferARB; | ||
282 | extern PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB; | ||
283 | extern PFNGLGENBUFFERSARBPROC glGenBuffersARB; | ||
284 | extern PFNGLISBUFFERARBPROC glIsBufferARB; | ||
285 | extern PFNGLBUFFERDATAARBPROC glBufferDataARB; | ||
286 | extern PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB; | ||
287 | extern PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB; | ||
288 | extern PFNGLMAPBUFFERARBPROC glMapBufferARB; | ||
289 | extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB; | ||
290 | extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB; | ||
291 | extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB; | ||
292 | |||
293 | // GL_ATI_vertex_array_object | ||
294 | extern PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI; | ||
295 | extern PFNGLISOBJECTBUFFERATIPROC glIsObjectBufferATI; | ||
296 | extern PFNGLUPDATEOBJECTBUFFERATIPROC glUpdateObjectBufferATI; | ||
297 | extern PFNGLGETOBJECTBUFFERFVATIPROC glGetObjectBufferfvATI; | ||
298 | extern PFNGLGETOBJECTBUFFERIVATIPROC glGetObjectBufferivATI; | ||
299 | extern PFNGLFREEOBJECTBUFFERATIPROC glFreeObjectBufferATI; | ||
300 | extern PFNGLARRAYOBJECTATIPROC glArrayObjectATI; | ||
301 | extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glVertexAttribArrayObjectATI; | ||
302 | extern PFNGLGETARRAYOBJECTFVATIPROC glGetArrayObjectfvATI; | ||
303 | extern PFNGLGETARRAYOBJECTIVATIPROC glGetArrayObjectivATI; | ||
304 | extern PFNGLVARIANTARRAYOBJECTATIPROC glVariantObjectArrayATI; | ||
305 | extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC glGetVariantArrayObjectfvATI; | ||
306 | extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC glGetVariantArrayObjectivATI; | ||
307 | |||
308 | extern PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT; | ||
309 | |||
310 | // GL_ARB_occlusion_query | ||
311 | extern PFNGLGENQUERIESARBPROC glGenQueriesARB; | ||
312 | extern PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB; | ||
313 | extern PFNGLISQUERYARBPROC glIsQueryARB; | ||
314 | extern PFNGLBEGINQUERYARBPROC glBeginQueryARB; | ||
315 | extern PFNGLENDQUERYARBPROC glEndQueryARB; | ||
316 | extern PFNGLGETQUERYIVARBPROC glGetQueryivARB; | ||
317 | extern PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB; | ||
318 | extern PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB; | ||
319 | |||
320 | // GL_ARB_point_parameters | ||
321 | extern PFNGLPOINTPARAMETERFARBPROC glPointParameterfARB; | ||
322 | extern PFNGLPOINTPARAMETERFVARBPROC glPointParameterfvARB; | ||
323 | |||
324 | // GL_ARB_shader_objects | ||
325 | extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; | ||
326 | extern PFNGLGETHANDLEARBPROC glGetHandleARB; | ||
327 | extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB; | ||
328 | extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; | ||
329 | extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; | ||
330 | extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; | ||
331 | extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; | ||
332 | extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; | ||
333 | extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; | ||
334 | extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; | ||
335 | extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB; | ||
336 | extern PFNGLUNIFORM1FARBPROC glUniform1fARB; | ||
337 | extern PFNGLUNIFORM2FARBPROC glUniform2fARB; | ||
338 | extern PFNGLUNIFORM3FARBPROC glUniform3fARB; | ||
339 | extern PFNGLUNIFORM4FARBPROC glUniform4fARB; | ||
340 | extern PFNGLUNIFORM1IARBPROC glUniform1iARB; | ||
341 | extern PFNGLUNIFORM2IARBPROC glUniform2iARB; | ||
342 | extern PFNGLUNIFORM3IARBPROC glUniform3iARB; | ||
343 | extern PFNGLUNIFORM4IARBPROC glUniform4iARB; | ||
344 | extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB; | ||
345 | extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB; | ||
346 | extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB; | ||
347 | extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB; | ||
348 | extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB; | ||
349 | extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB; | ||
350 | extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB; | ||
351 | extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB; | ||
352 | extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB; | ||
353 | extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB; | ||
354 | extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB; | ||
355 | extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB; | ||
356 | extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; | ||
357 | extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; | ||
358 | extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB; | ||
359 | extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; | ||
360 | extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB; | ||
361 | extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB; | ||
362 | extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB; | ||
363 | extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB; | ||
364 | |||
365 | // GL_ARB_vertex_shader | ||
366 | extern PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB; | ||
367 | extern PFNGLVERTEXATTRIB1DVARBPROC glVertexAttrib1dvARB; | ||
368 | extern PFNGLVERTEXATTRIB1FARBPROC glVertexAttrib1fARB; | ||
369 | extern PFNGLVERTEXATTRIB1FVARBPROC glVertexAttrib1fvARB; | ||
370 | extern PFNGLVERTEXATTRIB1SARBPROC glVertexAttrib1sARB; | ||
371 | extern PFNGLVERTEXATTRIB1SVARBPROC glVertexAttrib1svARB; | ||
372 | extern PFNGLVERTEXATTRIB2DARBPROC glVertexAttrib2dARB; | ||
373 | extern PFNGLVERTEXATTRIB2DVARBPROC glVertexAttrib2dvARB; | ||
374 | extern PFNGLVERTEXATTRIB2FARBPROC glVertexAttrib2fARB; | ||
375 | extern PFNGLVERTEXATTRIB2FVARBPROC glVertexAttrib2fvARB; | ||
376 | extern PFNGLVERTEXATTRIB2SARBPROC glVertexAttrib2sARB; | ||
377 | extern PFNGLVERTEXATTRIB2SVARBPROC glVertexAttrib2svARB; | ||
378 | extern PFNGLVERTEXATTRIB3DARBPROC glVertexAttrib3dARB; | ||
379 | extern PFNGLVERTEXATTRIB3DVARBPROC glVertexAttrib3dvARB; | ||
380 | extern PFNGLVERTEXATTRIB3FARBPROC glVertexAttrib3fARB; | ||
381 | extern PFNGLVERTEXATTRIB3FVARBPROC glVertexAttrib3fvARB; | ||
382 | extern PFNGLVERTEXATTRIB3SARBPROC glVertexAttrib3sARB; | ||
383 | extern PFNGLVERTEXATTRIB3SVARBPROC glVertexAttrib3svARB; | ||
384 | extern PFNGLVERTEXATTRIB4NBVARBPROC glVertexAttrib4nbvARB; | ||
385 | extern PFNGLVERTEXATTRIB4NIVARBPROC glVertexAttrib4nivARB; | ||
386 | extern PFNGLVERTEXATTRIB4NSVARBPROC glVertexAttrib4nsvARB; | ||
387 | extern PFNGLVERTEXATTRIB4NUBARBPROC glVertexAttrib4nubARB; | ||
388 | extern PFNGLVERTEXATTRIB4NUBVARBPROC glVertexAttrib4nubvARB; | ||
389 | extern PFNGLVERTEXATTRIB4NUIVARBPROC glVertexAttrib4nuivARB; | ||
390 | extern PFNGLVERTEXATTRIB4NUSVARBPROC glVertexAttrib4nusvARB; | ||
391 | extern PFNGLVERTEXATTRIB4BVARBPROC glVertexAttrib4bvARB; | ||
392 | extern PFNGLVERTEXATTRIB4DARBPROC glVertexAttrib4dARB; | ||
393 | extern PFNGLVERTEXATTRIB4DVARBPROC glVertexAttrib4dvARB; | ||
394 | extern PFNGLVERTEXATTRIB4FARBPROC glVertexAttrib4fARB; | ||
395 | extern PFNGLVERTEXATTRIB4FVARBPROC glVertexAttrib4fvARB; | ||
396 | extern PFNGLVERTEXATTRIB4IVARBPROC glVertexAttrib4ivARB; | ||
397 | extern PFNGLVERTEXATTRIB4SARBPROC glVertexAttrib4sARB; | ||
398 | extern PFNGLVERTEXATTRIB4SVARBPROC glVertexAttrib4svARB; | ||
399 | extern PFNGLVERTEXATTRIB4UBVARBPROC glVertexAttrib4ubvARB; | ||
400 | extern PFNGLVERTEXATTRIB4UIVARBPROC glVertexAttrib4uivARB; | ||
401 | extern PFNGLVERTEXATTRIB4USVARBPROC glVertexAttrib4usvARB; | ||
402 | extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; | ||
403 | extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; | ||
404 | extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; | ||
405 | extern PFNGLPROGRAMSTRINGARBPROC glProgramStringARB; | ||
406 | extern PFNGLBINDPROGRAMARBPROC glBindProgramARB; | ||
407 | extern PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB; | ||
408 | extern PFNGLGENPROGRAMSARBPROC glGenProgramsARB; | ||
409 | extern PFNGLPROGRAMENVPARAMETER4DARBPROC glProgramEnvParameter4dARB; | ||
410 | extern PFNGLPROGRAMENVPARAMETER4DVARBPROC glProgramEnvParameter4dvARB; | ||
411 | extern PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB; | ||
412 | extern PFNGLPROGRAMENVPARAMETER4FVARBPROC glProgramEnvParameter4fvARB; | ||
413 | extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB; | ||
414 | extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glProgramLocalParameter4dvARB; | ||
415 | extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC glProgramLocalParameter4fARB; | ||
416 | extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB; | ||
417 | extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC glGetProgramEnvParameterdvARB; | ||
418 | extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC glGetProgramEnvParameterfvARB; | ||
419 | extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB; | ||
420 | extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glGetProgramLocalParameterfvARB; | ||
421 | extern PFNGLGETPROGRAMIVARBPROC glGetProgramivARB; | ||
422 | extern PFNGLGETPROGRAMSTRINGARBPROC glGetProgramStringARB; | ||
423 | extern PFNGLGETVERTEXATTRIBDVARBPROC glGetVertexAttribdvARB; | ||
424 | extern PFNGLGETVERTEXATTRIBFVARBPROC glGetVertexAttribfvARB; | ||
425 | extern PFNGLGETVERTEXATTRIBIVARBPROC glGetVertexAttribivARB; | ||
426 | extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC glGetVertexAttribPointervARB; | ||
427 | extern PFNGLISPROGRAMARBPROC glIsProgramARB; | ||
428 | extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB; | ||
429 | extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB; | ||
430 | extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB; | ||
431 | |||
432 | //GL_EXT_framebuffer_object | ||
433 | extern PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; | ||
434 | extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; | ||
435 | extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; | ||
436 | extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; | ||
437 | extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; | ||
438 | extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT; | ||
439 | extern PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT; | ||
440 | extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; | ||
441 | extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; | ||
442 | extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; | ||
443 | extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; | ||
444 | extern PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT; | ||
445 | extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; | ||
446 | extern PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT; | ||
447 | extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; | ||
448 | extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT; | ||
449 | extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT; | ||
450 | |||
451 | |||
452 | #elif LL_DARWIN | ||
453 | //---------------------------------------------------------------------------- | ||
454 | // LL_DARWIN | ||
455 | |||
456 | #include <OpenGL/gl.h> | ||
457 | #include <OpenGL/glu.h> | ||
458 | |||
459 | #define GL_EXT_separate_specular_color 1 | ||
460 | #include <OpenGL/glext.h> | ||
461 | |||
462 | #include "GL/glh_extensions.h" | ||
463 | |||
464 | // These symbols don't exist on 10.3.9, so they have to be declared weak. Redeclaring them here fixes the problem. | ||
465 | // Note that they also must not be called on 10.3.9. This should be taken care of by a runtime check for the existence of the GL extension. | ||
466 | #include <AvailabilityMacros.h> | ||
467 | |||
468 | // GL_EXT_framebuffer_object | ||
469 | extern GLboolean glIsRenderbufferEXT(GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
470 | extern void glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
471 | extern void glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
472 | extern void glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
473 | extern void glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
474 | extern void glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
475 | extern GLboolean glIsFramebufferEXT(GLuint framebuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
476 | extern void glBindFramebufferEXT(GLenum target, GLuint framebuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
477 | extern void glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
478 | extern void glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
479 | extern GLenum glCheckFramebufferStatusEXT(GLenum target) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
480 | extern void glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
481 | extern void glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
482 | extern void glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
483 | extern void glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
484 | extern void glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
485 | extern void glGenerateMipmapEXT(GLenum target) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; | ||
486 | |||
487 | |||
488 | #ifdef __cplusplus | ||
489 | extern "C" { | ||
490 | #endif | ||
491 | // | ||
492 | // Define vertex buffer object headers on Mac | ||
493 | // | ||
494 | #ifndef GL_ARB_vertex_buffer_object | ||
495 | #define GL_BUFFER_SIZE_ARB 0x8764 | ||
496 | #define GL_BUFFER_USAGE_ARB 0x8765 | ||
497 | #define GL_ARRAY_BUFFER_ARB 0x8892 | ||
498 | #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 | ||
499 | #define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 | ||
500 | #define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 | ||
501 | #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 | ||
502 | #define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 | ||
503 | #define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 | ||
504 | #define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 | ||
505 | #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A | ||
506 | #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B | ||
507 | #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C | ||
508 | #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D | ||
509 | #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E | ||
510 | #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F | ||
511 | #define GL_READ_ONLY_ARB 0x88B8 | ||
512 | #define GL_WRITE_ONLY_ARB 0x88B9 | ||
513 | #define GL_READ_WRITE_ARB 0x88BA | ||
514 | #define GL_BUFFER_ACCESS_ARB 0x88BB | ||
515 | #define GL_BUFFER_MAPPED_ARB 0x88BC | ||
516 | #define GL_BUFFER_MAP_POINTER_ARB 0x88BD | ||
517 | #define GL_STREAM_DRAW_ARB 0x88E0 | ||
518 | #define GL_STREAM_READ_ARB 0x88E1 | ||
519 | #define GL_STREAM_COPY_ARB 0x88E2 | ||
520 | #define GL_STATIC_DRAW_ARB 0x88E4 | ||
521 | #define GL_STATIC_READ_ARB 0x88E5 | ||
522 | #define GL_STATIC_COPY_ARB 0x88E6 | ||
523 | #define GL_DYNAMIC_DRAW_ARB 0x88E8 | ||
524 | #define GL_DYNAMIC_READ_ARB 0x88E9 | ||
525 | #define GL_DYNAMIC_COPY_ARB 0x88EA | ||
526 | #endif | ||
527 | |||
528 | |||
529 | |||
530 | #ifndef GL_ARB_vertex_buffer_object | ||
531 | /* GL types for handling large vertex buffer objects */ | ||
532 | typedef intptr_t GLintptrARB; | ||
533 | typedef intptr_t GLsizeiptrARB; | ||
534 | #endif | ||
535 | |||
536 | |||
537 | #ifndef GL_ARB_vertex_buffer_object | ||
538 | #define GL_ARB_vertex_buffer_object 1 | ||
539 | #ifdef GL_GLEXT_FUNCTION_POINTERS | ||
540 | typedef void (* glBindBufferARBProcPtr) (GLenum target, GLuint buffer); | ||
541 | typedef void (* glDeleteBufferARBProcPtr) (GLsizei n, const GLuint *buffers); | ||
542 | typedef void (* glGenBuffersARBProcPtr) (GLsizei n, GLuint *buffers); | ||
543 | typedef GLboolean (* glIsBufferARBProcPtr) (GLuint buffer); | ||
544 | typedef void (* glBufferDataARBProcPtr) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); | ||
545 | typedef void (* glBufferSubDataARBProcPtr) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); | ||
546 | typedef void (* glGetBufferSubDataARBProcPtr) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); | ||
547 | typedef GLvoid* (* glMapBufferARBProcPtr) (GLenum target, GLenum access); /* Flawfinder: ignore */ | ||
548 | typedef GLboolean (* glUnmapBufferARBProcPtr) (GLenum target); | ||
549 | typedef void (* glGetBufferParameterivARBProcPtr) (GLenum target, GLenum pname, GLint *params); | ||
550 | typedef void (* glGetBufferPointervARBProcPtr) (GLenum target, GLenum pname, GLvoid* *params); | ||
551 | #else | ||
552 | extern void glBindBufferARB (GLenum, GLuint); | ||
553 | extern void glDeleteBuffersARB (GLsizei, const GLuint *); | ||
554 | extern void glGenBuffersARB (GLsizei, GLuint *); | ||
555 | extern GLboolean glIsBufferARB (GLuint); | ||
556 | extern void glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); | ||
557 | extern void glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); | ||
558 | extern void glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); | ||
559 | extern GLvoid* glMapBufferARB (GLenum, GLenum); | ||
560 | extern GLboolean glUnmapBufferARB (GLenum); | ||
561 | extern void glGetBufferParameterivARB (GLenum, GLenum, GLint *); | ||
562 | extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); | ||
563 | #endif /* GL_GLEXT_FUNCTION_POINTERS */ | ||
564 | #endif | ||
565 | |||
566 | // May be needed for DARWIN... | ||
567 | // #ifndef GL_ARB_compressed_tex_image | ||
568 | // #define GL_ARB_compressed_tex_image 1 | ||
569 | // #ifdef GL_GLEXT_FUNCTION_POINTERS | ||
570 | // typedef void (* glCompressedTexImage1D) (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid*); | ||
571 | // typedef void (* glCompressedTexImage2D) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*); | ||
572 | // typedef void (* glCompressedTexImage3D) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*); | ||
573 | // typedef void (* glCompressedTexSubImage1D) (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid*); | ||
574 | // typedef void (* glCompressedTexSubImage2D) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*); | ||
575 | // typedef void (* glCompressedTexSubImage3D) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*); | ||
576 | // typedef void (* glGetCompressedTexImage) (GLenum, GLint, GLvoid*); | ||
577 | // #else | ||
578 | // extern void glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid*); | ||
579 | // extern void glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*); | ||
580 | // extern void glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*); | ||
581 | // extern void glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid*); | ||
582 | // extern void glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*); | ||
583 | // extern void glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*); | ||
584 | // extern void glGetCompressedTexImage (GLenum, GLint, GLvoid*); | ||
585 | // #endif /* GL_GLEXT_FUNCTION_POINTERS */ | ||
586 | // #endif | ||
587 | |||
588 | #ifdef __cplusplus | ||
589 | } | ||
590 | #endif | ||
591 | |||
592 | #include <AGL/gl.h> | ||
593 | |||
594 | #endif // LL_MESA / LL_WINDOWS / LL_DARWIN | ||
595 | |||
596 | |||
597 | #endif // LL_LLGLHEADERS_H | ||
diff --git a/linden/indra/llwindow/llglstates.h b/linden/indra/llwindow/llglstates.h deleted file mode 100644 index e53640c..0000000 --- a/linden/indra/llwindow/llglstates.h +++ /dev/null | |||
@@ -1,302 +0,0 @@ | |||
1 | /** | ||
2 | * @file llglstates.h | ||
3 | * @brief LLGL states definitions | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | //THIS HEADER SHOULD ONLY BE INCLUDED FROM llgl.h | ||
33 | #ifndef LL_LLGLSTATES_H | ||
34 | #define LL_LLGLSTATES_H | ||
35 | |||
36 | #include "llimagegl.h" | ||
37 | |||
38 | //---------------------------------------------------------------------------- | ||
39 | |||
40 | class LLGLDepthTest | ||
41 | { | ||
42 | // Enabled by default | ||
43 | public: | ||
44 | LLGLDepthTest(GLboolean depth_enabled, GLboolean write_enabled = GL_TRUE, GLenum depth_func = GL_LEQUAL); | ||
45 | |||
46 | ~LLGLDepthTest(); | ||
47 | |||
48 | GLboolean mPrevDepthEnabled; | ||
49 | GLenum mPrevDepthFunc; | ||
50 | GLboolean mPrevWriteEnabled; | ||
51 | private: | ||
52 | static GLboolean sDepthEnabled; // defaults to GL_FALSE | ||
53 | static GLenum sDepthFunc; // defaults to GL_LESS | ||
54 | static GLboolean sWriteEnabled; // defaults to GL_TRUE | ||
55 | }; | ||
56 | |||
57 | //---------------------------------------------------------------------------- | ||
58 | |||
59 | class LLGLSDefault | ||
60 | { | ||
61 | protected: | ||
62 | LLGLEnable mColorMaterial; | ||
63 | LLGLDisable mAlphaTest, mBlend, mCullFace, mDither, mFog, | ||
64 | mLineSmooth, mLineStipple, mNormalize, mPolygonSmooth, | ||
65 | mTextureGenQ, mTextureGenR, mTextureGenS, mTextureGenT, | ||
66 | mGLMultisample; | ||
67 | public: | ||
68 | LLGLSDefault() | ||
69 | : | ||
70 | // Enable | ||
71 | mColorMaterial(GL_COLOR_MATERIAL), | ||
72 | // Disable | ||
73 | mAlphaTest(GL_ALPHA_TEST), | ||
74 | mBlend(GL_BLEND), | ||
75 | mCullFace(GL_CULL_FACE), | ||
76 | mDither(GL_DITHER), | ||
77 | mFog(GL_FOG), | ||
78 | mLineSmooth(GL_LINE_SMOOTH), | ||
79 | mLineStipple(GL_LINE_STIPPLE), | ||
80 | mNormalize(GL_NORMALIZE), | ||
81 | mPolygonSmooth(GL_POLYGON_SMOOTH), | ||
82 | mTextureGenQ(GL_TEXTURE_GEN_Q), | ||
83 | mTextureGenR(GL_TEXTURE_GEN_R), | ||
84 | mTextureGenS(GL_TEXTURE_GEN_S), | ||
85 | mTextureGenT(GL_TEXTURE_GEN_T), | ||
86 | mGLMultisample(GL_MULTISAMPLE_ARB) | ||
87 | { } | ||
88 | }; | ||
89 | |||
90 | class LLGLSNoTexture | ||
91 | { | ||
92 | public: | ||
93 | LLGLSNoTexture() | ||
94 | { LLImageGL::unbindTexture(0); } | ||
95 | }; | ||
96 | |||
97 | class LLGLSObjectSelect | ||
98 | { | ||
99 | protected: | ||
100 | LLGLDisable mBlend, mFog, mAlphaTest; | ||
101 | LLGLEnable mCullFace; | ||
102 | public: | ||
103 | LLGLSObjectSelect() | ||
104 | : mBlend(GL_BLEND), mFog(GL_FOG), | ||
105 | mAlphaTest(GL_ALPHA_TEST), | ||
106 | mCullFace(GL_CULL_FACE) | ||
107 | { LLImageGL::unbindTexture(0); } | ||
108 | }; | ||
109 | |||
110 | class LLGLSObjectSelectAlpha | ||
111 | { | ||
112 | protected: | ||
113 | LLGLEnable mAlphaTest; | ||
114 | public: | ||
115 | LLGLSObjectSelectAlpha() | ||
116 | : mAlphaTest(GL_ALPHA_TEST) | ||
117 | {} | ||
118 | }; | ||
119 | |||
120 | //---------------------------------------------------------------------------- | ||
121 | |||
122 | class LLGLSUIDefault | ||
123 | { | ||
124 | protected: | ||
125 | LLGLEnable mBlend, mAlphaTest; | ||
126 | LLGLDisable mCullFace; | ||
127 | LLGLDepthTest mDepthTest; | ||
128 | public: | ||
129 | LLGLSUIDefault() | ||
130 | : mBlend(GL_BLEND), mAlphaTest(GL_ALPHA_TEST), | ||
131 | mCullFace(GL_CULL_FACE), | ||
132 | mDepthTest(GL_FALSE, GL_TRUE, GL_LEQUAL) | ||
133 | {} | ||
134 | }; | ||
135 | |||
136 | class LLGLSNoAlphaTest // : public LLGLSUIDefault | ||
137 | { | ||
138 | protected: | ||
139 | LLGLDisable mAlphaTest; | ||
140 | public: | ||
141 | LLGLSNoAlphaTest() | ||
142 | : mAlphaTest(GL_ALPHA_TEST) | ||
143 | {} | ||
144 | }; | ||
145 | |||
146 | class LLGLSNoTextureNoAlphaTest // : public LLGLSUIDefault | ||
147 | { | ||
148 | protected: | ||
149 | LLGLDisable mAlphaTest; | ||
150 | public: | ||
151 | LLGLSNoTextureNoAlphaTest() | ||
152 | : mAlphaTest(GL_ALPHA_TEST) | ||
153 | |||
154 | { LLImageGL::unbindTexture(0); } | ||
155 | }; | ||
156 | |||
157 | //---------------------------------------------------------------------------- | ||
158 | |||
159 | class LLGLSFog | ||
160 | { | ||
161 | protected: | ||
162 | LLGLEnable mFog; | ||
163 | public: | ||
164 | LLGLSFog() | ||
165 | : mFog(GL_FOG) | ||
166 | {} | ||
167 | }; | ||
168 | |||
169 | class LLGLSNoFog | ||
170 | { | ||
171 | protected: | ||
172 | LLGLDisable mFog; | ||
173 | public: | ||
174 | LLGLSNoFog() | ||
175 | : mFog(GL_FOG) | ||
176 | {} | ||
177 | }; | ||
178 | |||
179 | //---------------------------------------------------------------------------- | ||
180 | |||
181 | class LLGLSPipeline | ||
182 | { | ||
183 | protected: | ||
184 | LLGLEnable mCullFace; | ||
185 | LLGLDepthTest mDepthTest; | ||
186 | public: | ||
187 | LLGLSPipeline() | ||
188 | : mCullFace(GL_CULL_FACE), | ||
189 | mDepthTest(GL_TRUE, GL_TRUE, GL_LEQUAL) | ||
190 | { } | ||
191 | }; | ||
192 | |||
193 | class LLGLSPipelineAlpha // : public LLGLSPipeline | ||
194 | { | ||
195 | protected: | ||
196 | LLGLEnable mBlend, mAlphaTest; | ||
197 | public: | ||
198 | LLGLSPipelineAlpha() | ||
199 | : mBlend(GL_BLEND), | ||
200 | mAlphaTest(GL_ALPHA_TEST) | ||
201 | { } | ||
202 | }; | ||
203 | |||
204 | class LLGLSPipelineEmbossBump | ||
205 | { | ||
206 | protected: | ||
207 | LLGLDisable mFog; | ||
208 | public: | ||
209 | LLGLSPipelineEmbossBump() | ||
210 | : mFog(GL_FOG) | ||
211 | { } | ||
212 | }; | ||
213 | |||
214 | class LLGLSPipelineSelection | ||
215 | { | ||
216 | protected: | ||
217 | LLGLDisable mCullFace; | ||
218 | public: | ||
219 | LLGLSPipelineSelection() | ||
220 | : mCullFace(GL_CULL_FACE) | ||
221 | {} | ||
222 | }; | ||
223 | |||
224 | class LLGLSPipelineAvatar | ||
225 | { | ||
226 | protected: | ||
227 | LLGLEnable mNormalize; | ||
228 | public: | ||
229 | LLGLSPipelineAvatar() | ||
230 | : mNormalize(GL_NORMALIZE) | ||
231 | {} | ||
232 | }; | ||
233 | |||
234 | class LLGLSPipelineSkyBox | ||
235 | { | ||
236 | protected: | ||
237 | LLGLDisable mAlphaTest, mCullFace, mFog; | ||
238 | public: | ||
239 | LLGLSPipelineSkyBox() | ||
240 | : mAlphaTest(GL_ALPHA_TEST), mCullFace(GL_CULL_FACE), mFog(GL_FOG) | ||
241 | { } | ||
242 | }; | ||
243 | |||
244 | class LLGLSTracker | ||
245 | { | ||
246 | protected: | ||
247 | LLGLEnable mCullFace, mBlend, mAlphaTest; | ||
248 | public: | ||
249 | LLGLSTracker() : | ||
250 | mCullFace(GL_CULL_FACE), | ||
251 | mBlend(GL_BLEND), | ||
252 | mAlphaTest(GL_ALPHA_TEST) | ||
253 | |||
254 | { LLImageGL::unbindTexture(0); } | ||
255 | }; | ||
256 | |||
257 | //---------------------------------------------------------------------------- | ||
258 | |||
259 | class LLGLSSpecular | ||
260 | { | ||
261 | public: | ||
262 | LLGLSSpecular(const LLColor4& color, F32 shininess) | ||
263 | { | ||
264 | if (shininess > 0.0f) | ||
265 | { | ||
266 | glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, color.mV); | ||
267 | S32 shiny = (S32)(shininess*128.f); | ||
268 | shiny = llclamp(shiny,0,128); | ||
269 | glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, shiny); | ||
270 | } | ||
271 | } | ||
272 | ~LLGLSSpecular() | ||
273 | { | ||
274 | glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, LLColor4(0.f,0.f,0.f,0.f).mV); | ||
275 | glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 0); | ||
276 | } | ||
277 | }; | ||
278 | |||
279 | //---------------------------------------------------------------------------- | ||
280 | |||
281 | |||
282 | class LLGLSBlendFunc : public LLGLSPipeline { | ||
283 | protected: | ||
284 | GLint mSavedSrc, mSavedDst; | ||
285 | LLGLEnable mBlend; | ||
286 | |||
287 | public: | ||
288 | LLGLSBlendFunc(GLenum srcFunc, GLenum dstFunc) : | ||
289 | mBlend(GL_BLEND) | ||
290 | { | ||
291 | glGetIntegerv(GL_BLEND_SRC, &mSavedSrc); | ||
292 | glGetIntegerv(GL_BLEND_DST, &mSavedDst); | ||
293 | glBlendFunc(srcFunc, dstFunc); | ||
294 | } | ||
295 | |||
296 | ~LLGLSBlendFunc(void) { | ||
297 | glBlendFunc(mSavedSrc, mSavedDst); | ||
298 | } | ||
299 | }; | ||
300 | |||
301 | |||
302 | #endif | ||
diff --git a/linden/indra/llwindow/llgltypes.h b/linden/indra/llwindow/llgltypes.h deleted file mode 100644 index d22d5fa..0000000 --- a/linden/indra/llwindow/llgltypes.h +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | /** | ||
2 | * @file llgltypes.h | ||
3 | * @brief LLGL definition | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2006&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2006-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | #ifndef LLGLTYPES_H | ||
33 | #define LLGLTYPES_H | ||
34 | |||
35 | #define MAX_GL_TEXTURE_UNITS 16 | ||
36 | |||
37 | typedef U32 LLGLenum; | ||
38 | typedef U32 LLGLuint; | ||
39 | typedef S32 LLGLint; | ||
40 | typedef F32 LLGLfloat; | ||
41 | typedef F64 LLGLdouble; | ||
42 | typedef U8 LLGLboolean; | ||
43 | |||
44 | #endif | ||
diff --git a/linden/indra/llwindow/llkeyboard.cpp b/linden/indra/llwindow/llkeyboard.cpp index c6502ed..cc6f73b 100644 --- a/linden/indra/llwindow/llkeyboard.cpp +++ b/linden/indra/llwindow/llkeyboard.cpp | |||
@@ -43,8 +43,8 @@ | |||
43 | LLKeyboard *gKeyboard = NULL; | 43 | LLKeyboard *gKeyboard = NULL; |
44 | 44 | ||
45 | //static | 45 | //static |
46 | std::map<KEY,LLString> LLKeyboard::sKeysToNames; | 46 | std::map<KEY,std::string> LLKeyboard::sKeysToNames; |
47 | std::map<LLString,KEY> LLKeyboard::sNamesToKeys; | 47 | std::map<std::string,KEY> LLKeyboard::sNamesToKeys; |
48 | 48 | ||
49 | // | 49 | // |
50 | // Class Implementation | 50 | // Class Implementation |
@@ -67,6 +67,7 @@ LLKeyboard::LLKeyboard() : mCallbacks(NULL), mNumpadDistinct(ND_NUMLOCK_OFF) | |||
67 | 67 | ||
68 | mInsertMode = LL_KIM_INSERT; | 68 | mInsertMode = LL_KIM_INSERT; |
69 | mCurTranslatedKey = KEY_NONE; | 69 | mCurTranslatedKey = KEY_NONE; |
70 | mCurScanKey = KEY_NONE; | ||
70 | 71 | ||
71 | addKeyName(' ', "Space" ); | 72 | addKeyName(' ', "Space" ); |
72 | addKeyName(KEY_RETURN, "Enter" ); | 73 | addKeyName(KEY_RETURN, "Enter" ); |
@@ -143,11 +144,11 @@ LLKeyboard::~LLKeyboard() | |||
143 | // nothing | 144 | // nothing |
144 | } | 145 | } |
145 | 146 | ||
146 | void LLKeyboard::addKeyName(KEY key, const LLString& name) | 147 | void LLKeyboard::addKeyName(KEY key, const std::string& name) |
147 | { | 148 | { |
148 | sKeysToNames[key] = name; | 149 | sKeysToNames[key] = name; |
149 | LLString nameuc = name; | 150 | std::string nameuc = name; |
150 | LLString::toUpper(nameuc); | 151 | LLStringUtil::toUpper(nameuc); |
151 | sNamesToKeys[nameuc] = key; | 152 | sNamesToKeys[nameuc] = key; |
152 | } | 153 | } |
153 | 154 | ||
@@ -293,9 +294,9 @@ S32 LLKeyboard::getKeyElapsedFrameCount(KEY key) | |||
293 | } | 294 | } |
294 | 295 | ||
295 | // static | 296 | // static |
296 | BOOL LLKeyboard::keyFromString(const LLString& str, KEY *key) | 297 | BOOL LLKeyboard::keyFromString(const std::string& str, KEY *key) |
297 | { | 298 | { |
298 | LLString instring(str); | 299 | std::string instring(str); |
299 | size_t length = instring.size(); | 300 | size_t length = instring.size(); |
300 | 301 | ||
301 | if (length < 1) | 302 | if (length < 1) |
@@ -317,7 +318,7 @@ BOOL LLKeyboard::keyFromString(const LLString& str, KEY *key) | |||
317 | } | 318 | } |
318 | } | 319 | } |
319 | 320 | ||
320 | LLString::toUpper(instring); | 321 | LLStringUtil::toUpper(instring); |
321 | KEY res = get_if_there(sNamesToKeys, instring, (KEY)0); | 322 | KEY res = get_if_there(sNamesToKeys, instring, (KEY)0); |
322 | if (res != 0) | 323 | if (res != 0) |
323 | { | 324 | { |
@@ -330,15 +331,15 @@ BOOL LLKeyboard::keyFromString(const LLString& str, KEY *key) | |||
330 | 331 | ||
331 | 332 | ||
332 | // static | 333 | // static |
333 | LLString LLKeyboard::stringFromKey(KEY key) | 334 | std::string LLKeyboard::stringFromKey(KEY key) |
334 | { | 335 | { |
335 | LLString res = get_if_there(sKeysToNames, key, LLString::null); | 336 | std::string res = get_if_there(sKeysToNames, key, std::string()); |
336 | if (res.empty()) | 337 | if (res.empty()) |
337 | { | 338 | { |
338 | char buffer[2]; /* Flawfinder: ignore */ | 339 | char buffer[2]; /* Flawfinder: ignore */ |
339 | buffer[0] = key; | 340 | buffer[0] = key; |
340 | buffer[1] = '\0'; | 341 | buffer[1] = '\0'; |
341 | res = LLString(buffer); | 342 | res = std::string(buffer); |
342 | } | 343 | } |
343 | return res; | 344 | return res; |
344 | } | 345 | } |
@@ -346,9 +347,9 @@ LLString LLKeyboard::stringFromKey(KEY key) | |||
346 | 347 | ||
347 | 348 | ||
348 | //static | 349 | //static |
349 | BOOL LLKeyboard::maskFromString(const LLString& str, MASK *mask) | 350 | BOOL LLKeyboard::maskFromString(const std::string& str, MASK *mask) |
350 | { | 351 | { |
351 | LLString instring(str); | 352 | std::string instring(str); |
352 | if (instring == "NONE") | 353 | if (instring == "NONE") |
353 | { | 354 | { |
354 | *mask = MASK_NONE; | 355 | *mask = MASK_NONE; |
diff --git a/linden/indra/llwindow/llkeyboard.h b/linden/indra/llwindow/llkeyboard.h index d9ce376..4d0b86d 100644 --- a/linden/indra/llwindow/llkeyboard.h +++ b/linden/indra/llwindow/llkeyboard.h | |||
@@ -107,9 +107,9 @@ public: | |||
107 | EKeyboardInsertMode getInsertMode() { return mInsertMode; } | 107 | EKeyboardInsertMode getInsertMode() { return mInsertMode; } |
108 | void toggleInsertMode(); | 108 | void toggleInsertMode(); |
109 | 109 | ||
110 | static BOOL maskFromString(const LLString& str, MASK *mask); // False on failure | 110 | static BOOL maskFromString(const std::string& str, MASK *mask); // False on failure |
111 | static BOOL keyFromString(const LLString& str, KEY *key); // False on failure | 111 | static BOOL keyFromString(const std::string& str, KEY *key); // False on failure |
112 | static LLString stringFromKey(KEY key); | 112 | static std::string stringFromKey(KEY key); |
113 | 113 | ||
114 | e_numpad_distinct getNumpadDistinct() { return mNumpadDistinct; } | 114 | e_numpad_distinct getNumpadDistinct() { return mNumpadDistinct; } |
115 | void setNumpadDistinct(e_numpad_distinct val) { mNumpadDistinct = val; } | 115 | void setNumpadDistinct(e_numpad_distinct val) { mNumpadDistinct = val; } |
@@ -119,7 +119,7 @@ public: | |||
119 | S32 getKeyElapsedFrameCount( KEY key ); // Returns time in frames since key was pressed. | 119 | S32 getKeyElapsedFrameCount( KEY key ); // Returns time in frames since key was pressed. |
120 | 120 | ||
121 | protected: | 121 | protected: |
122 | void addKeyName(KEY key, const LLString& name); | 122 | void addKeyName(KEY key, const std::string& name); |
123 | 123 | ||
124 | protected: | 124 | protected: |
125 | std::map<U16, KEY> mTranslateKeyMap; // Map of translations from OS keys to Linden KEYs | 125 | std::map<U16, KEY> mTranslateKeyMap; // Map of translations from OS keys to Linden KEYs |
@@ -139,8 +139,8 @@ protected: | |||
139 | 139 | ||
140 | EKeyboardInsertMode mInsertMode; | 140 | EKeyboardInsertMode mInsertMode; |
141 | 141 | ||
142 | static std::map<KEY,LLString> sKeysToNames; | 142 | static std::map<KEY,std::string> sKeysToNames; |
143 | static std::map<LLString,KEY> sNamesToKeys; | 143 | static std::map<std::string,KEY> sNamesToKeys; |
144 | }; | 144 | }; |
145 | 145 | ||
146 | extern LLKeyboard *gKeyboard; | 146 | extern LLKeyboard *gKeyboard; |
diff --git a/linden/indra/llwindow/lllogitechlcd.cpp b/linden/indra/llwindow/lllogitechlcd.cpp deleted file mode 100644 index 81e97a0..0000000 --- a/linden/indra/llwindow/lllogitechlcd.cpp +++ /dev/null | |||
@@ -1,296 +0,0 @@ | |||
1 | /** | ||
2 | * @file lcd.cpp | ||
3 | * @brief cLcd panel class | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | #include "linden_common.h" | ||
33 | |||
34 | #if LL_LCD_COMPILE | ||
35 | |||
36 | #include "EZ_LCD.h" | ||
37 | #include "../newview/res/resource.h" | ||
38 | #include "llcontrol.h" | ||
39 | extern LLControlGroup gSavedSettings; | ||
40 | |||
41 | #ifndef LL_LOGITECH_LCD_H | ||
42 | #include "lllogitechlcd.h" | ||
43 | #endif | ||
44 | |||
45 | #define WAIT_DURATION 7 | ||
46 | #define DEBOUNCE_DURATION 0.3f | ||
47 | |||
48 | LLLCDPageGroup::LLLCDPageGroup(CEzLcd *LCD, int type, HICON SLIcon): | ||
49 | mType(type), | ||
50 | mHandle(NULL), | ||
51 | mSLIcon(SLIcon), | ||
52 | mDisplayPage(false), | ||
53 | mLCD(LCD) | ||
54 | { | ||
55 | mPageArray.clear(); | ||
56 | } | ||
57 | |||
58 | LLLCDPageGroup::~LLLCDPageGroup() | ||
59 | { | ||
60 | mPageArray.clear(); | ||
61 | } | ||
62 | |||
63 | void llDefaultPageGroup::UpdateDetails() | ||
64 | { | ||
65 | mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex); | ||
66 | } | ||
67 | |||
68 | void llDefaultPageGroup::GetDisplayable() | ||
69 | { | ||
70 | |||
71 | } | ||
72 | |||
73 | llDefaultPageGroup::llDefaultPageGroup(CEzLcd *LCD, int type, HICON SLIcon) | ||
74 | :LLLCDPageGroup(LCD, type, SLIcon) | ||
75 | { | ||
76 | // create a new specific page | ||
77 | LLLCDSpecificPage newPage; | ||
78 | newPage.mPageIndex = mLCD->AddNewPage() - 1; | ||
79 | mLCD->ModifyControlsOnPage(newPage.mPageIndex); | ||
80 | |||
81 | // add in all the display parts for this specific page | ||
82 | |||
83 | // add in the icon - all pages have this - we don't need to track this because we never update it | ||
84 | HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32); | ||
85 | mLCD->SetOrigin(m_rightIcon, 0, 0); | ||
86 | |||
87 | // add Title | ||
88 | HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_MEDIUM, DT_CENTER, 128); | ||
89 | mLCD->SetOrigin(title, 32, 20); | ||
90 | mLCD->SetText(title, _T("Second Life Display")); | ||
91 | newPage.mDisplayItemArray.push_back(title); | ||
92 | |||
93 | // and then insert it | ||
94 | mPageArray.push_back(newPage); | ||
95 | } | ||
96 | |||
97 | LLLCD::LLLCD(HINSTANCE instance): | ||
98 | mInited(false), | ||
99 | mDisplayTimer(), | ||
100 | mDebounceTimer(), | ||
101 | mPageToShow(-1), | ||
102 | mInstance(instance), | ||
103 | mDestinationLCD(-1), | ||
104 | mFirstTimeThru(true), | ||
105 | mCurrentGroupBeingShown(NULL), | ||
106 | mSLIcon(NULL) | ||
107 | { | ||
108 | HRESULT res_ = S_OK; | ||
109 | |||
110 | // Create instance of EzLcd. | ||
111 | mLCD = new CEzLcd(); | ||
112 | |||
113 | // Have it initialize itself | ||
114 | res_ = mLCD->InitYourself(_T("Second Life")); | ||
115 | |||
116 | if (res_ != S_OK) | ||
117 | { | ||
118 | // Something went wrong, when connecting to the LCD Manager software. We need to get out now | ||
119 | delete mLCD; | ||
120 | return; | ||
121 | } | ||
122 | mInited = true; | ||
123 | |||
124 | // preload the Second Life Icon | ||
125 | mSLIcon = static_cast<HICON>(LoadImage(mInstance, | ||
126 | MAKEINTRESOURCE(IDI_LCD_LL_ICON), | ||
127 | IMAGE_ICON, | ||
128 | 32, | ||
129 | 32, | ||
130 | LR_MONOCHROME)); | ||
131 | |||
132 | // have to do this first so screens are added to the list and updateDisplay actually does something. | ||
133 | mLCD->Update(); | ||
134 | } | ||
135 | |||
136 | LLLCD::~LLLCD() | ||
137 | { | ||
138 | // remove the instance of the LCD controller | ||
139 | if (mInited == true) | ||
140 | { | ||
141 | delete mLCD; | ||
142 | |||
143 | // free up the used pages | ||
144 | int loopSize = mPageGroupArray.size(); | ||
145 | for(int i= 0; i<loopSize; i++) | ||
146 | { | ||
147 | free (mPageGroupArray[i]); | ||
148 | } | ||
149 | } | ||
150 | } | ||
151 | |||
152 | LLLCDPageGroup *LLLCD::GetNextPageToDisplay() | ||
153 | { | ||
154 | // find group with current page in it. | ||
155 | |||
156 | int groupSize = mPageGroupArray.size(); | ||
157 | for(int x=1; x< groupSize; x++) | ||
158 | { | ||
159 | if (mPageGroupArray[x]->mDisplayPage) | ||
160 | { | ||
161 | // now walk all the pages in the page group we are looking at | ||
162 | int numPages = mPageGroupArray[x]->mPageArray.size(); | ||
163 | for (int zx = 0; zx< numPages; zx++) | ||
164 | { | ||
165 | // found it. | ||
166 | if (mPageToShow == mPageGroupArray[x]->mPageArray[zx].mPageIndex) | ||
167 | { | ||
168 | // move to the next one | ||
169 | if (zx < numPages-1) | ||
170 | { | ||
171 | mPageToShow = mPageGroupArray[x]->mPageArray[zx+1].mPageIndex; | ||
172 | return mPageGroupArray[x]; | ||
173 | } | ||
174 | else | ||
175 | { | ||
176 | for(int y=x+1; y< groupSize; y++) | ||
177 | { | ||
178 | if (mPageGroupArray[y]->mDisplayPage) | ||
179 | { | ||
180 | mPageToShow = mPageGroupArray[y]->mPageArray[0].mPageIndex; | ||
181 | return mPageGroupArray[y]; | ||
182 | } | ||
183 | } | ||
184 | } | ||
185 | } | ||
186 | } | ||
187 | } | ||
188 | } | ||
189 | |||
190 | // ok, didn't find it. Start again at the beginning and find the first group that's enabled | ||
191 | for(int x=1; x< groupSize; x++) | ||
192 | { | ||
193 | if (mPageGroupArray[x]->mDisplayPage) | ||
194 | { | ||
195 | mPageToShow = mPageGroupArray[x]->mPageArray[0].mPageIndex; | ||
196 | return mPageGroupArray[x]; | ||
197 | } | ||
198 | } | ||
199 | // if we got this far, we should display the default screen | ||
200 | mPageToShow = mPageGroupArray[0]->mPageArray[0].mPageIndex; | ||
201 | return mPageGroupArray[0]; | ||
202 | } | ||
203 | |||
204 | void LLLCD::SetUpDisplayPages() | ||
205 | { | ||
206 | // work out if destination has changed | ||
207 | int destinationLCD = gSavedSettings.getS32("LCDDestination"); | ||
208 | switch(destinationLCD) | ||
209 | { | ||
210 | case 0: | ||
211 | destinationLCD = LGLCD_DEVICE_FAMILY_KEYBOARD_G15; | ||
212 | break; | ||
213 | case 1: | ||
214 | destinationLCD = LGLCD_DEVICE_FAMILY_SPEAKERS_Z10; | ||
215 | break; | ||
216 | } | ||
217 | // set destination if it's changed | ||
218 | if (mDestinationLCD != destinationLCD) | ||
219 | { | ||
220 | mDestinationLCD = destinationLCD; | ||
221 | mLCD->SetDeviceFamilyToUse(destinationLCD); | ||
222 | } | ||
223 | int loopSize = mPageGroupArray.size(); | ||
224 | for(int i= 0; i<loopSize; i++) | ||
225 | { | ||
226 | mPageGroupArray[i]->GetDisplayable(); | ||
227 | } | ||
228 | } | ||
229 | |||
230 | void LLLCD::UpdateDisplay() | ||
231 | { | ||
232 | if (mInited) | ||
233 | { | ||
234 | // reset pages if anything has changed | ||
235 | SetUpDisplayPages(); | ||
236 | if (mLCD->IsConnected()) | ||
237 | { | ||
238 | // Switching back and forth between the pages that we've created | ||
239 | if (mDisplayTimer.getElapsedTimeF32() > WAIT_DURATION || mFirstTimeThru) | ||
240 | { | ||
241 | mCurrentGroupBeingShown = GetNextPageToDisplay(); | ||
242 | mDisplayTimer.reset(); | ||
243 | mFirstTimeThru = false; | ||
244 | } | ||
245 | |||
246 | // Check if button 1 triggered | ||
247 | if ((mLCD->ButtonIsPressed(LG_BUTTON_1) | ||
248 | || mLCD->ButtonIsPressed(LG_BUTTON_2) | ||
249 | || mLCD->ButtonIsPressed(LG_BUTTON_3) | ||
250 | || mLCD->ButtonIsPressed(LG_BUTTON_4) | ||
251 | ) && mDebounceTimer.getElapsedTimeF32() > DEBOUNCE_DURATION) | ||
252 | { | ||
253 | // if so, move us on a page | ||
254 | mCurrentGroupBeingShown = GetNextPageToDisplay(); | ||
255 | mDisplayTimer.reset(); | ||
256 | mDebounceTimer.reset(); | ||
257 | } | ||
258 | |||
259 | // update that which is being show | ||
260 | mCurrentGroupBeingShown->UpdateDetails(); | ||
261 | |||
262 | // set which page is shown | ||
263 | mLCD->ShowPage(mPageToShow); | ||
264 | |||
265 | // Must run the following every loop. | ||
266 | mLCD->Update(); | ||
267 | } | ||
268 | } | ||
269 | } | ||
270 | |||
271 | |||
272 | // accessor functions | ||
273 | bool LLLCD::Enabled() | ||
274 | { | ||
275 | return mInited; | ||
276 | } | ||
277 | |||
278 | BOOL LLLCD::AreZ10Available() | ||
279 | { | ||
280 | if (mInited == true) | ||
281 | { | ||
282 | return mLCD->AnyDeviceOfThisFamilyPresent(LGLCD_DEVICE_FAMILY_SPEAKERS_Z10); | ||
283 | } | ||
284 | return false; | ||
285 | } | ||
286 | |||
287 | BOOL LLLCD::IsG15Available() | ||
288 | { | ||
289 | if (mInited == true) | ||
290 | { | ||
291 | return mLCD->AnyDeviceOfThisFamilyPresent(LGLCD_DEVICE_FAMILY_KEYBOARD_G15); | ||
292 | } | ||
293 | return false; | ||
294 | } | ||
295 | |||
296 | #endif | ||
diff --git a/linden/indra/llwindow/lllogitechlcd.h b/linden/indra/llwindow/lllogitechlcd.h deleted file mode 100644 index 47a6acd..0000000 --- a/linden/indra/llwindow/lllogitechlcd.h +++ /dev/null | |||
@@ -1,135 +0,0 @@ | |||
1 | /** | ||
2 | * @file lcd.h | ||
3 | * @brief Description of the LCD owner class. | ||
4 | * | ||
5 | * $LicenseInfo:firstyear=2001&license=viewergpl$ | ||
6 | * | ||
7 | * Copyright (c) 2001-2008, Linden Research, Inc. | ||
8 | * | ||
9 | * Second Life Viewer Source Code | ||
10 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
11 | * to you under the terms of the GNU General Public License, version 2.0 | ||
12 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
13 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
14 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
15 | * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 | ||
16 | * | ||
17 | * There are special exceptions to the terms and conditions of the GPL as | ||
18 | * it is applied to this Source Code. View the full text of the exception | ||
19 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
20 | * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception | ||
21 | * | ||
22 | * By copying, modifying or distributing this software, you acknowledge | ||
23 | * that you have read and understood your obligations described above, | ||
24 | * and agree to abide by those obligations. | ||
25 | * | ||
26 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
27 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
28 | * COMPLETENESS OR PERFORMANCE. | ||
29 | * $/LicenseInfo$ | ||
30 | */ | ||
31 | |||
32 | #ifndef LL_LOGITECH_LCD_H | ||
33 | #define LL_LOGITECH_LCD_H | ||
34 | |||
35 | #include <vector> | ||
36 | #include "llFrametimer.h" | ||
37 | |||
38 | class CEzLcd; | ||
39 | |||
40 | // TO Add a new display page groups, duplicate the Region or Debug or Chat class, then modify what's actually displayed (ie how many pages and whats in them) | ||
41 | // in the constructor and update display functions. | ||
42 | // Remember to add in a new enum type for the new display type, and add in functions to actually create/update or remove this page in the SetupDisplayPages function | ||
43 | // And, of course, add the new option to the Menu in llpanelLCDoption.xml, and save details (duplicate the ones for debug or region). | ||
44 | |||
45 | // this defines one pages worth of display items. | ||
46 | class LLLCDSpecificPage | ||
47 | { | ||
48 | public: | ||
49 | int mPageIndex; | ||
50 | typedef std::vector<HANDLE> displayItemArray_t; | ||
51 | // array of indexes that come from the lcd display sdk for specific items being displayed on a given page | ||
52 | displayItemArray_t mDisplayItemArray; | ||
53 | }; | ||
54 | |||
55 | // this defines a group of pages - associated with a specific type of display, like Debug, Linden Account info, region etc | ||
56 | // NOTE this can have more than one page associated with it - so it has an array of cLCDSpecificPage for each page. | ||
57 | class LLLCDPageGroup | ||
58 | { | ||
59 | public: | ||
60 | LLLCDPageGroup(CEzLcd *LCD, int type, HICON SLIcon); | ||
61 | virtual ~LLLCDPageGroup(); | ||
62 | virtual void UpdateDetails() = 0; | ||
63 | virtual void GetDisplayable() = 0; | ||
64 | int mType; | ||
65 | HANDLE mHandle; | ||
66 | typedef std::vector<LLLCDSpecificPage> pageArray_t; | ||
67 | pageArray_t mPageArray; | ||
68 | BOOL mDisplayPage; | ||
69 | protected: | ||
70 | |||
71 | CEzLcd *mLCD; | ||
72 | HICON mSLIcon; | ||
73 | }; | ||
74 | |||
75 | |||
76 | // class that defines the Default page - used if nothing else is enabled | ||
77 | class llDefaultPageGroup : public LLLCDPageGroup | ||
78 | { | ||
79 | public: | ||
80 | llDefaultPageGroup(CEzLcd *LCD, int type, HICON SLIcon); | ||
81 | virtual void UpdateDetails(); | ||
82 | virtual void GetDisplayable(); | ||
83 | }; | ||
84 | |||
85 | // Root class - contains pointers to actual LCD display object, and arrays of page groups to be displayed | ||
86 | class LLLCD | ||
87 | { | ||
88 | public: | ||
89 | enum | ||
90 | { | ||
91 | kLCDDefault, | ||
92 | kLCDDebug, | ||
93 | kLCDChat, | ||
94 | kLCDRegion, | ||
95 | kLCDLinden, | ||
96 | kLCDIM, | ||
97 | kLCDDebugConsole, | ||
98 | kMaxLCDPageGroups | ||
99 | }; | ||
100 | LLLCD(HINSTANCE instance); | ||
101 | ~LLLCD(); | ||
102 | void UpdateDisplay(); | ||
103 | bool Enabled(); | ||
104 | BOOL AreZ10Available(); | ||
105 | BOOL IsG15Available(); | ||
106 | |||
107 | typedef std::vector<LLLCDPageGroup *> pageGroupArray_t; | ||
108 | pageGroupArray_t mPageGroupArray; | ||
109 | HICON mSLIcon; | ||
110 | CEzLcd *mLCD; | ||
111 | private: | ||
112 | |||
113 | // member functions to display data | ||
114 | void SetUpDisplayPages(); | ||
115 | LLLCDPageGroup *GetNextPageToDisplay(); | ||
116 | |||
117 | LLLCDPageGroup *mCurrentGroupBeingShown; | ||
118 | |||
119 | // members | ||
120 | bool mInited; | ||
121 | |||
122 | int mPageToShow; | ||
123 | LLFrameTimer mDisplayTimer; | ||
124 | LLFrameTimer mDebounceTimer; | ||
125 | HINSTANCE mInstance; // necessary for loading some icons for the dot matrix LCD display to use | ||
126 | bool mFirstTimeThru; | ||
127 | |||
128 | |||
129 | // actual display set up variables | ||
130 | int mDestinationLCD; | ||
131 | }; | ||
132 | |||
133 | |||
134 | |||
135 | #endif | ||
diff --git a/linden/indra/llwindow/llmousehandler.h b/linden/indra/llwindow/llmousehandler.h index b511dcd..119197f 100644 --- a/linden/indra/llwindow/llmousehandler.h +++ b/linden/indra/llwindow/llmousehandler.h | |||
@@ -43,7 +43,11 @@ class LLMouseHandler | |||
43 | public: | 43 | public: |
44 | LLMouseHandler() {} | 44 | LLMouseHandler() {} |
45 | virtual ~LLMouseHandler() {} | 45 | virtual ~LLMouseHandler() {} |
46 | 46 | typedef enum { | |
47 | SHOW_NEVER, | ||
48 | SHOW_IF_NOT_BLOCKED, | ||
49 | SHOW_ALWAYS, | ||
50 | } EShowToolTip; | ||
47 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask) = 0; | 51 | virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask) = 0; |
48 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask) = 0; | 52 | virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask) = 0; |
49 | virtual BOOL handleHover(S32 x, S32 y, MASK mask) = 0; | 53 | virtual BOOL handleHover(S32 x, S32 y, MASK mask) = 0; |
@@ -51,8 +55,9 @@ public: | |||
51 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask) = 0; | 55 | virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask) = 0; |
52 | virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) = 0; | 56 | virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) = 0; |
53 | virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask) = 0; | 57 | virtual BOOL handleRightMouseUp(S32 x, S32 y, MASK mask) = 0; |
54 | virtual BOOL handleToolTip(S32 x, S32 y, LLString& msg, LLRect* sticky_rect_screen) = 0; | 58 | virtual BOOL handleToolTip(S32 x, S32 y, std::string& msg, LLRect* sticky_rect_screen) = 0; |
55 | virtual const LLString& getName() const = 0; | 59 | virtual EShowToolTip getShowToolTip() { return SHOW_IF_NOT_BLOCKED; }; |
60 | virtual const std::string& getName() const = 0; | ||
56 | 61 | ||
57 | virtual void onMouseCaptureLost() = 0; | 62 | virtual void onMouseCaptureLost() = 0; |
58 | 63 | ||
diff --git a/linden/indra/llwindow/llwindow.cpp b/linden/indra/llwindow/llwindow.cpp index ffb6393..f4ee8cc 100644 --- a/linden/indra/llwindow/llwindow.cpp +++ b/linden/indra/llwindow/llwindow.cpp | |||
@@ -58,13 +58,13 @@ BOOL gDebugClicks = FALSE; | |||
58 | BOOL gDebugWindowProc = FALSE; | 58 | BOOL gDebugWindowProc = FALSE; |
59 | 59 | ||
60 | const S32 gURLProtocolWhitelistCount = 3; | 60 | const S32 gURLProtocolWhitelistCount = 3; |
61 | const char* gURLProtocolWhitelist[] = { "file", "http", "https" }; | 61 | const std::string gURLProtocolWhitelist[] = { "file:", "http:", "https:" }; |
62 | 62 | ||
63 | // CP: added a handler list - this is what's used to open the protocol and is based on registry entry | 63 | // CP: added a handler list - this is what's used to open the protocol and is based on registry entry |
64 | // only meaningful difference currently is that file: protocols are opened using http: | 64 | // only meaningful difference currently is that file: protocols are opened using http: |
65 | // since no protocol handler exists in registry for file: | 65 | // since no protocol handler exists in registry for file: |
66 | // Important - these lists should match - protocol to handler | 66 | // Important - these lists should match - protocol to handler |
67 | const char* gURLProtocolWhitelistHandler[] = { "http", "http", "https" }; | 67 | const std::string gURLProtocolWhitelistHandler[] = { "http", "http", "https" }; |
68 | 68 | ||
69 | BOOL LLWindowCallbacks::handleTranslatedKeyDown(const KEY key, const MASK mask, BOOL repeated) | 69 | BOOL LLWindowCallbacks::handleTranslatedKeyDown(const KEY key, const MASK mask, BOOL repeated) |
70 | { | 70 | { |
@@ -203,7 +203,12 @@ BOOL LLWindowCallbacks::handleDeviceChange(LLWindow *window) | |||
203 | return FALSE; | 203 | return FALSE; |
204 | } | 204 | } |
205 | 205 | ||
206 | S32 OSMessageBox(const char* text, const char* caption, U32 type) | 206 | void LLWindowCallbacks::handlePingWatchdog(LLWindow *window, const char * msg) |
207 | { | ||
208 | |||
209 | } | ||
210 | |||
211 | S32 OSMessageBox(const std::string& text, const std::string& caption, U32 type) | ||
207 | { | 212 | { |
208 | // Properly hide the splash screen when displaying the message box | 213 | // Properly hide the splash screen when displaying the message box |
209 | BOOL was_visible = FALSE; | 214 | BOOL was_visible = FALSE; |
@@ -285,6 +290,12 @@ void LLWindow::setCallbacks(LLWindowCallbacks *callbacks) | |||
285 | } | 290 | } |
286 | } | 291 | } |
287 | 292 | ||
293 | void *LLWindow::getMediaWindow() | ||
294 | { | ||
295 | // Default to returning the platform window. | ||
296 | return getPlatformWindow(); | ||
297 | } | ||
298 | |||
288 | // static | 299 | // static |
289 | std::string LLWindow::getFontListSans() | 300 | std::string LLWindow::getFontListSans() |
290 | { | 301 | { |
@@ -389,7 +400,7 @@ void LLSplashScreen::show() | |||
389 | } | 400 | } |
390 | 401 | ||
391 | //static | 402 | //static |
392 | void LLSplashScreen::update(const char* str) | 403 | void LLSplashScreen::update(const std::string& str) |
393 | { | 404 | { |
394 | LLSplashScreen::show(); | 405 | LLSplashScreen::show(); |
395 | if (gSplashScreenp) | 406 | if (gSplashScreenp) |
@@ -417,8 +428,8 @@ void LLSplashScreen::hide() | |||
417 | static std::set<LLWindow*> sWindowList; | 428 | static std::set<LLWindow*> sWindowList; |
418 | 429 | ||
419 | LLWindow* LLWindowManager::createWindow( | 430 | LLWindow* LLWindowManager::createWindow( |
420 | char *title, | 431 | const std::string& title, |
421 | char *name, | 432 | const std::string& name, |
422 | LLCoordScreen upper_left, | 433 | LLCoordScreen upper_left, |
423 | LLCoordScreen size, | 434 | LLCoordScreen size, |
424 | U32 flags, | 435 | U32 flags, |
@@ -434,7 +445,7 @@ LLWindow* LLWindowManager::createWindow( | |||
434 | } | 445 | } |
435 | 446 | ||
436 | LLWindow* LLWindowManager::createWindow( | 447 | LLWindow* LLWindowManager::createWindow( |
437 | char *title, char *name, S32 x, S32 y, S32 width, S32 height, U32 flags, | 448 | const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, U32 flags, |
438 | BOOL fullscreen, | 449 | BOOL fullscreen, |
439 | BOOL clearBg, | 450 | BOOL clearBg, |
440 | BOOL disable_vsync, | 451 | BOOL disable_vsync, |
diff --git a/linden/indra/llwindow/llwindow.h b/linden/indra/llwindow/llwindow.h index a63c8d5..cee83b9 100644 --- a/linden/indra/llwindow/llwindow.h +++ b/linden/indra/llwindow/llwindow.h | |||
@@ -32,8 +32,6 @@ | |||
32 | #ifndef LL_LLWINDOW_H | 32 | #ifndef LL_LLWINDOW_H |
33 | #define LL_LLWINDOW_H | 33 | #define LL_LLWINDOW_H |
34 | 34 | ||
35 | #include <sys/stat.h> | ||
36 | |||
37 | #include "llrect.h" | 35 | #include "llrect.h" |
38 | #include "llcoord.h" | 36 | #include "llcoord.h" |
39 | #include "llstring.h" | 37 | #include "llstring.h" |
@@ -121,6 +119,7 @@ public: | |||
121 | virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); | 119 | virtual void handleDataCopy(LLWindow *window, S32 data_type, void *data); |
122 | virtual BOOL handleTimerEvent(LLWindow *window); | 120 | virtual BOOL handleTimerEvent(LLWindow *window); |
123 | virtual BOOL handleDeviceChange(LLWindow *window); | 121 | virtual BOOL handleDeviceChange(LLWindow *window); |
122 | virtual void handlePingWatchdog(LLWindow *window, const char * msg); | ||
124 | }; | 123 | }; |
125 | 124 | ||
126 | // Refer to llwindow_test in test/common/llwindow for usage example | 125 | // Refer to llwindow_test in test/common/llwindow for usage example |
@@ -197,10 +196,6 @@ public: | |||
197 | virtual void bringToFront() = 0; | 196 | virtual void bringToFront() = 0; |
198 | virtual void focusClient() { }; // this may not have meaning or be required on other platforms, therefore, it's not abstract | 197 | virtual void focusClient() { }; // this may not have meaning or be required on other platforms, therefore, it's not abstract |
199 | 198 | ||
200 | virtual S32 stat( const char* file_name, struct stat* stat_info ) = 0; | ||
201 | virtual BOOL sendEmail(const char* address,const char* subject,const char* body_text, const char* attachment=NULL, const char* attachment_displayed_name=NULL ) = 0; | ||
202 | |||
203 | |||
204 | // handy coordinate space conversion routines | 199 | // handy coordinate space conversion routines |
205 | // NB: screen to window and vice verse won't work on width/height coordinate pairs, | 200 | // NB: screen to window and vice verse won't work on width/height coordinate pairs, |
206 | // as the conversion must take into account left AND right border widths, etc. | 201 | // as the conversion must take into account left AND right border widths, etc. |
@@ -225,14 +220,18 @@ public: | |||
225 | // opens system default color picker | 220 | // opens system default color picker |
226 | virtual BOOL dialog_color_picker (F32 *r, F32 *g, F32 *b) { return FALSE; }; | 221 | virtual BOOL dialog_color_picker (F32 *r, F32 *g, F32 *b) { return FALSE; }; |
227 | 222 | ||
228 | // return a platform-specific window reference (HWND on Windows, WindowRef on the Mac) | 223 | // return a platform-specific window reference (HWND on Windows, WindowRef on the Mac, Gtk window on Linux) |
229 | virtual void *getPlatformWindow() = 0; | 224 | virtual void *getPlatformWindow() = 0; |
225 | |||
226 | // return the platform-specific window reference we use to initialize llmozlib (HWND on Windows, WindowRef on the Mac, Gtk window on Linux) | ||
227 | virtual void *getMediaWindow(); | ||
230 | 228 | ||
231 | // control platform's Language Text Input mechanisms. | 229 | // control platform's Language Text Input mechanisms. |
232 | virtual void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) {} | 230 | virtual void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b) {} |
233 | virtual void setLanguageTextInput( const LLCoordGL & pos ) {}; | 231 | virtual void setLanguageTextInput( const LLCoordGL & pos ) {}; |
234 | virtual void updateLanguageTextInputArea() {} | 232 | virtual void updateLanguageTextInputArea() {} |
235 | virtual void interruptLanguageTextInput() {} | 233 | virtual void interruptLanguageTextInput() {} |
234 | virtual void spawnWebBrowser(const std::string& escaped_url) {}; | ||
236 | 235 | ||
237 | static std::string getFontListSans(); | 236 | static std::string getFontListSans(); |
238 | 237 | ||
@@ -293,13 +292,13 @@ public: | |||
293 | static LLSplashScreen * create(); | 292 | static LLSplashScreen * create(); |
294 | static void show(); | 293 | static void show(); |
295 | static void hide(); | 294 | static void hide(); |
296 | static void update(const char* string); | 295 | static void update(const std::string& string); |
297 | 296 | ||
298 | static bool isVisible(); | 297 | static bool isVisible(); |
299 | protected: | 298 | protected: |
300 | // These are overridden by the platform implementation | 299 | // These are overridden by the platform implementation |
301 | virtual void showImpl() = 0; | 300 | virtual void showImpl() = 0; |
302 | virtual void updateImpl(const char* string) = 0; | 301 | virtual void updateImpl(const std::string& string) = 0; |
303 | virtual void hideImpl() = 0; | 302 | virtual void hideImpl() = 0; |
304 | 303 | ||
305 | static BOOL sVisible; | 304 | static BOOL sVisible; |
@@ -307,7 +306,7 @@ protected: | |||
307 | }; | 306 | }; |
308 | 307 | ||
309 | // Platform-neutral for accessing the platform specific message box | 308 | // Platform-neutral for accessing the platform specific message box |
310 | S32 OSMessageBox(const char* text, const char* caption, U32 type); | 309 | S32 OSMessageBox(const std::string& text, const std::string& caption, U32 type); |
311 | const U32 OSMB_OK = 0; | 310 | const U32 OSMB_OK = 0; |
312 | const U32 OSMB_OKCANCEL = 1; | 311 | const U32 OSMB_OKCANCEL = 1; |
313 | const U32 OSMB_YESNO = 2; | 312 | const U32 OSMB_YESNO = 2; |
@@ -325,8 +324,8 @@ class LLWindowManager | |||
325 | { | 324 | { |
326 | public: | 325 | public: |
327 | static LLWindow* createWindow( | 326 | static LLWindow* createWindow( |
328 | char *title, | 327 | const std::string& title, |
329 | char *name, | 328 | const std::string& name, |
330 | LLCoordScreen upper_left = LLCoordScreen(10, 10), | 329 | LLCoordScreen upper_left = LLCoordScreen(10, 10), |
331 | LLCoordScreen size = LLCoordScreen(320, 240), | 330 | LLCoordScreen size = LLCoordScreen(320, 240), |
332 | U32 flags = 0, | 331 | U32 flags = 0, |
@@ -336,7 +335,7 @@ public: | |||
336 | BOOL use_gl = TRUE, | 335 | BOOL use_gl = TRUE, |
337 | BOOL ignore_pixel_depth = FALSE); | 336 | BOOL ignore_pixel_depth = FALSE); |
338 | static LLWindow *createWindow( | 337 | static LLWindow *createWindow( |
339 | char* title, char* name, S32 x, S32 y, S32 width, S32 height, | 338 | const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, |
340 | U32 flags = 0, | 339 | U32 flags = 0, |
341 | BOOL fullscreen = FALSE, | 340 | BOOL fullscreen = FALSE, |
342 | BOOL clearBg = FALSE, | 341 | BOOL clearBg = FALSE, |
@@ -355,11 +354,8 @@ extern BOOL gDebugWindowProc; | |||
355 | 354 | ||
356 | // Protocols, like "http" and "https" we support in URLs | 355 | // Protocols, like "http" and "https" we support in URLs |
357 | extern const S32 gURLProtocolWhitelistCount; | 356 | extern const S32 gURLProtocolWhitelistCount; |
358 | extern const char* gURLProtocolWhitelist[]; | 357 | extern const std::string gURLProtocolWhitelist[]; |
359 | extern const char* gURLProtocolWhitelistHandler[]; | 358 | extern const std::string gURLProtocolWhitelistHandler[]; |
360 | |||
361 | // Loads a URL with the user's default browser | ||
362 | void spawn_web_browser(const char* escaped_url); | ||
363 | 359 | ||
364 | void simpleEscapeString ( std::string& stringIn ); | 360 | void simpleEscapeString ( std::string& stringIn ); |
365 | 361 | ||
diff --git a/linden/indra/llwindow/llwindow.vcproj b/linden/indra/llwindow/llwindow.vcproj deleted file mode 100644 index 0243c72..0000000 --- a/linden/indra/llwindow/llwindow.vcproj +++ /dev/null | |||
@@ -1,281 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | ||
2 | <VisualStudioProject | ||
3 | ProjectType="Visual C++" | ||
4 | Version="7.10" | ||
5 | Name="llwindow" | ||
6 | ProjectGUID="{B5B53617-416F-404A-BF10-22EBCCA0E4FB}" | ||
7 | Keyword="Win32Proj"> | ||
8 | <Platforms> | ||
9 | <Platform | ||
10 | Name="Win32"/> | ||
11 | </Platforms> | ||
12 | <Configurations> | ||
13 | <Configuration | ||
14 | Name="Debug|Win32" | ||
15 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
16 | IntermediateDirectory="Debug" | ||
17 | ConfigurationType="4" | ||
18 | CharacterSet="1"> | ||
19 | <Tool | ||
20 | Name="VCCLCompilerTool" | ||
21 | Optimization="0" | ||
22 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;..\..\libraries\i686-win32\include;..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
23 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;LL_DEBUG" | ||
24 | MinimalRebuild="TRUE" | ||
25 | BasicRuntimeChecks="3" | ||
26 | RuntimeLibrary="1" | ||
27 | StructMemberAlignment="4" | ||
28 | ForceConformanceInForLoopScope="TRUE" | ||
29 | UsePrecompiledHeader="0" | ||
30 | WarningLevel="3" | ||
31 | WarnAsError="TRUE" | ||
32 | Detect64BitPortabilityProblems="FALSE" | ||
33 | DebugInformationFormat="4"/> | ||
34 | <Tool | ||
35 | Name="VCCustomBuildTool"/> | ||
36 | <Tool | ||
37 | Name="VCLibrarianTool" | ||
38 | OutputFile="$(OutDir)/llwindow.lib"/> | ||
39 | <Tool | ||
40 | Name="VCMIDLTool"/> | ||
41 | <Tool | ||
42 | Name="VCPostBuildEventTool"/> | ||
43 | <Tool | ||
44 | Name="VCPreBuildEventTool"/> | ||
45 | <Tool | ||
46 | Name="VCPreLinkEventTool"/> | ||
47 | <Tool | ||
48 | Name="VCResourceCompilerTool"/> | ||
49 | <Tool | ||
50 | Name="VCWebServiceProxyGeneratorTool"/> | ||
51 | <Tool | ||
52 | Name="VCXMLDataGeneratorTool"/> | ||
53 | <Tool | ||
54 | Name="VCManagedWrapperGeneratorTool"/> | ||
55 | <Tool | ||
56 | Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||
57 | </Configuration> | ||
58 | <Configuration | ||
59 | Name="Release|Win32" | ||
60 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
61 | IntermediateDirectory="Release" | ||
62 | ConfigurationType="4" | ||
63 | CharacterSet="1"> | ||
64 | <Tool | ||
65 | Name="VCCLCompilerTool" | ||
66 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;..\..\libraries\i686-win32\include;..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
67 | AdditionalOptions="/Oy-" | ||
68 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;LL_RELEASE" | ||
69 | RuntimeLibrary="0" | ||
70 | StructMemberAlignment="0" | ||
71 | ForceConformanceInForLoopScope="TRUE" | ||
72 | UsePrecompiledHeader="0" | ||
73 | WarningLevel="3" | ||
74 | WarnAsError="TRUE" | ||
75 | Detect64BitPortabilityProblems="FALSE" | ||
76 | DebugInformationFormat="3"/> | ||
77 | <Tool | ||
78 | Name="VCCustomBuildTool"/> | ||
79 | <Tool | ||
80 | Name="VCLibrarianTool" | ||
81 | OutputFile="$(OutDir)/llwindow.lib"/> | ||
82 | <Tool | ||
83 | Name="VCMIDLTool"/> | ||
84 | <Tool | ||
85 | Name="VCPostBuildEventTool"/> | ||
86 | <Tool | ||
87 | Name="VCPreBuildEventTool"/> | ||
88 | <Tool | ||
89 | Name="VCPreLinkEventTool"/> | ||
90 | <Tool | ||
91 | Name="VCResourceCompilerTool"/> | ||
92 | <Tool | ||
93 | Name="VCWebServiceProxyGeneratorTool"/> | ||
94 | <Tool | ||
95 | Name="VCXMLDataGeneratorTool"/> | ||
96 | <Tool | ||
97 | Name="VCManagedWrapperGeneratorTool"/> | ||
98 | <Tool | ||
99 | Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||
100 | </Configuration> | ||
101 | <Configuration | ||
102 | Name="DebugMesaHeadless|Win32" | ||
103 | OutputDirectory="../lib_debug/i686-win32" | ||
104 | IntermediateDirectory="$(ConfigurationName)" | ||
105 | ConfigurationType="4" | ||
106 | CharacterSet="1"> | ||
107 | <Tool | ||
108 | Name="VCCLCompilerTool" | ||
109 | Optimization="0" | ||
110 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;..\..\libraries\i686-win32\include;..\..\libraries\include\GLMESA;..\..\libraries\i686-win32\include;..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
111 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;LL_DEBUG;LL_MESA;LL_MESA_HEADLESS" | ||
112 | MinimalRebuild="TRUE" | ||
113 | BasicRuntimeChecks="3" | ||
114 | RuntimeLibrary="1" | ||
115 | StructMemberAlignment="4" | ||
116 | ForceConformanceInForLoopScope="TRUE" | ||
117 | UsePrecompiledHeader="0" | ||
118 | WarningLevel="3" | ||
119 | WarnAsError="TRUE" | ||
120 | Detect64BitPortabilityProblems="FALSE" | ||
121 | DebugInformationFormat="4"/> | ||
122 | <Tool | ||
123 | Name="VCCustomBuildTool"/> | ||
124 | <Tool | ||
125 | Name="VCLibrarianTool" | ||
126 | OutputFile="$(OutDir)/llwindow_mesaheadless.lib"/> | ||
127 | <Tool | ||
128 | Name="VCMIDLTool"/> | ||
129 | <Tool | ||
130 | Name="VCPostBuildEventTool"/> | ||
131 | <Tool | ||
132 | Name="VCPreBuildEventTool"/> | ||
133 | <Tool | ||
134 | Name="VCPreLinkEventTool"/> | ||
135 | <Tool | ||
136 | Name="VCResourceCompilerTool"/> | ||
137 | <Tool | ||
138 | Name="VCWebServiceProxyGeneratorTool"/> | ||
139 | <Tool | ||
140 | Name="VCXMLDataGeneratorTool"/> | ||
141 | <Tool | ||
142 | Name="VCManagedWrapperGeneratorTool"/> | ||
143 | <Tool | ||
144 | Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||
145 | </Configuration> | ||
146 | <Configuration | ||
147 | Name="ReleaseNoOpt|Win32" | ||
148 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
149 | IntermediateDirectory="$(ConfigurationName)" | ||
150 | ConfigurationType="4" | ||
151 | CharacterSet="1"> | ||
152 | <Tool | ||
153 | Name="VCCLCompilerTool" | ||
154 | AdditionalOptions="/Oy-" | ||
155 | Optimization="0" | ||
156 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
157 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;LL_RELEASE" | ||
158 | RuntimeLibrary="0" | ||
159 | StructMemberAlignment="0" | ||
160 | ForceConformanceInForLoopScope="TRUE" | ||
161 | UsePrecompiledHeader="0" | ||
162 | WarningLevel="3" | ||
163 | WarnAsError="TRUE" | ||
164 | Detect64BitPortabilityProblems="FALSE" | ||
165 | DebugInformationFormat="3"/> | ||
166 | <Tool | ||
167 | Name="VCCustomBuildTool"/> | ||
168 | <Tool | ||
169 | Name="VCLibrarianTool" | ||
170 | OutputFile="$(OutDir)/llwindow.lib"/> | ||
171 | <Tool | ||
172 | Name="VCMIDLTool"/> | ||
173 | <Tool | ||
174 | Name="VCPostBuildEventTool"/> | ||
175 | <Tool | ||
176 | Name="VCPreBuildEventTool"/> | ||
177 | <Tool | ||
178 | Name="VCPreLinkEventTool"/> | ||
179 | <Tool | ||
180 | Name="VCResourceCompilerTool"/> | ||
181 | <Tool | ||
182 | Name="VCWebServiceProxyGeneratorTool"/> | ||
183 | <Tool | ||
184 | Name="VCXMLDataGeneratorTool"/> | ||
185 | <Tool | ||
186 | Name="VCManagedWrapperGeneratorTool"/> | ||
187 | <Tool | ||
188 | Name="VCAuxiliaryManagedWrapperGeneratorTool"/> | ||
189 | </Configuration> | ||
190 | </Configurations> | ||
191 | <References> | ||
192 | </References> | ||
193 | <Files> | ||
194 | <Filter | ||
195 | Name="Source Files" | ||
196 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" | ||
197 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"> | ||
198 | <File | ||
199 | RelativePath=".\lldxhardware.cpp"> | ||
200 | </File> | ||
201 | <File | ||
202 | RelativePath=".\llgl.cpp"> | ||
203 | </File> | ||
204 | <File | ||
205 | RelativePath=".\llkeyboard.cpp"> | ||
206 | </File> | ||
207 | <File | ||
208 | RelativePath=".\llkeyboardwin32.cpp"> | ||
209 | </File> | ||
210 | <File | ||
211 | RelativePath=".\lllogitechlcd.cpp"> | ||
212 | </File> | ||
213 | <File | ||
214 | RelativePath=".\llwindow.cpp"> | ||
215 | </File> | ||
216 | <File | ||
217 | RelativePath=".\llwindowheadless.cpp"> | ||
218 | </File> | ||
219 | <File | ||
220 | RelativePath=".\llwindowmesaheadless.cpp"> | ||
221 | </File> | ||
222 | <File | ||
223 | RelativePath=".\llwindowwin32.cpp"> | ||
224 | </File> | ||
225 | </Filter> | ||
226 | <Filter | ||
227 | Name="Header Files" | ||
228 | Filter="h;hpp;hxx;hm;inl;inc;xsd" | ||
229 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"> | ||
230 | <File | ||
231 | RelativePath=".\lldxhardware.h"> | ||
232 | </File> | ||
233 | <File | ||
234 | RelativePath=".\llgl.h"> | ||
235 | </File> | ||
236 | <File | ||
237 | RelativePath=".\llglheaders.h"> | ||
238 | </File> | ||
239 | <File | ||
240 | RelativePath=".\llglstates.h"> | ||
241 | </File> | ||
242 | <File | ||
243 | RelativePath=".\llgltypes.h"> | ||
244 | </File> | ||
245 | <File | ||
246 | RelativePath=".\llkeyboard.h"> | ||
247 | </File> | ||
248 | <File | ||
249 | RelativePath=".\llkeyboardwin32.h"> | ||
250 | </File> | ||
251 | <File | ||
252 | RelativePath=".\lllogitechlcd.h"> | ||
253 | </File> | ||
254 | <File | ||
255 | RelativePath=".\llmousehandler.h"> | ||
256 | </File> | ||
257 | <File | ||
258 | RelativePath=".\llpreeditor.h"> | ||
259 | </File> | ||
260 | <File | ||
261 | RelativePath=".\llwindow.h"> | ||
262 | </File> | ||
263 | <File | ||
264 | RelativePath=".\llwindowheadless.h"> | ||
265 | </File> | ||
266 | <File | ||
267 | RelativePath=".\llwindowmesaheadless.h"> | ||
268 | </File> | ||
269 | <File | ||
270 | RelativePath=".\llwindowwin32.h"> | ||
271 | </File> | ||
272 | </Filter> | ||
273 | <Filter | ||
274 | Name="Resource Files" | ||
275 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" | ||
276 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"> | ||
277 | </Filter> | ||
278 | </Files> | ||
279 | <Globals> | ||
280 | </Globals> | ||
281 | </VisualStudioProject> | ||
diff --git a/linden/indra/llwindow/llwindow_vc8.vcproj b/linden/indra/llwindow/llwindow_vc8.vcproj deleted file mode 100644 index 69ec460..0000000 --- a/linden/indra/llwindow/llwindow_vc8.vcproj +++ /dev/null | |||
@@ -1,395 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | ||
2 | <VisualStudioProject | ||
3 | ProjectType="Visual C++" | ||
4 | Version="8.00" | ||
5 | Name="llwindow" | ||
6 | ProjectGUID="{B5B53617-416F-404A-BF10-22EBCCA0E4FB}" | ||
7 | RootNamespace="llwindow" | ||
8 | Keyword="Win32Proj" | ||
9 | > | ||
10 | <Platforms> | ||
11 | <Platform | ||
12 | Name="Win32" | ||
13 | /> | ||
14 | </Platforms> | ||
15 | <ToolFiles> | ||
16 | </ToolFiles> | ||
17 | <Configurations> | ||
18 | <Configuration | ||
19 | Name="Debug|Win32" | ||
20 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
21 | IntermediateDirectory="Debug" | ||
22 | ConfigurationType="4" | ||
23 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
24 | CharacterSet="1" | ||
25 | > | ||
26 | <Tool | ||
27 | Name="VCPreBuildEventTool" | ||
28 | /> | ||
29 | <Tool | ||
30 | Name="VCCustomBuildTool" | ||
31 | /> | ||
32 | <Tool | ||
33 | Name="VCXMLDataGeneratorTool" | ||
34 | /> | ||
35 | <Tool | ||
36 | Name="VCWebServiceProxyGeneratorTool" | ||
37 | /> | ||
38 | <Tool | ||
39 | Name="VCMIDLTool" | ||
40 | /> | ||
41 | <Tool | ||
42 | Name="VCCLCompilerTool" | ||
43 | Optimization="0" | ||
44 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
45 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" | ||
46 | MinimalRebuild="true" | ||
47 | BasicRuntimeChecks="3" | ||
48 | RuntimeLibrary="1" | ||
49 | StructMemberAlignment="4" | ||
50 | TreatWChar_tAsBuiltInType="false" | ||
51 | ForceConformanceInForLoopScope="true" | ||
52 | UsePrecompiledHeader="0" | ||
53 | WarningLevel="3" | ||
54 | Detect64BitPortabilityProblems="false" | ||
55 | DebugInformationFormat="4" | ||
56 | /> | ||
57 | <Tool | ||
58 | Name="VCManagedResourceCompilerTool" | ||
59 | /> | ||
60 | <Tool | ||
61 | Name="VCResourceCompilerTool" | ||
62 | /> | ||
63 | <Tool | ||
64 | Name="VCPreLinkEventTool" | ||
65 | /> | ||
66 | <Tool | ||
67 | Name="VCLibrarianTool" | ||
68 | OutputFile="$(OutDir)/llwindow.lib" | ||
69 | /> | ||
70 | <Tool | ||
71 | Name="VCALinkTool" | ||
72 | /> | ||
73 | <Tool | ||
74 | Name="VCXDCMakeTool" | ||
75 | /> | ||
76 | <Tool | ||
77 | Name="VCBscMakeTool" | ||
78 | /> | ||
79 | <Tool | ||
80 | Name="VCFxCopTool" | ||
81 | /> | ||
82 | <Tool | ||
83 | Name="VCPostBuildEventTool" | ||
84 | /> | ||
85 | </Configuration> | ||
86 | <Configuration | ||
87 | Name="Release|Win32" | ||
88 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
89 | IntermediateDirectory="Release" | ||
90 | ConfigurationType="4" | ||
91 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
92 | CharacterSet="1" | ||
93 | > | ||
94 | <Tool | ||
95 | Name="VCPreBuildEventTool" | ||
96 | /> | ||
97 | <Tool | ||
98 | Name="VCCustomBuildTool" | ||
99 | /> | ||
100 | <Tool | ||
101 | Name="VCXMLDataGeneratorTool" | ||
102 | /> | ||
103 | <Tool | ||
104 | Name="VCWebServiceProxyGeneratorTool" | ||
105 | /> | ||
106 | <Tool | ||
107 | Name="VCMIDLTool" | ||
108 | /> | ||
109 | <Tool | ||
110 | Name="VCCLCompilerTool" | ||
111 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
112 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | ||
113 | TreatWChar_tAsBuiltInType="false" | ||
114 | ForceConformanceInForLoopScope="true" | ||
115 | WarningLevel="3" | ||
116 | WarnAsError="true" | ||
117 | DebugInformationFormat="3" | ||
118 | /> | ||
119 | <Tool | ||
120 | Name="VCManagedResourceCompilerTool" | ||
121 | /> | ||
122 | <Tool | ||
123 | Name="VCResourceCompilerTool" | ||
124 | /> | ||
125 | <Tool | ||
126 | Name="VCPreLinkEventTool" | ||
127 | /> | ||
128 | <Tool | ||
129 | Name="VCLibrarianTool" | ||
130 | OutputFile="$(OutDir)/llwindow.lib" | ||
131 | /> | ||
132 | <Tool | ||
133 | Name="VCALinkTool" | ||
134 | /> | ||
135 | <Tool | ||
136 | Name="VCXDCMakeTool" | ||
137 | /> | ||
138 | <Tool | ||
139 | Name="VCBscMakeTool" | ||
140 | /> | ||
141 | <Tool | ||
142 | Name="VCFxCopTool" | ||
143 | /> | ||
144 | <Tool | ||
145 | Name="VCPostBuildEventTool" | ||
146 | /> | ||
147 | </Configuration> | ||
148 | <Configuration | ||
149 | Name="DebugMesaHeadless|Win32" | ||
150 | OutputDirectory="../lib_debug/i686-win32" | ||
151 | IntermediateDirectory="$(ConfigurationName)" | ||
152 | ConfigurationType="4" | ||
153 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
154 | CharacterSet="1" | ||
155 | > | ||
156 | <Tool | ||
157 | Name="VCPreBuildEventTool" | ||
158 | /> | ||
159 | <Tool | ||
160 | Name="VCCustomBuildTool" | ||
161 | /> | ||
162 | <Tool | ||
163 | Name="VCXMLDataGeneratorTool" | ||
164 | /> | ||
165 | <Tool | ||
166 | Name="VCWebServiceProxyGeneratorTool" | ||
167 | /> | ||
168 | <Tool | ||
169 | Name="VCMIDLTool" | ||
170 | /> | ||
171 | <Tool | ||
172 | Name="VCCLCompilerTool" | ||
173 | Optimization="0" | ||
174 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\GLMESA;..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
175 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG;LL_MESA;LL_MESA_HEADLESS" | ||
176 | MinimalRebuild="true" | ||
177 | BasicRuntimeChecks="3" | ||
178 | RuntimeLibrary="1" | ||
179 | StructMemberAlignment="4" | ||
180 | TreatWChar_tAsBuiltInType="false" | ||
181 | ForceConformanceInForLoopScope="true" | ||
182 | UsePrecompiledHeader="0" | ||
183 | WarningLevel="3" | ||
184 | Detect64BitPortabilityProblems="false" | ||
185 | DebugInformationFormat="4" | ||
186 | /> | ||
187 | <Tool | ||
188 | Name="VCManagedResourceCompilerTool" | ||
189 | /> | ||
190 | <Tool | ||
191 | Name="VCResourceCompilerTool" | ||
192 | /> | ||
193 | <Tool | ||
194 | Name="VCPreLinkEventTool" | ||
195 | /> | ||
196 | <Tool | ||
197 | Name="VCLibrarianTool" | ||
198 | OutputFile="$(OutDir)/llwindow_mesaheadless.lib" | ||
199 | /> | ||
200 | <Tool | ||
201 | Name="VCALinkTool" | ||
202 | /> | ||
203 | <Tool | ||
204 | Name="VCXDCMakeTool" | ||
205 | /> | ||
206 | <Tool | ||
207 | Name="VCBscMakeTool" | ||
208 | /> | ||
209 | <Tool | ||
210 | Name="VCFxCopTool" | ||
211 | /> | ||
212 | <Tool | ||
213 | Name="VCPostBuildEventTool" | ||
214 | /> | ||
215 | </Configuration> | ||
216 | <Configuration | ||
217 | Name="ReleaseNoOpt|Win32" | ||
218 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
219 | IntermediateDirectory="$(ConfigurationName)" | ||
220 | ConfigurationType="4" | ||
221 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
222 | CharacterSet="1" | ||
223 | > | ||
224 | <Tool | ||
225 | Name="VCPreBuildEventTool" | ||
226 | /> | ||
227 | <Tool | ||
228 | Name="VCCustomBuildTool" | ||
229 | /> | ||
230 | <Tool | ||
231 | Name="VCXMLDataGeneratorTool" | ||
232 | /> | ||
233 | <Tool | ||
234 | Name="VCWebServiceProxyGeneratorTool" | ||
235 | /> | ||
236 | <Tool | ||
237 | Name="VCMIDLTool" | ||
238 | /> | ||
239 | <Tool | ||
240 | Name="VCCLCompilerTool" | ||
241 | Optimization="0" | ||
242 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
243 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | ||
244 | RuntimeLibrary="0" | ||
245 | StructMemberAlignment="0" | ||
246 | TreatWChar_tAsBuiltInType="false" | ||
247 | ForceConformanceInForLoopScope="true" | ||
248 | UsePrecompiledHeader="0" | ||
249 | WarningLevel="3" | ||
250 | Detect64BitPortabilityProblems="false" | ||
251 | DebugInformationFormat="3" | ||
252 | /> | ||
253 | <Tool | ||
254 | Name="VCManagedResourceCompilerTool" | ||
255 | /> | ||
256 | <Tool | ||
257 | Name="VCResourceCompilerTool" | ||
258 | /> | ||
259 | <Tool | ||
260 | Name="VCPreLinkEventTool" | ||
261 | /> | ||
262 | <Tool | ||
263 | Name="VCLibrarianTool" | ||
264 | OutputFile="$(OutDir)/llwindow.lib" | ||
265 | /> | ||
266 | <Tool | ||
267 | Name="VCALinkTool" | ||
268 | /> | ||
269 | <Tool | ||
270 | Name="VCXDCMakeTool" | ||
271 | /> | ||
272 | <Tool | ||
273 | Name="VCBscMakeTool" | ||
274 | /> | ||
275 | <Tool | ||
276 | Name="VCFxCopTool" | ||
277 | /> | ||
278 | <Tool | ||
279 | Name="VCPostBuildEventTool" | ||
280 | /> | ||
281 | </Configuration> | ||
282 | </Configurations> | ||
283 | <References> | ||
284 | </References> | ||
285 | <Files> | ||
286 | <Filter | ||
287 | Name="Source Files" | ||
288 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" | ||
289 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" | ||
290 | > | ||
291 | <File | ||
292 | RelativePath=".\lldxhardware.cpp" | ||
293 | > | ||
294 | </File> | ||
295 | <File | ||
296 | RelativePath=".\llgl.cpp" | ||
297 | > | ||
298 | </File> | ||
299 | <File | ||
300 | RelativePath=".\llkeyboard.cpp" | ||
301 | > | ||
302 | </File> | ||
303 | <File | ||
304 | RelativePath=".\llkeyboardwin32.cpp" | ||
305 | > | ||
306 | </File> | ||
307 | <File | ||
308 | RelativePath=".\lllogitechlcd.cpp" | ||
309 | > | ||
310 | </File> | ||
311 | <File | ||
312 | RelativePath=".\llwindow.cpp" | ||
313 | > | ||
314 | </File> | ||
315 | <File | ||
316 | RelativePath=".\llwindowheadless.cpp" | ||
317 | > | ||
318 | </File> | ||
319 | <File | ||
320 | RelativePath=".\llwindowmesaheadless.cpp" | ||
321 | > | ||
322 | </File> | ||
323 | <File | ||
324 | RelativePath=".\llwindowwin32.cpp" | ||
325 | > | ||
326 | </File> | ||
327 | </Filter> | ||
328 | <Filter | ||
329 | Name="Header Files" | ||
330 | Filter="h;hpp;hxx;hm;inl;inc;xsd" | ||
331 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" | ||
332 | > | ||
333 | <File | ||
334 | RelativePath=".\lldxhardware.h" | ||
335 | > | ||
336 | </File> | ||
337 | <File | ||
338 | RelativePath=".\llgl.h" | ||
339 | > | ||
340 | </File> | ||
341 | <File | ||
342 | RelativePath=".\llglheaders.h" | ||
343 | > | ||
344 | </File> | ||
345 | <File | ||
346 | RelativePath=".\llglstates.h" | ||
347 | > | ||
348 | </File> | ||
349 | <File | ||
350 | RelativePath=".\llgltypes.h" | ||
351 | > | ||
352 | </File> | ||
353 | <File | ||
354 | RelativePath=".\llkeyboard.h" | ||
355 | > | ||
356 | </File> | ||
357 | <File | ||
358 | RelativePath=".\llkeyboardwin32.h" | ||
359 | > | ||
360 | </File> | ||
361 | <File | ||
362 | RelativePath=".\lllogitechlcd.h" | ||
363 | > | ||
364 | </File> | ||
365 | <File | ||
366 | RelativePath=".\llmousehandler.h" | ||
367 | > | ||
368 | </File> | ||
369 | <File | ||
370 | RelativePath=".\llwindow.h" | ||
371 | > | ||
372 | </File> | ||
373 | <File | ||
374 | RelativePath=".\llwindowheadless.h" | ||
375 | > | ||
376 | </File> | ||
377 | <File | ||
378 | RelativePath=".\llwindowmesaheadless.h" | ||
379 | > | ||
380 | </File> | ||
381 | <File | ||
382 | RelativePath=".\llwindowwin32.h" | ||
383 | > | ||
384 | </File> | ||
385 | </Filter> | ||
386 | <Filter | ||
387 | Name="Resource Files" | ||
388 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" | ||
389 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" | ||
390 | > | ||
391 | </Filter> | ||
392 | </Files> | ||
393 | <Globals> | ||
394 | </Globals> | ||
395 | </VisualStudioProject> | ||
diff --git a/linden/indra/llwindow/llwindow_vc9.vcproj b/linden/indra/llwindow/llwindow_vc9.vcproj deleted file mode 100644 index 991c296..0000000 --- a/linden/indra/llwindow/llwindow_vc9.vcproj +++ /dev/null | |||
@@ -1,398 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="Windows-1252"?> | ||
2 | <VisualStudioProject | ||
3 | ProjectType="Visual C++" | ||
4 | Version="9.00" | ||
5 | Name="llwindow" | ||
6 | ProjectGUID="{B5B53617-416F-404A-BF10-22EBCCA0E4FB}" | ||
7 | RootNamespace="llwindow" | ||
8 | Keyword="Win32Proj" | ||
9 | TargetFrameworkVersion="131072" | ||
10 | > | ||
11 | <Platforms> | ||
12 | <Platform | ||
13 | Name="Win32" | ||
14 | /> | ||
15 | </Platforms> | ||
16 | <ToolFiles> | ||
17 | </ToolFiles> | ||
18 | <Configurations> | ||
19 | <Configuration | ||
20 | Name="Debug|Win32" | ||
21 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
22 | IntermediateDirectory="Debug" | ||
23 | ConfigurationType="4" | ||
24 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
25 | CharacterSet="1" | ||
26 | > | ||
27 | <Tool | ||
28 | Name="VCPreBuildEventTool" | ||
29 | /> | ||
30 | <Tool | ||
31 | Name="VCCustomBuildTool" | ||
32 | /> | ||
33 | <Tool | ||
34 | Name="VCXMLDataGeneratorTool" | ||
35 | /> | ||
36 | <Tool | ||
37 | Name="VCWebServiceProxyGeneratorTool" | ||
38 | /> | ||
39 | <Tool | ||
40 | Name="VCMIDLTool" | ||
41 | /> | ||
42 | <Tool | ||
43 | Name="VCCLCompilerTool" | ||
44 | Optimization="0" | ||
45 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
46 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG" | ||
47 | MinimalRebuild="true" | ||
48 | BasicRuntimeChecks="3" | ||
49 | RuntimeLibrary="1" | ||
50 | StructMemberAlignment="4" | ||
51 | TreatWChar_tAsBuiltInType="false" | ||
52 | ForceConformanceInForLoopScope="true" | ||
53 | UsePrecompiledHeader="0" | ||
54 | WarningLevel="3" | ||
55 | Detect64BitPortabilityProblems="false" | ||
56 | DebugInformationFormat="4" | ||
57 | /> | ||
58 | <Tool | ||
59 | Name="VCManagedResourceCompilerTool" | ||
60 | /> | ||
61 | <Tool | ||
62 | Name="VCResourceCompilerTool" | ||
63 | /> | ||
64 | <Tool | ||
65 | Name="VCPreLinkEventTool" | ||
66 | /> | ||
67 | <Tool | ||
68 | Name="VCLibrarianTool" | ||
69 | OutputFile="$(OutDir)/llwindow.lib" | ||
70 | /> | ||
71 | <Tool | ||
72 | Name="VCALinkTool" | ||
73 | /> | ||
74 | <Tool | ||
75 | Name="VCXDCMakeTool" | ||
76 | /> | ||
77 | <Tool | ||
78 | Name="VCBscMakeTool" | ||
79 | /> | ||
80 | <Tool | ||
81 | Name="VCFxCopTool" | ||
82 | /> | ||
83 | <Tool | ||
84 | Name="VCPostBuildEventTool" | ||
85 | /> | ||
86 | </Configuration> | ||
87 | <Configuration | ||
88 | Name="Release|Win32" | ||
89 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
90 | IntermediateDirectory="Release" | ||
91 | ConfigurationType="4" | ||
92 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
93 | CharacterSet="1" | ||
94 | > | ||
95 | <Tool | ||
96 | Name="VCPreBuildEventTool" | ||
97 | /> | ||
98 | <Tool | ||
99 | Name="VCCustomBuildTool" | ||
100 | /> | ||
101 | <Tool | ||
102 | Name="VCXMLDataGeneratorTool" | ||
103 | /> | ||
104 | <Tool | ||
105 | Name="VCWebServiceProxyGeneratorTool" | ||
106 | /> | ||
107 | <Tool | ||
108 | Name="VCMIDLTool" | ||
109 | /> | ||
110 | <Tool | ||
111 | Name="VCCLCompilerTool" | ||
112 | AdditionalOptions="/Oy-" | ||
113 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
114 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | ||
115 | TreatWChar_tAsBuiltInType="false" | ||
116 | ForceConformanceInForLoopScope="true" | ||
117 | WarningLevel="3" | ||
118 | WarnAsError="true" | ||
119 | DebugInformationFormat="3" | ||
120 | /> | ||
121 | <Tool | ||
122 | Name="VCManagedResourceCompilerTool" | ||
123 | /> | ||
124 | <Tool | ||
125 | Name="VCResourceCompilerTool" | ||
126 | /> | ||
127 | <Tool | ||
128 | Name="VCPreLinkEventTool" | ||
129 | /> | ||
130 | <Tool | ||
131 | Name="VCLibrarianTool" | ||
132 | OutputFile="$(OutDir)/llwindow.lib" | ||
133 | /> | ||
134 | <Tool | ||
135 | Name="VCALinkTool" | ||
136 | /> | ||
137 | <Tool | ||
138 | Name="VCXDCMakeTool" | ||
139 | /> | ||
140 | <Tool | ||
141 | Name="VCBscMakeTool" | ||
142 | /> | ||
143 | <Tool | ||
144 | Name="VCFxCopTool" | ||
145 | /> | ||
146 | <Tool | ||
147 | Name="VCPostBuildEventTool" | ||
148 | /> | ||
149 | </Configuration> | ||
150 | <Configuration | ||
151 | Name="DebugMesaHeadless|Win32" | ||
152 | OutputDirectory="../lib_debug/i686-win32" | ||
153 | IntermediateDirectory="$(ConfigurationName)" | ||
154 | ConfigurationType="4" | ||
155 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
156 | CharacterSet="1" | ||
157 | > | ||
158 | <Tool | ||
159 | Name="VCPreBuildEventTool" | ||
160 | /> | ||
161 | <Tool | ||
162 | Name="VCCustomBuildTool" | ||
163 | /> | ||
164 | <Tool | ||
165 | Name="VCXMLDataGeneratorTool" | ||
166 | /> | ||
167 | <Tool | ||
168 | Name="VCWebServiceProxyGeneratorTool" | ||
169 | /> | ||
170 | <Tool | ||
171 | Name="VCMIDLTool" | ||
172 | /> | ||
173 | <Tool | ||
174 | Name="VCCLCompilerTool" | ||
175 | Optimization="0" | ||
176 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\GLMESA;..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
177 | PreprocessorDefinitions="WIN32;_DEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_DEBUG;LL_MESA;LL_MESA_HEADLESS" | ||
178 | MinimalRebuild="true" | ||
179 | BasicRuntimeChecks="3" | ||
180 | RuntimeLibrary="1" | ||
181 | StructMemberAlignment="4" | ||
182 | TreatWChar_tAsBuiltInType="false" | ||
183 | ForceConformanceInForLoopScope="true" | ||
184 | UsePrecompiledHeader="0" | ||
185 | WarningLevel="3" | ||
186 | Detect64BitPortabilityProblems="false" | ||
187 | DebugInformationFormat="4" | ||
188 | /> | ||
189 | <Tool | ||
190 | Name="VCManagedResourceCompilerTool" | ||
191 | /> | ||
192 | <Tool | ||
193 | Name="VCResourceCompilerTool" | ||
194 | /> | ||
195 | <Tool | ||
196 | Name="VCPreLinkEventTool" | ||
197 | /> | ||
198 | <Tool | ||
199 | Name="VCLibrarianTool" | ||
200 | OutputFile="$(OutDir)/llwindow_mesaheadless.lib" | ||
201 | /> | ||
202 | <Tool | ||
203 | Name="VCALinkTool" | ||
204 | /> | ||
205 | <Tool | ||
206 | Name="VCXDCMakeTool" | ||
207 | /> | ||
208 | <Tool | ||
209 | Name="VCBscMakeTool" | ||
210 | /> | ||
211 | <Tool | ||
212 | Name="VCFxCopTool" | ||
213 | /> | ||
214 | <Tool | ||
215 | Name="VCPostBuildEventTool" | ||
216 | /> | ||
217 | </Configuration> | ||
218 | <Configuration | ||
219 | Name="ReleaseNoOpt|Win32" | ||
220 | OutputDirectory="../lib_$(ConfigurationName)/i686-win32" | ||
221 | IntermediateDirectory="$(ConfigurationName)" | ||
222 | ConfigurationType="4" | ||
223 | InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" | ||
224 | CharacterSet="1" | ||
225 | > | ||
226 | <Tool | ||
227 | Name="VCPreBuildEventTool" | ||
228 | /> | ||
229 | <Tool | ||
230 | Name="VCCustomBuildTool" | ||
231 | /> | ||
232 | <Tool | ||
233 | Name="VCXMLDataGeneratorTool" | ||
234 | /> | ||
235 | <Tool | ||
236 | Name="VCWebServiceProxyGeneratorTool" | ||
237 | /> | ||
238 | <Tool | ||
239 | Name="VCMIDLTool" | ||
240 | /> | ||
241 | <Tool | ||
242 | Name="VCCLCompilerTool" | ||
243 | AdditionalOptions="/Oy-" | ||
244 | Optimization="0" | ||
245 | AdditionalIncludeDirectories="..\llcommon;..\llmath;..\llxml;..\llvfs;..\llmessage;..\llscene;..\llimage;..\llrender;"..\..\libraries\i686-win32\include";..\..\libraries\include\;..\..\libraries\include\Logitech_LCD;..\..\libraries\include\Logitech_LCD\LCDUI" | ||
246 | PreprocessorDefinitions="WIN32;NDEBUG;_LIB;LL_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;LL_RELEASE" | ||
247 | RuntimeLibrary="0" | ||
248 | StructMemberAlignment="0" | ||
249 | TreatWChar_tAsBuiltInType="false" | ||
250 | ForceConformanceInForLoopScope="true" | ||
251 | UsePrecompiledHeader="0" | ||
252 | WarningLevel="3" | ||
253 | Detect64BitPortabilityProblems="false" | ||
254 | DebugInformationFormat="3" | ||
255 | /> | ||
256 | <Tool | ||
257 | Name="VCManagedResourceCompilerTool" | ||
258 | /> | ||
259 | <Tool | ||
260 | Name="VCResourceCompilerTool" | ||
261 | /> | ||
262 | <Tool | ||
263 | Name="VCPreLinkEventTool" | ||
264 | /> | ||
265 | <Tool | ||
266 | Name="VCLibrarianTool" | ||
267 | OutputFile="$(OutDir)/llwindow.lib" | ||
268 | /> | ||
269 | <Tool | ||
270 | Name="VCALinkTool" | ||
271 | /> | ||
272 | <Tool | ||
273 | Name="VCXDCMakeTool" | ||
274 | /> | ||
275 | <Tool | ||
276 | Name="VCBscMakeTool" | ||
277 | /> | ||
278 | <Tool | ||
279 | Name="VCFxCopTool" | ||
280 | /> | ||
281 | <Tool | ||
282 | Name="VCPostBuildEventTool" | ||
283 | /> | ||
284 | </Configuration> | ||
285 | </Configurations> | ||
286 | <References> | ||
287 | </References> | ||
288 | <Files> | ||
289 | <Filter | ||
290 | Name="Source Files" | ||
291 | Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx" | ||
292 | UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" | ||
293 | > | ||
294 | <File | ||
295 | RelativePath=".\lldxhardware.cpp" | ||
296 | > | ||
297 | </File> | ||
298 | <File | ||
299 | RelativePath=".\llgl.cpp" | ||
300 | > | ||
301 | </File> | ||
302 | <File | ||
303 | RelativePath=".\llkeyboard.cpp" | ||
304 | > | ||
305 | </File> | ||
306 | <File | ||
307 | RelativePath=".\llkeyboardwin32.cpp" | ||
308 | > | ||
309 | </File> | ||
310 | <File | ||
311 | RelativePath=".\lllogitechlcd.cpp" | ||
312 | > | ||
313 | </File> | ||
314 | <File | ||
315 | RelativePath=".\llwindow.cpp" | ||
316 | > | ||
317 | </File> | ||
318 | <File | ||
319 | RelativePath=".\llwindowheadless.cpp" | ||
320 | > | ||
321 | </File> | ||
322 | <File | ||
323 | RelativePath=".\llwindowmesaheadless.cpp" | ||
324 | > | ||
325 | </File> | ||
326 | <File | ||
327 | RelativePath=".\llwindowwin32.cpp" | ||
328 | > | ||
329 | </File> | ||
330 | </Filter> | ||
331 | <Filter | ||
332 | Name="Header Files" | ||
333 | Filter="h;hpp;hxx;hm;inl;inc;xsd" | ||
334 | UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" | ||
335 | > | ||
336 | <File | ||
337 | RelativePath=".\lldxhardware.h" | ||
338 | > | ||
339 | </File> | ||
340 | <File | ||
341 | RelativePath=".\llgl.h" | ||
342 | > | ||
343 | </File> | ||
344 | <File | ||
345 | RelativePath=".\llglheaders.h" | ||
346 | > | ||
347 | </File> | ||
348 | <File | ||
349 | RelativePath=".\llglstates.h" | ||
350 | > | ||
351 | </File> | ||
352 | <File | ||
353 | RelativePath=".\llgltypes.h" | ||
354 | > | ||
355 | </File> | ||
356 | <File | ||
357 | RelativePath=".\llkeyboard.h" | ||
358 | > | ||
359 | </File> | ||
360 | <File | ||
361 | RelativePath=".\llkeyboardwin32.h" | ||
362 | > | ||
363 | </File> | ||
364 | <File | ||
365 | RelativePath=".\lllogitechlcd.h" | ||
366 | > | ||
367 | </File> | ||
368 | <File | ||
369 | RelativePath=".\llmousehandler.h" | ||
370 | > | ||
371 | </File> | ||
372 | <File | ||
373 | RelativePath=".\llwindow.h" | ||
374 | > | ||
375 | </File> | ||
376 | <File | ||
377 | RelativePath=".\llwindowheadless.h" | ||
378 | > | ||
379 | </File> | ||
380 | <File | ||
381 | RelativePath=".\llwindowmesaheadless.h" | ||
382 | > | ||
383 | </File> | ||
384 | <File | ||
385 | RelativePath=".\llwindowwin32.h" | ||
386 | > | ||
387 | </File> | ||
388 | </Filter> | ||
389 | <Filter | ||
390 | Name="Resource Files" | ||
391 | Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx" | ||
392 | UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" | ||
393 | > | ||
394 | </Filter> | ||
395 | </Files> | ||
396 | <Globals> | ||
397 | </Globals> | ||
398 | </VisualStudioProject> | ||
diff --git a/linden/indra/llwindow/llwindowheadless.cpp b/linden/indra/llwindow/llwindowheadless.cpp index 441b4e9..c8f0c5c 100644 --- a/linden/indra/llwindow/llwindowheadless.cpp +++ b/linden/indra/llwindow/llwindowheadless.cpp | |||
@@ -37,7 +37,7 @@ | |||
37 | // | 37 | // |
38 | // LLWindowHeadless | 38 | // LLWindowHeadless |
39 | // | 39 | // |
40 | LLWindowHeadless::LLWindowHeadless(char *title, char *name, S32 x, S32 y, S32 width, S32 height, | 40 | LLWindowHeadless::LLWindowHeadless(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, |
41 | U32 flags, BOOL fullscreen, BOOL clearBg, | 41 | U32 flags, BOOL fullscreen, BOOL clearBg, |
42 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth) | 42 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth) |
43 | : LLWindow(fullscreen, flags) | 43 | : LLWindow(fullscreen, flags) |
diff --git a/linden/indra/llwindow/llwindowheadless.h b/linden/indra/llwindow/llwindowheadless.h index 7cef7d8..fffb2ed 100644 --- a/linden/indra/llwindow/llwindowheadless.h +++ b/linden/indra/llwindow/llwindowheadless.h | |||
@@ -77,12 +77,6 @@ public: | |||
77 | /*virtual*/ void delayInputProcessing() {}; | 77 | /*virtual*/ void delayInputProcessing() {}; |
78 | /*virtual*/ void swapBuffers(); | 78 | /*virtual*/ void swapBuffers(); |
79 | 79 | ||
80 | /*virtual*/ LLString getTempFileName() {return LLString(""); }; | ||
81 | /*virtual*/ void deleteFile( const char* file_name ) {}; | ||
82 | /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ) {return 0; }; | ||
83 | /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL) { return FALSE; }; | ||
84 | |||
85 | |||
86 | // handy coordinate space conversion routines | 80 | // handy coordinate space conversion routines |
87 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to) { return FALSE; }; | 81 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to) { return FALSE; }; |
88 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to) { return FALSE; }; | 82 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to) { return FALSE; }; |
@@ -99,7 +93,7 @@ public: | |||
99 | /*virtual*/ void *getPlatformWindow() { return 0; }; | 93 | /*virtual*/ void *getPlatformWindow() { return 0; }; |
100 | /*virtual*/ void bringToFront() {}; | 94 | /*virtual*/ void bringToFront() {}; |
101 | 95 | ||
102 | LLWindowHeadless(char *title, char *name, S32 x, S32 y, S32 width, S32 height, | 96 | LLWindowHeadless(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, |
103 | U32 flags, BOOL fullscreen, BOOL clearBg, | 97 | U32 flags, BOOL fullscreen, BOOL clearBg, |
104 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth); | 98 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth); |
105 | virtual ~LLWindowHeadless(); | 99 | virtual ~LLWindowHeadless(); |
@@ -114,7 +108,7 @@ public: | |||
114 | virtual ~LLSplashScreenHeadless() {}; | 108 | virtual ~LLSplashScreenHeadless() {}; |
115 | 109 | ||
116 | /*virtual*/ void showImpl() {}; | 110 | /*virtual*/ void showImpl() {}; |
117 | /*virtual*/ void updateImpl(const char* mesg) {}; | 111 | /*virtual*/ void updateImpl(const std::string& mesg) {}; |
118 | /*virtual*/ void hideImpl() {}; | 112 | /*virtual*/ void hideImpl() {}; |
119 | 113 | ||
120 | }; | 114 | }; |
diff --git a/linden/indra/llwindow/llwindowmacosx.cpp b/linden/indra/llwindow/llwindowmacosx.cpp index 5ab0ba6..5102173 100644 --- a/linden/indra/llwindow/llwindowmacosx.cpp +++ b/linden/indra/llwindow/llwindowmacosx.cpp | |||
@@ -29,8 +29,6 @@ | |||
29 | * $/LicenseInfo$ | 29 | * $/LicenseInfo$ |
30 | */ | 30 | */ |
31 | 31 | ||
32 | #if LL_DARWIN | ||
33 | |||
34 | #include "linden_common.h" | 32 | #include "linden_common.h" |
35 | 33 | ||
36 | #include <Carbon/Carbon.h> | 34 | #include <Carbon/Carbon.h> |
@@ -42,10 +40,6 @@ | |||
42 | #include "llgl.h" | 40 | #include "llgl.h" |
43 | #include "llstring.h" | 41 | #include "llstring.h" |
44 | #include "lldir.h" | 42 | #include "lldir.h" |
45 | #include "llviewercontrol.h" | ||
46 | |||
47 | #include "llglheaders.h" | ||
48 | |||
49 | #include "indra_constants.h" | 43 | #include "indra_constants.h" |
50 | 44 | ||
51 | #include "llwindowmacosx-objc.h" | 45 | #include "llwindowmacosx-objc.h" |
@@ -66,37 +60,16 @@ const S32 MAX_NUM_RESOLUTIONS = 32; | |||
66 | // LLWindowMacOSX | 60 | // LLWindowMacOSX |
67 | // | 61 | // |
68 | 62 | ||
69 | // Cross-platform bits: | 63 | BOOL LLWindowMacOSX::sUseMultGL = FALSE; |
64 | WindowRef LLWindowMacOSX::sMediaWindow = NULL; | ||
70 | 65 | ||
71 | void show_window_creation_error(const char* title) | 66 | // Cross-platform bits: |
72 | { | ||
73 | llwarns << title << llendl; | ||
74 | /* | ||
75 | OSMessageBox( | ||
76 | "Second Life is unable to run because it can't set up your display.\n" | ||
77 | "We need to be able to make a 32-bit color window at 1024x768, with\n" | ||
78 | "an 8 bit alpha channel.\n" | ||
79 | "\n" | ||
80 | "First, be sure your monitor is set to True Color (32-bit) in\n" | ||
81 | "Start -> Control Panels -> Display -> Settings.\n" | ||
82 | "\n" | ||
83 | "Otherwise, this may be due to video card driver issues.\n" | ||
84 | "Please make sure you have the latest video card drivers installed.\n" | ||
85 | "ATI drivers are available at http://www.ati.com/\n" | ||
86 | "nVidia drivers are available at http://www.nvidia.com/\n" | ||
87 | "\n" | ||
88 | "If you continue to receive this message, contact customer service.", | ||
89 | title, | ||
90 | OSMB_OK); | ||
91 | */ | ||
92 | } | ||
93 | 67 | ||
94 | BOOL check_for_card(const char* RENDERER, const char* bad_card) | 68 | BOOL check_for_card(const char* RENDERER, const char* bad_card) |
95 | { | 69 | { |
96 | if (!strnicmp(RENDERER, bad_card, strlen(bad_card))) | 70 | if (!strnicmp(RENDERER, bad_card, strlen(bad_card))) |
97 | { | 71 | { |
98 | char buffer[1024];/* Flawfinder: ignore */ | 72 | std::string buffer = llformat( |
99 | snprintf(buffer, sizeof(buffer), | ||
100 | "Your video card appears to be a %s, which Second Life does not support.\n" | 73 | "Your video card appears to be a %s, which Second Life does not support.\n" |
101 | "\n" | 74 | "\n" |
102 | "Second Life requires a video card with 32 Mb of memory or more, as well as\n" | 75 | "Second Life requires a video card with 32 Mb of memory or more, as well as\n" |
@@ -110,7 +83,7 @@ BOOL check_for_card(const char* RENDERER, const char* bad_card) | |||
110 | "You can try to run Second Life, but it will probably crash or run\n" | 83 | "You can try to run Second Life, but it will probably crash or run\n" |
111 | "very slowly. Try anyway?", | 84 | "very slowly. Try anyway?", |
112 | bad_card); | 85 | bad_card); |
113 | S32 button = OSMessageBox(buffer, "Unsupported video card", OSMB_YESNO); | 86 | S32 button = OSMessageBox(buffer.c_str(), "Unsupported video card", OSMB_YESNO); |
114 | if (OSBTN_YES == button) | 87 | if (OSBTN_YES == button) |
115 | { | 88 | { |
116 | return FALSE; | 89 | return FALSE; |
@@ -124,8 +97,6 @@ BOOL check_for_card(const char* RENDERER, const char* bad_card) | |||
124 | return FALSE; | 97 | return FALSE; |
125 | } | 98 | } |
126 | 99 | ||
127 | |||
128 | |||
129 | // Switch to determine whether we capture all displays, or just the main one. | 100 | // Switch to determine whether we capture all displays, or just the main one. |
130 | // We may want to base this on the setting of _DEBUG... | 101 | // We may want to base this on the setting of _DEBUG... |
131 | 102 | ||
@@ -242,7 +213,7 @@ static LLWindowMacOSX *gWindowImplementation = NULL; | |||
242 | 213 | ||
243 | 214 | ||
244 | 215 | ||
245 | LLWindowMacOSX::LLWindowMacOSX(char *title, char *name, S32 x, S32 y, S32 width, | 216 | LLWindowMacOSX::LLWindowMacOSX(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, |
246 | S32 height, U32 flags, | 217 | S32 height, U32 flags, |
247 | BOOL fullscreen, BOOL clearBg, | 218 | BOOL fullscreen, BOOL clearBg, |
248 | BOOL disable_vsync, BOOL use_gl, | 219 | BOOL disable_vsync, BOOL use_gl, |
@@ -289,10 +260,11 @@ LLWindowMacOSX::LLWindowMacOSX(char *title, char *name, S32 x, S32 y, S32 width, | |||
289 | mOriginalAspectRatio = (double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay); | 260 | mOriginalAspectRatio = (double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay); |
290 | 261 | ||
291 | // Stash the window title | 262 | // Stash the window title |
292 | strcpy((char*)mWindowTitle + 1, title); /* Flawfinder: ignore */ | 263 | strcpy((char*)mWindowTitle + 1, title.c_str()); /* Flawfinder: ignore */ |
293 | mWindowTitle[0] = strlen(title); /* Flawfinder: ignore */ | 264 | mWindowTitle[0] = title.length(); |
294 | 265 | ||
295 | mEventHandlerUPP = NewEventHandlerUPP(staticEventHandler); | 266 | mEventHandlerUPP = NewEventHandlerUPP(staticEventHandler); |
267 | mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator); | ||
296 | mGlobalHandlerRef = NULL; | 268 | mGlobalHandlerRef = NULL; |
297 | mWindowHandlerRef = NULL; | 269 | mWindowHandlerRef = NULL; |
298 | 270 | ||
@@ -467,8 +439,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits | |||
467 | mFullscreenBits = -1; | 439 | mFullscreenBits = -1; |
468 | mFullscreenRefresh = -1; | 440 | mFullscreenRefresh = -1; |
469 | 441 | ||
470 | char error[256]; /* Flawfinder: ignore */ | 442 | std::string error= llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); |
471 | snprintf(error, sizeof(error), "Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); | ||
472 | OSMessageBox(error, "Error", OSMB_OK); | 443 | OSMessageBox(error, "Error", OSMB_OK); |
473 | } | 444 | } |
474 | } | 445 | } |
@@ -809,7 +780,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits | |||
809 | aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap); | 780 | aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap); |
810 | 781 | ||
811 | //enable multi-threaded OpenGL | 782 | //enable multi-threaded OpenGL |
812 | if (gSavedSettings.getBOOL("RenderAppleUseMultGL")) | 783 | if (sUseMultGL) |
813 | { | 784 | { |
814 | CGLError cgl_err; | 785 | CGLError cgl_err; |
815 | CGLContextObj ctx = CGLGetCurrentContext(); | 786 | CGLContextObj ctx = CGLGetCurrentContext(); |
@@ -826,9 +797,6 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits | |||
826 | } | 797 | } |
827 | } | 798 | } |
828 | 799 | ||
829 | //make sure multisample starts off disabled | ||
830 | glDisable(GL_MULTISAMPLE_ARB); | ||
831 | |||
832 | // Don't need to get the current gamma, since there's a call that restores it to the system defaults. | 800 | // Don't need to get the current gamma, since there's a call that restores it to the system defaults. |
833 | return TRUE; | 801 | return TRUE; |
834 | } | 802 | } |
@@ -1445,6 +1413,11 @@ BOOL LLWindowMacOSX::setCursorPosition(const LLCoordWindow position) | |||
1445 | // Under certain circumstances, this will trigger us to decouple the cursor. | 1413 | // Under certain circumstances, this will trigger us to decouple the cursor. |
1446 | adjustCursorDecouple(true); | 1414 | adjustCursorDecouple(true); |
1447 | 1415 | ||
1416 | // trigger mouse move callback | ||
1417 | LLCoordGL gl_pos; | ||
1418 | convertCoords(position, &gl_pos); | ||
1419 | mCallbacks->handleMouseMove(this, gl_pos, (MASK)0); | ||
1420 | |||
1448 | return result; | 1421 | return result; |
1449 | } | 1422 | } |
1450 | 1423 | ||
@@ -1515,6 +1488,7 @@ void LLWindowMacOSX::adjustCursorDecouple(bool warpingMouse) | |||
1515 | // llinfos << "adjustCursorDecouple: decoupling cursor" << llendl; | 1488 | // llinfos << "adjustCursorDecouple: decoupling cursor" << llendl; |
1516 | CGAssociateMouseAndMouseCursorPosition(false); | 1489 | CGAssociateMouseAndMouseCursorPosition(false); |
1517 | mCursorDecoupled = true; | 1490 | mCursorDecoupled = true; |
1491 | FlushSpecificEventsFromQueue(GetCurrentEventQueue(), mMoveEventCampartorUPP, NULL); | ||
1518 | mCursorIgnoreNextDelta = TRUE; | 1492 | mCursorIgnoreNextDelta = TRUE; |
1519 | } | 1493 | } |
1520 | } | 1494 | } |
@@ -1610,11 +1584,6 @@ void LLWindowMacOSX::afterDialog() | |||
1610 | } | 1584 | } |
1611 | 1585 | ||
1612 | 1586 | ||
1613 | S32 LLWindowMacOSX::stat(const char* file_name, struct stat* stat_info) | ||
1614 | { | ||
1615 | return ::stat( file_name, stat_info ); | ||
1616 | } | ||
1617 | |||
1618 | void LLWindowMacOSX::flashIcon(F32 seconds) | 1587 | void LLWindowMacOSX::flashIcon(F32 seconds) |
1619 | { | 1588 | { |
1620 | // Don't do this if we're already started, since this would try to install the NMRec twice. | 1589 | // Don't do this if we're already started, since this would try to install the NMRec twice. |
@@ -1744,15 +1713,6 @@ BOOL LLWindowMacOSX::copyTextToClipboard(const LLWString &s) | |||
1744 | } | 1713 | } |
1745 | 1714 | ||
1746 | 1715 | ||
1747 | BOOL LLWindowMacOSX::sendEmail(const char* address, const char* subject, const char* body_text, | ||
1748 | const char* attachment, const char* attachment_displayed_name ) | ||
1749 | { | ||
1750 | // MBW -- XXX -- Um... yeah. I'll get to this later. | ||
1751 | |||
1752 | return false; | ||
1753 | } | ||
1754 | |||
1755 | |||
1756 | // protected | 1716 | // protected |
1757 | BOOL LLWindowMacOSX::resetDisplayResolution() | 1717 | BOOL LLWindowMacOSX::resetDisplayResolution() |
1758 | { | 1718 | { |
@@ -1949,13 +1909,30 @@ BOOL LLWindowMacOSX::convertCoords(LLCoordGL from, LLCoordScreen *to) | |||
1949 | 1909 | ||
1950 | 1910 | ||
1951 | 1911 | ||
1952 | void LLWindowMacOSX::setupFailure(const char* text, const char* caption, U32 type) | 1912 | void LLWindowMacOSX::setupFailure(const std::string& text, const std::string& caption, U32 type) |
1953 | { | 1913 | { |
1954 | destroyContext(); | 1914 | destroyContext(); |
1955 | 1915 | ||
1956 | OSMessageBox(text, caption, type); | 1916 | OSMessageBox(text, caption, type); |
1957 | } | 1917 | } |
1958 | 1918 | ||
1919 | pascal Boolean LLWindowMacOSX::staticMoveEventComparator( EventRef event, void* data) | ||
1920 | { | ||
1921 | UInt32 evtClass = GetEventClass (event); | ||
1922 | UInt32 evtKind = GetEventKind (event); | ||
1923 | |||
1924 | if ((evtClass == kEventClassMouse) && ((evtKind == kEventMouseDragged) || (evtKind == kEventMouseMoved))) | ||
1925 | { | ||
1926 | return true; | ||
1927 | } | ||
1928 | |||
1929 | else | ||
1930 | { | ||
1931 | return false; | ||
1932 | } | ||
1933 | } | ||
1934 | |||
1935 | |||
1959 | pascal OSStatus LLWindowMacOSX::staticEventHandler(EventHandlerCallRef myHandler, EventRef event, void* userData) | 1936 | pascal OSStatus LLWindowMacOSX::staticEventHandler(EventHandlerCallRef myHandler, EventRef event, void* userData) |
1960 | { | 1937 | { |
1961 | LLWindowMacOSX *self = (LLWindowMacOSX*)userData; | 1938 | LLWindowMacOSX *self = (LLWindowMacOSX*)userData; |
@@ -3020,20 +2997,13 @@ void LLSplashScreenMacOSX::showImpl() | |||
3020 | #endif | 2997 | #endif |
3021 | } | 2998 | } |
3022 | 2999 | ||
3023 | void LLSplashScreenMacOSX::updateImpl(const char* mesg) | 3000 | void LLSplashScreenMacOSX::updateImpl(const std::string& mesg) |
3024 | { | 3001 | { |
3025 | if(mWindow != NULL) | 3002 | if(mWindow != NULL) |
3026 | { | 3003 | { |
3027 | CFStringRef string = NULL; | 3004 | CFStringRef string = NULL; |
3028 | 3005 | ||
3029 | if(mesg != NULL) | 3006 | string = CFStringCreateWithCString(NULL, mesg.c_str(), kCFStringEncodingUTF8); |
3030 | { | ||
3031 | string = CFStringCreateWithCString(NULL, mesg, kCFStringEncodingUTF8); | ||
3032 | } | ||
3033 | else | ||
3034 | { | ||
3035 | string = CFStringCreateWithCString(NULL, "", kCFStringEncodingUTF8); | ||
3036 | } | ||
3037 | 3007 | ||
3038 | if(string != NULL) | 3008 | if(string != NULL) |
3039 | { | 3009 | { |
@@ -3068,7 +3038,7 @@ void LLSplashScreenMacOSX::hideImpl() | |||
3068 | 3038 | ||
3069 | 3039 | ||
3070 | 3040 | ||
3071 | S32 OSMessageBoxMacOSX(const char* text, const char* caption, U32 type) | 3041 | S32 OSMessageBoxMacOSX(const std::string& text, const std::string& caption, U32 type) |
3072 | { | 3042 | { |
3073 | S32 result = OSBTN_CANCEL; | 3043 | S32 result = OSBTN_CANCEL; |
3074 | SInt16 retval_mac = 1; | 3044 | SInt16 retval_mac = 1; |
@@ -3079,23 +3049,8 @@ S32 OSMessageBoxMacOSX(const char* text, const char* caption, U32 type) | |||
3079 | AlertType alertType = kAlertCautionAlert; | 3049 | AlertType alertType = kAlertCautionAlert; |
3080 | OSStatus err; | 3050 | OSStatus err; |
3081 | 3051 | ||
3082 | if(text != NULL) | 3052 | explanationString = CFStringCreateWithCString(NULL, text.c_str(), kCFStringEncodingUTF8); |
3083 | { | 3053 | errorString = CFStringCreateWithCString(NULL, caption.c_str(), kCFStringEncodingUTF8); |
3084 | explanationString = CFStringCreateWithCString(NULL, text, kCFStringEncodingUTF8); | ||
3085 | } | ||
3086 | else | ||
3087 | { | ||
3088 | explanationString = CFStringCreateWithCString(NULL, "", kCFStringEncodingUTF8); | ||
3089 | } | ||
3090 | |||
3091 | if(caption != NULL) | ||
3092 | { | ||
3093 | errorString = CFStringCreateWithCString(NULL, caption, kCFStringEncodingUTF8); | ||
3094 | } | ||
3095 | else | ||
3096 | { | ||
3097 | errorString = CFStringCreateWithCString(NULL, "", kCFStringEncodingUTF8); | ||
3098 | } | ||
3099 | 3054 | ||
3100 | params.version = kStdCFStringAlertVersionOne; | 3055 | params.version = kStdCFStringAlertVersionOne; |
3101 | params.movable = false; | 3056 | params.movable = false; |
@@ -3179,15 +3134,13 @@ S32 OSMessageBoxMacOSX(const char* text, const char* caption, U32 type) | |||
3179 | 3134 | ||
3180 | // Open a URL with the user's default web browser. | 3135 | // Open a URL with the user's default web browser. |
3181 | // Must begin with protocol identifier. | 3136 | // Must begin with protocol identifier. |
3182 | void spawn_web_browser(const char* escaped_url) | 3137 | void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url) |
3183 | { | 3138 | { |
3184 | bool found = false; | 3139 | bool found = false; |
3185 | S32 i; | 3140 | S32 i; |
3186 | for (i = 0; i < gURLProtocolWhitelistCount; i++) | 3141 | for (i = 0; i < gURLProtocolWhitelistCount; i++) |
3187 | { | 3142 | { |
3188 | S32 len = strlen(gURLProtocolWhitelist[i]); /* Flawfinder: ignore */ | 3143 | if (escaped_url.find(gURLProtocolWhitelist[i]) != std::string::npos) |
3189 | if (!strncmp(escaped_url, gURLProtocolWhitelist[i], len) | ||
3190 | && escaped_url[len] == ':') | ||
3191 | { | 3144 | { |
3192 | found = true; | 3145 | found = true; |
3193 | break; | 3146 | break; |
@@ -3196,7 +3149,7 @@ void spawn_web_browser(const char* escaped_url) | |||
3196 | 3149 | ||
3197 | if (!found) | 3150 | if (!found) |
3198 | { | 3151 | { |
3199 | llwarns << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << llendl; | 3152 | llwarns << "spawn_web_browser called for url with protocol not on whitelist: " << escaped_url << llendl; |
3200 | return; | 3153 | return; |
3201 | } | 3154 | } |
3202 | 3155 | ||
@@ -3205,7 +3158,7 @@ void spawn_web_browser(const char* escaped_url) | |||
3205 | 3158 | ||
3206 | llinfos << "Opening URL " << escaped_url << llendl; | 3159 | llinfos << "Opening URL " << escaped_url << llendl; |
3207 | 3160 | ||
3208 | CFStringRef stringRef = CFStringCreateWithCString(NULL, escaped_url, kCFStringEncodingUTF8); | 3161 | CFStringRef stringRef = CFStringCreateWithCString(NULL, escaped_url.c_str(), kCFStringEncodingUTF8); |
3209 | if (stringRef) | 3162 | if (stringRef) |
3210 | { | 3163 | { |
3211 | // This will succeed if the string is a full URL, including the http:// | 3164 | // This will succeed if the string is a full URL, including the http:// |
@@ -3268,25 +3221,34 @@ BOOL LLWindowMacOSX::dialog_color_picker ( F32 *r, F32 *g, F32 *b) | |||
3268 | return (retval); | 3221 | return (retval); |
3269 | } | 3222 | } |
3270 | 3223 | ||
3271 | static WindowRef dummywindowref = NULL; | ||
3272 | 3224 | ||
3273 | void *LLWindowMacOSX::getPlatformWindow() | 3225 | void *LLWindowMacOSX::getPlatformWindow() |
3274 | { | 3226 | { |
3275 | if(mWindow != NULL) | 3227 | // NOTE: this will be NULL in fullscreen mode. Plan accordingly. |
3276 | return (void*)mWindow; | 3228 | return (void*)mWindow; |
3229 | } | ||
3230 | |||
3231 | void *LLWindowMacOSX::getMediaWindow() | ||
3232 | { | ||
3233 | /* | ||
3234 | Mozilla needs to be initialized with a WindowRef to function properly. | ||
3235 | (There's no good reason for this, since it shouldn't be interacting with our window in any way, but that's another issue.) | ||
3236 | If we're in windowed mode, we _could_ hand it our actual window pointer, but a subsequent switch to fullscreen will destroy that window, | ||
3237 | which trips up Mozilla. | ||
3238 | Instead of using our actual window, we create an invisible window which will persist for the lifetime of the application and pass that to Mozilla. | ||
3239 | This satisfies its deep-seated need to latch onto a WindowRef and solves the issue with switching between fullscreen and windowed modes. | ||
3277 | 3240 | ||
3278 | // If we're in fullscreen mode, there's no window pointer available. | 3241 | Note that we will never destroy this window (by design!), but since only one will ever be created per run of the application, that's okay. |
3279 | // Since Mozilla needs one to function, create a dummy window here. | 3242 | */ |
3280 | // Note that we will never destroy it, but since only one will be created per run of the application, that's okay. | ||
3281 | 3243 | ||
3282 | if(dummywindowref == NULL) | 3244 | if(sMediaWindow == NULL) |
3283 | { | 3245 | { |
3284 | Rect window_rect = {100, 100, 200, 200}; | 3246 | Rect window_rect = {100, 100, 200, 200}; |
3285 | 3247 | ||
3286 | dummywindowref = NewCWindow( | 3248 | sMediaWindow = NewCWindow( |
3287 | NULL, | 3249 | NULL, |
3288 | &window_rect, | 3250 | &window_rect, |
3289 | "\p", | 3251 | (ConstStr255Param) "\p", |
3290 | false, // Create the window invisible. | 3252 | false, // Create the window invisible. |
3291 | zoomDocProc, // Window with a grow box and a zoom box | 3253 | zoomDocProc, // Window with a grow box and a zoom box |
3292 | kLastWindowOfClass, // create it behind other windows | 3254 | kLastWindowOfClass, // create it behind other windows |
@@ -3294,7 +3256,7 @@ void *LLWindowMacOSX::getPlatformWindow() | |||
3294 | 0); | 3256 | 0); |
3295 | } | 3257 | } |
3296 | 3258 | ||
3297 | return (void*)dummywindowref; | 3259 | return (void*)sMediaWindow; |
3298 | } | 3260 | } |
3299 | 3261 | ||
3300 | void LLWindowMacOSX::stopDockTileBounce() | 3262 | void LLWindowMacOSX::stopDockTileBounce() |
@@ -3402,5 +3364,3 @@ std::string LLWindowMacOSX::getFontListSans() | |||
3402 | // The third filename is in UTF8, but it shows up in the font menu as "STHeiti Light" | 3364 | // The third filename is in UTF8, but it shows up in the font menu as "STHeiti Light" |
3403 | return "\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 Pro W3.otf;\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 ProN W3.otf;AppleGothic.dfont;AppleGothic.ttf;\xe5\x8d\x8e\xe6\x96\x87\xe7\xbb\x86\xe9\xbb\x91.ttf"; | 3365 | return "\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 Pro W3.otf;\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 ProN W3.otf;AppleGothic.dfont;AppleGothic.ttf;\xe5\x8d\x8e\xe6\x96\x87\xe7\xbb\x86\xe9\xbb\x91.ttf"; |
3404 | } | 3366 | } |
3405 | |||
3406 | #endif // LL_DARWIN | ||
diff --git a/linden/indra/llwindow/llwindowmacosx.h b/linden/indra/llwindow/llwindowmacosx.h index d8a0788..bc0b7d4 100644 --- a/linden/indra/llwindow/llwindowmacosx.h +++ b/linden/indra/llwindow/llwindowmacosx.h | |||
@@ -86,12 +86,6 @@ public: | |||
86 | /*virtual*/ void delayInputProcessing() {}; | 86 | /*virtual*/ void delayInputProcessing() {}; |
87 | /*virtual*/ void swapBuffers(); | 87 | /*virtual*/ void swapBuffers(); |
88 | 88 | ||
89 | /*virtual*/ LLString getTempFileName(); | ||
90 | /*virtual*/ void deleteFile( const char* file_name ); | ||
91 | /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ); | ||
92 | /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL); | ||
93 | |||
94 | |||
95 | // handy coordinate space conversion routines | 89 | // handy coordinate space conversion routines |
96 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); | 90 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); |
97 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to); | 91 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to); |
@@ -111,16 +105,18 @@ public: | |||
111 | /*virtual*/ BOOL dialog_color_picker(F32 *r, F32 *g, F32 *b); | 105 | /*virtual*/ BOOL dialog_color_picker(F32 *r, F32 *g, F32 *b); |
112 | 106 | ||
113 | /*virtual*/ void *getPlatformWindow(); | 107 | /*virtual*/ void *getPlatformWindow(); |
108 | /*virtual*/ void *getMediaWindow(); | ||
114 | /*virtual*/ void bringToFront() {}; | 109 | /*virtual*/ void bringToFront() {}; |
115 | 110 | ||
116 | /*virtual*/ void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b); | 111 | /*virtual*/ void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b); |
117 | /*virtual*/ void interruptLanguageTextInput(); | 112 | /*virtual*/ void interruptLanguageTextInput(); |
113 | /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); | ||
118 | 114 | ||
119 | static std::string getFontListSans(); | 115 | static std::string getFontListSans(); |
120 | 116 | ||
121 | protected: | 117 | protected: |
122 | LLWindowMacOSX( | 118 | LLWindowMacOSX( |
123 | char *title, char *name, int x, int y, int width, int height, U32 flags, | 119 | const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, |
124 | BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, | 120 | BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, |
125 | BOOL ignore_pixel_depth, | 121 | BOOL ignore_pixel_depth, |
126 | U32 fsaa_samples); | 122 | U32 fsaa_samples); |
@@ -154,8 +150,9 @@ protected: | |||
154 | // create or re-create the GL context/window. Called from the constructor and switchContext(). | 150 | // create or re-create the GL context/window. Called from the constructor and switchContext(). |
155 | BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync); | 151 | BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync); |
156 | void destroyContext(); | 152 | void destroyContext(); |
157 | void setupFailure(const char* text, const char* caption, U32 type); | 153 | void setupFailure(const std::string& text, const std::string& caption, U32 type); |
158 | static pascal OSStatus staticEventHandler (EventHandlerCallRef myHandler, EventRef event, void* userData); | 154 | static pascal OSStatus staticEventHandler (EventHandlerCallRef myHandler, EventRef event, void* userData); |
155 | static pascal Boolean staticMoveEventComparator( EventRef event, void* data); | ||
159 | OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event); | 156 | OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event); |
160 | void adjustCursorDecouple(bool warpingMouse = false); | 157 | void adjustCursorDecouple(bool warpingMouse = false); |
161 | void fixWindowSize(void); | 158 | void fixWindowSize(void); |
@@ -174,6 +171,8 @@ protected: | |||
174 | EventHandlerUPP mEventHandlerUPP; | 171 | EventHandlerUPP mEventHandlerUPP; |
175 | EventHandlerRef mGlobalHandlerRef; | 172 | EventHandlerRef mGlobalHandlerRef; |
176 | EventHandlerRef mWindowHandlerRef; | 173 | EventHandlerRef mWindowHandlerRef; |
174 | EventComparatorUPP mMoveEventCampartorUPP; | ||
175 | |||
177 | Rect mOldMouseClip; // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse() | 176 | Rect mOldMouseClip; // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse() |
178 | Str255 mWindowTitle; | 177 | Str255 mWindowTitle; |
179 | double mOriginalAspectRatio; | 178 | double mOriginalAspectRatio; |
@@ -203,7 +202,11 @@ protected: | |||
203 | LangCode mTSMLangCode; | 202 | LangCode mTSMLangCode; |
204 | LLPreeditor* mPreeditor; | 203 | LLPreeditor* mPreeditor; |
205 | 204 | ||
205 | static BOOL sUseMultGL; | ||
206 | |||
206 | friend class LLWindowManager; | 207 | friend class LLWindowManager; |
208 | static WindowRef sMediaWindow; | ||
209 | |||
207 | }; | 210 | }; |
208 | 211 | ||
209 | 212 | ||
@@ -214,14 +217,14 @@ public: | |||
214 | virtual ~LLSplashScreenMacOSX(); | 217 | virtual ~LLSplashScreenMacOSX(); |
215 | 218 | ||
216 | /*virtual*/ void showImpl(); | 219 | /*virtual*/ void showImpl(); |
217 | /*virtual*/ void updateImpl(const char* mesg); | 220 | /*virtual*/ void updateImpl(const std::string& mesg); |
218 | /*virtual*/ void hideImpl(); | 221 | /*virtual*/ void hideImpl(); |
219 | 222 | ||
220 | private: | 223 | private: |
221 | WindowRef mWindow; | 224 | WindowRef mWindow; |
222 | }; | 225 | }; |
223 | 226 | ||
224 | S32 OSMessageBoxMacOSX(const char* text, const char* caption, U32 type); | 227 | S32 OSMessageBoxMacOSX(const std::string& text, const std::string& caption, U32 type); |
225 | 228 | ||
226 | void load_url_external(const char* url); | 229 | void load_url_external(const char* url); |
227 | 230 | ||
diff --git a/linden/indra/llwindow/llwindowmesaheadless.cpp b/linden/indra/llwindow/llwindowmesaheadless.cpp index 01b00af..0ffd4e3 100644 --- a/linden/indra/llwindow/llwindowmesaheadless.cpp +++ b/linden/indra/llwindow/llwindowmesaheadless.cpp | |||
@@ -29,14 +29,11 @@ | |||
29 | * $/LicenseInfo$ | 29 | * $/LicenseInfo$ |
30 | */ | 30 | */ |
31 | 31 | ||
32 | #if LL_MESA_HEADLESS | ||
33 | |||
34 | #include "linden_common.h" | 32 | #include "linden_common.h" |
35 | #include "indra_constants.h" | 33 | #include "indra_constants.h" |
36 | 34 | ||
37 | #include "llwindowmesaheadless.h" | 35 | #include "llwindowmesaheadless.h" |
38 | #include "llgl.h" | 36 | #include "llgl.h" |
39 | #include "llglheaders.h" | ||
40 | 37 | ||
41 | #define MESA_CHANNEL_TYPE GL_UNSIGNED_SHORT | 38 | #define MESA_CHANNEL_TYPE GL_UNSIGNED_SHORT |
42 | #define MESA_CHANNEL_SIZE 2 | 39 | #define MESA_CHANNEL_SIZE 2 |
@@ -46,7 +43,7 @@ U16 *gMesaBuffer = NULL; | |||
46 | // | 43 | // |
47 | // LLWindowMesaHeadless | 44 | // LLWindowMesaHeadless |
48 | // | 45 | // |
49 | LLWindowMesaHeadless::LLWindowMesaHeadless(char *title, char *name, S32 x, S32 y, S32 width, S32 height, | 46 | LLWindowMesaHeadless::LLWindowMesaHeadless(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, |
50 | U32 flags, BOOL fullscreen, BOOL clearBg, | 47 | U32 flags, BOOL fullscreen, BOOL clearBg, |
51 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth) | 48 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth) |
52 | : LLWindow(fullscreen, flags) | 49 | : LLWindow(fullscreen, flags) |
@@ -83,5 +80,3 @@ void LLWindowMesaHeadless::swapBuffers() | |||
83 | { | 80 | { |
84 | glFinish(); | 81 | glFinish(); |
85 | } | 82 | } |
86 | |||
87 | #endif | ||
diff --git a/linden/indra/llwindow/llwindowmesaheadless.h b/linden/indra/llwindow/llwindowmesaheadless.h index fb32e38..86d8372 100644 --- a/linden/indra/llwindow/llwindowmesaheadless.h +++ b/linden/indra/llwindow/llwindowmesaheadless.h | |||
@@ -81,12 +81,6 @@ public: | |||
81 | /*virtual*/ void delayInputProcessing() {}; | 81 | /*virtual*/ void delayInputProcessing() {}; |
82 | /*virtual*/ void swapBuffers(); | 82 | /*virtual*/ void swapBuffers(); |
83 | 83 | ||
84 | /*virtual*/ LLString getTempFileName() {return LLString(""); }; | ||
85 | /*virtual*/ void deleteFile( const char* file_name ) {}; | ||
86 | /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ) {return 0; }; | ||
87 | /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL) { return FALSE; }; | ||
88 | |||
89 | |||
90 | // handy coordinate space conversion routines | 84 | // handy coordinate space conversion routines |
91 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to) { return FALSE; }; | 85 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to) { return FALSE; }; |
92 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to) { return FALSE; }; | 86 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to) { return FALSE; }; |
@@ -103,7 +97,7 @@ public: | |||
103 | /*virtual*/ void *getPlatformWindow() { return 0; }; | 97 | /*virtual*/ void *getPlatformWindow() { return 0; }; |
104 | /*virtual*/ void bringToFront() {}; | 98 | /*virtual*/ void bringToFront() {}; |
105 | 99 | ||
106 | LLWindowMesaHeadless(char *title, char *name, S32 x, S32 y, S32 width, S32 height, | 100 | LLWindowMesaHeadless(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, |
107 | U32 flags, BOOL fullscreen, BOOL clearBg, | 101 | U32 flags, BOOL fullscreen, BOOL clearBg, |
108 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth); | 102 | BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth); |
109 | ~LLWindowMesaHeadless(); | 103 | ~LLWindowMesaHeadless(); |
@@ -120,7 +114,7 @@ public: | |||
120 | virtual ~LLSplashScreenMesaHeadless() {}; | 114 | virtual ~LLSplashScreenMesaHeadless() {}; |
121 | 115 | ||
122 | /*virtual*/ void showImpl() {}; | 116 | /*virtual*/ void showImpl() {}; |
123 | /*virtual*/ void updateImpl(const char* mesg) {}; | 117 | /*virtual*/ void updateImpl(const std::string& mesg) {}; |
124 | /*virtual*/ void hideImpl() {}; | 118 | /*virtual*/ void hideImpl() {}; |
125 | 119 | ||
126 | }; | 120 | }; |
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp index 0d1d622..e5d15c4 100644 --- a/linden/indra/llwindow/llwindowsdl.cpp +++ b/linden/indra/llwindow/llwindowsdl.cpp | |||
@@ -41,8 +41,6 @@ | |||
41 | #include "lldir.h" | 41 | #include "lldir.h" |
42 | #include "llfindlocale.h" | 42 | #include "llfindlocale.h" |
43 | 43 | ||
44 | #include "llglheaders.h" | ||
45 | |||
46 | #include "indra_constants.h" | 44 | #include "indra_constants.h" |
47 | 45 | ||
48 | #if LL_GTK | 46 | #if LL_GTK |
@@ -66,7 +64,10 @@ extern "C" { | |||
66 | 64 | ||
67 | extern BOOL gDebugWindowProc; | 65 | extern BOOL gDebugWindowProc; |
68 | 66 | ||
69 | const S32 MAX_NUM_RESOLUTIONS = 32; | 67 | const S32 MAX_NUM_RESOLUTIONS = 200; |
68 | |||
69 | // static variable for ATI mouse cursor crash work-around: | ||
70 | static bool ATIbug = false; | ||
70 | 71 | ||
71 | // | 72 | // |
72 | // LLWindowSDL | 73 | // LLWindowSDL |
@@ -183,43 +184,7 @@ Display* get_SDL_Display(void) | |||
183 | #endif // LL_X11 | 184 | #endif // LL_X11 |
184 | 185 | ||
185 | 186 | ||
186 | BOOL check_for_card(const char* RENDERER, const char* bad_card) | 187 | LLWindowSDL::LLWindowSDL(const std::string& title, S32 x, S32 y, S32 width, |
187 | { | ||
188 | if (!strncasecmp(RENDERER, bad_card, strlen(bad_card))) | ||
189 | { | ||
190 | char buffer[1024]; /* Flawfinder: ignore */ | ||
191 | snprintf(buffer, sizeof(buffer), | ||
192 | "Your video card appears to be a %s, which Second Life does not support.\n" | ||
193 | "\n" | ||
194 | "Second Life requires a video card with 32 Mb of memory or more, as well as\n" | ||
195 | "multitexture support. We explicitly support nVidia GeForce 2 or better, \n" | ||
196 | "and ATI Radeon 8500 or better.\n" | ||
197 | "\n" | ||
198 | "If you own a supported card and continue to receive this message, try \n" | ||
199 | "updating to the latest video card drivers. Otherwise look in the\n" | ||
200 | "secondlife.com support section or e-mail technical support\n" | ||
201 | "\n" | ||
202 | "You can try to run Second Life, but it will probably crash or run\n" | ||
203 | "very slowly. Try anyway?", | ||
204 | bad_card); | ||
205 | S32 button = OSMessageBox(buffer, "Unsupported video card", OSMB_YESNO); | ||
206 | if (OSBTN_YES == button) | ||
207 | { | ||
208 | return FALSE; | ||
209 | } | ||
210 | else | ||
211 | { | ||
212 | return TRUE; | ||
213 | } | ||
214 | } | ||
215 | |||
216 | return FALSE; | ||
217 | } | ||
218 | |||
219 | |||
220 | |||
221 | |||
222 | LLWindowSDL::LLWindowSDL(char *title, S32 x, S32 y, S32 width, | ||
223 | S32 height, U32 flags, | 188 | S32 height, U32 flags, |
224 | BOOL fullscreen, BOOL clearBg, | 189 | BOOL fullscreen, BOOL clearBg, |
225 | BOOL disable_vsync, BOOL use_gl, | 190 | BOOL disable_vsync, BOOL use_gl, |
@@ -260,18 +225,11 @@ LLWindowSDL::LLWindowSDL(char *title, S32 x, S32 y, S32 width, | |||
260 | // Get the original aspect ratio of the main device. | 225 | // Get the original aspect ratio of the main device. |
261 | mOriginalAspectRatio = 1024.0 / 768.0; // !!! *FIX: ? //(double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay); | 226 | mOriginalAspectRatio = 1024.0 / 768.0; // !!! *FIX: ? //(double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay); |
262 | 227 | ||
263 | if (!title) | 228 | if (title.empty()) |
264 | title = "SDL Window"; // *FIX: (???) | 229 | mWindowTitle = "SDL Window"; // *FIX: (???) |
265 | 230 | else | |
266 | // Stash the window title | 231 | mWindowTitle = title; |
267 | mWindowTitle = new char[strlen(title) + 1]; /* Flawfinder: ignore */ | ||
268 | if(mWindowTitle == NULL) | ||
269 | { | ||
270 | llwarns << "Memory allocation failure" << llendl; | ||
271 | return; | ||
272 | } | ||
273 | 232 | ||
274 | strcpy(mWindowTitle, title); /* Flawfinder: ignore */ | ||
275 | // Create the GL context and set it up for windowed or fullscreen, as appropriate. | 233 | // Create the GL context and set it up for windowed or fullscreen, as appropriate. |
276 | if(createContext(x, y, width, height, 32, fullscreen, disable_vsync)) | 234 | if(createContext(x, y, width, height, 32, fullscreen, disable_vsync)) |
277 | { | 235 | { |
@@ -485,7 +443,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B | |||
485 | } | 443 | } |
486 | 444 | ||
487 | SDL_EnableUNICODE(1); | 445 | SDL_EnableUNICODE(1); |
488 | SDL_WM_SetCaption(mWindowTitle, mWindowTitle); | 446 | SDL_WM_SetCaption(mWindowTitle.c_str(), mWindowTitle.c_str()); |
489 | 447 | ||
490 | // Set the application icon. | 448 | // Set the application icon. |
491 | SDL_Surface *bmpsurface; | 449 | SDL_Surface *bmpsurface; |
@@ -635,8 +593,7 @@ BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, B | |||
635 | mFullscreenBits = -1; | 593 | mFullscreenBits = -1; |
636 | mFullscreenRefresh = -1; | 594 | mFullscreenRefresh = -1; |
637 | 595 | ||
638 | char error[256]; /* Flawfinder: ignore */ | 596 | std::string error = llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); |
639 | snprintf(error, sizeof(error), "Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); | ||
640 | OSMessageBox(error, "Error", OSMB_OK); | 597 | OSMessageBox(error, "Error", OSMB_OK); |
641 | } | 598 | } |
642 | } | 599 | } |
@@ -826,8 +783,6 @@ LLWindowSDL::~LLWindowSDL() | |||
826 | delete []mSupportedResolutions; | 783 | delete []mSupportedResolutions; |
827 | } | 784 | } |
828 | 785 | ||
829 | delete[] mWindowTitle; | ||
830 | |||
831 | gWindowImplementation = NULL; | 786 | gWindowImplementation = NULL; |
832 | } | 787 | } |
833 | 788 | ||
@@ -1208,11 +1163,6 @@ void LLWindowSDL::afterDialog() | |||
1208 | } | 1163 | } |
1209 | 1164 | ||
1210 | 1165 | ||
1211 | S32 LLWindowSDL::stat(const char* file_name, struct stat* stat_info) | ||
1212 | { | ||
1213 | return ::stat( file_name, stat_info ); | ||
1214 | } | ||
1215 | |||
1216 | #if LL_X11 | 1166 | #if LL_X11 |
1217 | // set/reset the XWMHints flag for 'urgency' that usually makes the icon flash | 1167 | // set/reset the XWMHints flag for 'urgency' that usually makes the icon flash |
1218 | void LLWindowSDL::x11_set_urgent(BOOL urgent) | 1168 | void LLWindowSDL::x11_set_urgent(BOOL urgent) |
@@ -1777,15 +1727,6 @@ BOOL LLWindowSDL::copyTextToClipboard(const LLWString &s) | |||
1777 | } | 1727 | } |
1778 | #endif // LL_X11 | 1728 | #endif // LL_X11 |
1779 | 1729 | ||
1780 | BOOL LLWindowSDL::sendEmail(const char* address, const char* subject, const char* body_text, | ||
1781 | const char* attachment, const char* attachment_displayed_name ) | ||
1782 | { | ||
1783 | // MBW -- XXX -- Um... yeah. I'll get to this later. | ||
1784 | |||
1785 | return FALSE; | ||
1786 | } | ||
1787 | |||
1788 | |||
1789 | LLWindow::LLWindowResolution* LLWindowSDL::getSupportedResolutions(S32 &num_resolutions) | 1730 | LLWindow::LLWindowResolution* LLWindowSDL::getSupportedResolutions(S32 &num_resolutions) |
1790 | { | 1731 | { |
1791 | if (!mSupportedResolutions) | 1732 | if (!mSupportedResolutions) |
@@ -1797,7 +1738,7 @@ LLWindow::LLWindowResolution* LLWindowSDL::getSupportedResolutions(S32 &num_reso | |||
1797 | if ( (modes != NULL) && (modes != ((SDL_Rect **) -1)) ) | 1738 | if ( (modes != NULL) && (modes != ((SDL_Rect **) -1)) ) |
1798 | { | 1739 | { |
1799 | int count = 0; | 1740 | int count = 0; |
1800 | while (*modes) // they're sorted biggest to smallest, so find end... | 1741 | while (*modes && count<MAX_NUM_RESOLUTIONS) // they're sorted biggest to smallest, so find end... |
1801 | { | 1742 | { |
1802 | modes++; | 1743 | modes++; |
1803 | count++; | 1744 | count++; |
@@ -1890,7 +1831,7 @@ BOOL LLWindowSDL::convertCoords(LLCoordGL from, LLCoordScreen *to) | |||
1890 | 1831 | ||
1891 | 1832 | ||
1892 | 1833 | ||
1893 | void LLWindowSDL::setupFailure(const char* text, const char* caption, U32 type) | 1834 | void LLWindowSDL::setupFailure(const std::string& text, const std::string& caption, U32 type) |
1894 | { | 1835 | { |
1895 | destroyContext(); | 1836 | destroyContext(); |
1896 | 1837 | ||
@@ -2337,6 +2278,12 @@ static SDL_Cursor *makeSDLCursorFromBMP(const char *filename, int hotx, int hoty | |||
2337 | 2278 | ||
2338 | void LLWindowSDL::setCursor(ECursorType cursor) | 2279 | void LLWindowSDL::setCursor(ECursorType cursor) |
2339 | { | 2280 | { |
2281 | if (ATIbug) { | ||
2282 | // cursor-updating is very flaky when this bug is | ||
2283 | // present; do nothing. | ||
2284 | return; | ||
2285 | } | ||
2286 | |||
2340 | if (mCurrentCursor != cursor) | 2287 | if (mCurrentCursor != cursor) |
2341 | { | 2288 | { |
2342 | if (cursor < UI_CURSOR_COUNT) | 2289 | if (cursor < UI_CURSOR_COUNT) |
@@ -2409,6 +2356,11 @@ void LLWindowSDL::initCursors() | |||
2409 | mSDLCursors[UI_CURSOR_TOOLPAUSE] = makeSDLCursorFromBMP("toolpause.BMP",0,0); | 2356 | mSDLCursors[UI_CURSOR_TOOLPAUSE] = makeSDLCursorFromBMP("toolpause.BMP",0,0); |
2410 | mSDLCursors[UI_CURSOR_TOOLMEDIAOPEN] = makeSDLCursorFromBMP("toolmediaopen.BMP",0,0); | 2357 | mSDLCursors[UI_CURSOR_TOOLMEDIAOPEN] = makeSDLCursorFromBMP("toolmediaopen.BMP",0,0); |
2411 | mSDLCursors[UI_CURSOR_PIPETTE] = makeSDLCursorFromBMP("lltoolpipette.BMP",2,28); | 2358 | mSDLCursors[UI_CURSOR_PIPETTE] = makeSDLCursorFromBMP("lltoolpipette.BMP",2,28); |
2359 | |||
2360 | if (getenv("LL_ATI_MOUSE_CURSOR_BUG") != NULL) { | ||
2361 | llinfos << "Disabling cursor updating due to LL_ATI_MOUSE_CURSOR_BUG" << llendl; | ||
2362 | ATIbug = true; | ||
2363 | } | ||
2412 | } | 2364 | } |
2413 | 2365 | ||
2414 | void LLWindowSDL::quitCursors() | 2366 | void LLWindowSDL::quitCursors() |
@@ -2520,7 +2472,7 @@ void LLSplashScreenSDL::showImpl() | |||
2520 | { | 2472 | { |
2521 | } | 2473 | } |
2522 | 2474 | ||
2523 | void LLSplashScreenSDL::updateImpl(const char* mesg) | 2475 | void LLSplashScreenSDL::updateImpl(const std::string& mesg) |
2524 | { | 2476 | { |
2525 | } | 2477 | } |
2526 | 2478 | ||
@@ -2541,7 +2493,7 @@ static void response_callback (GtkDialog *dialog, | |||
2541 | gtk_main_quit(); | 2493 | gtk_main_quit(); |
2542 | } | 2494 | } |
2543 | 2495 | ||
2544 | S32 OSMessageBoxSDL(const char* text, const char* caption, U32 type) | 2496 | S32 OSMessageBoxSDL(const std::string& text, const std::string& caption, U32 type) |
2545 | { | 2497 | { |
2546 | S32 rtn = OSBTN_CANCEL; | 2498 | S32 rtn = OSBTN_CANCEL; |
2547 | 2499 | ||
@@ -2578,9 +2530,7 @@ S32 OSMessageBoxSDL(const char* text, const char* caption, U32 type) | |||
2578 | buttons = GTK_BUTTONS_YES_NO; | 2530 | buttons = GTK_BUTTONS_YES_NO; |
2579 | break; | 2531 | break; |
2580 | } | 2532 | } |
2581 | win = gtk_message_dialog_new(NULL, | 2533 | win = gtk_message_dialog_new(NULL,flags, messagetype, buttons, text.c_str()); |
2582 | flags, messagetype, buttons, | ||
2583 | text); | ||
2584 | 2534 | ||
2585 | # if LL_X11 | 2535 | # if LL_X11 |
2586 | // Make GTK tell the window manager to associate this | 2536 | // Make GTK tell the window manager to associate this |
@@ -2602,8 +2552,8 @@ S32 OSMessageBoxSDL(const char* text, const char* caption, U32 type) | |||
2602 | gtk_window_set_type_hint(GTK_WINDOW(win), | 2552 | gtk_window_set_type_hint(GTK_WINDOW(win), |
2603 | GDK_WINDOW_TYPE_HINT_DIALOG); | 2553 | GDK_WINDOW_TYPE_HINT_DIALOG); |
2604 | 2554 | ||
2605 | if (caption) | 2555 | if (!caption.empty()) |
2606 | gtk_window_set_title(GTK_WINDOW(win), caption); | 2556 | gtk_window_set_title(GTK_WINDOW(win), caption.c_str()); |
2607 | 2557 | ||
2608 | gint response = GTK_RESPONSE_NONE; | 2558 | gint response = GTK_RESPONSE_NONE; |
2609 | g_signal_connect (win, | 2559 | g_signal_connect (win, |
@@ -2727,7 +2677,7 @@ BOOL LLWindowSDL::dialog_color_picker ( F32 *r, F32 *g, F32 *b) | |||
2727 | return rtn; | 2677 | return rtn; |
2728 | } | 2678 | } |
2729 | #else | 2679 | #else |
2730 | S32 OSMessageBoxSDL(const char* text, const char* caption, U32 type) | 2680 | S32 OSMessageBoxSDL(const std::string& text, const std::string& caption, U32 type) |
2731 | { | 2681 | { |
2732 | llinfos << "MSGBOX: " << caption << ": " << text << llendl; | 2682 | llinfos << "MSGBOX: " << caption << ": " << text << llendl; |
2733 | return 0; | 2683 | return 0; |
@@ -2739,29 +2689,12 @@ BOOL LLWindowSDL::dialog_color_picker ( F32 *r, F32 *g, F32 *b) | |||
2739 | } | 2689 | } |
2740 | #endif // LL_GTK | 2690 | #endif // LL_GTK |
2741 | 2691 | ||
2742 | // Open a URL with the user's default web browser. | ||
2743 | // Must begin with protocol identifier. | ||
2744 | void spawn_web_browser(const char* escaped_url) | ||
2745 | { | ||
2746 | llinfos << "spawn_web_browser: " << escaped_url << llendl; | ||
2747 | |||
2748 | #if LL_LINUX || LL_SOLARIS | 2692 | #if LL_LINUX || LL_SOLARIS |
2749 | # if LL_X11 | 2693 | // extracted from spawnWebBrowser for clarity and to eliminate |
2750 | if (gWindowImplementation && gWindowImplementation->mSDL_Display) | 2694 | // compiler confusion regarding close(int fd) vs. LLWindow::close() |
2751 | { | 2695 | void exec_cmd(const std::string& cmd, const std::string& arg) |
2752 | maybe_lock_display(); | 2696 | { |
2753 | // Just in case - before forking. | 2697 | char* const argv[] = {(char*)cmd.c_str(), (char*)arg.c_str(), NULL}; |
2754 | XSync(gWindowImplementation->mSDL_Display, False); | ||
2755 | maybe_unlock_display(); | ||
2756 | } | ||
2757 | # endif // LL_X11 | ||
2758 | |||
2759 | std::string cmd; | ||
2760 | cmd = gDirUtilp->getAppRODataDir(); | ||
2761 | cmd += gDirUtilp->getDirDelimiter(); | ||
2762 | cmd += "launch_url.sh"; | ||
2763 | char* const argv[] = {(char*)cmd.c_str(), (char*)escaped_url, NULL}; | ||
2764 | |||
2765 | fflush(NULL); | 2698 | fflush(NULL); |
2766 | pid_t pid = fork(); | 2699 | pid_t pid = fork(); |
2767 | if (pid == 0) | 2700 | if (pid == 0) |
@@ -2786,6 +2719,32 @@ void spawn_web_browser(const char* escaped_url) | |||
2786 | llwarns << "fork failure." << llendl; | 2719 | llwarns << "fork failure." << llendl; |
2787 | } | 2720 | } |
2788 | } | 2721 | } |
2722 | } | ||
2723 | #endif | ||
2724 | |||
2725 | // Open a URL with the user's default web browser. | ||
2726 | // Must begin with protocol identifier. | ||
2727 | void LLWindowSDL::spawnWebBrowser(const std::string& escaped_url) | ||
2728 | { | ||
2729 | llinfos << "spawn_web_browser: " << escaped_url << llendl; | ||
2730 | |||
2731 | #if LL_LINUX || LL_SOLARIS | ||
2732 | # if LL_X11 | ||
2733 | if (mSDL_Display) | ||
2734 | { | ||
2735 | maybe_lock_display(); | ||
2736 | // Just in case - before forking. | ||
2737 | XSync(mSDL_Display, False); | ||
2738 | maybe_unlock_display(); | ||
2739 | } | ||
2740 | # endif // LL_X11 | ||
2741 | |||
2742 | std::string cmd, arg; | ||
2743 | cmd = gDirUtilp->getAppRODataDir().c_str(); | ||
2744 | cmd += gDirUtilp->getDirDelimiter().c_str(); | ||
2745 | cmd += "launch_url.sh"; | ||
2746 | arg = escaped_url; | ||
2747 | exec_cmd(cmd, arg); | ||
2789 | #endif // LL_LINUX || LL_SOLARIS | 2748 | #endif // LL_LINUX || LL_SOLARIS |
2790 | 2749 | ||
2791 | llinfos << "spawn_web_browser returning." << llendl; | 2750 | llinfos << "spawn_web_browser returning." << llendl; |
@@ -2871,14 +2830,18 @@ std::string LLWindowSDL::getFontListSans() | |||
2871 | { | 2830 | { |
2872 | if (success >= 2 && locale->lang) // confident! | 2831 | if (success >= 2 && locale->lang) // confident! |
2873 | { | 2832 | { |
2833 | LL_INFOS("AppInit") << "Language " << locale->lang << LL_ENDL; | ||
2834 | LL_INFOS("AppInit") << "Location " << locale->country << LL_ENDL; | ||
2835 | LL_INFOS("AppInit") << "Variant " << locale->variant << LL_ENDL; | ||
2836 | |||
2874 | llinfos << "Preferring fonts of language: " | 2837 | llinfos << "Preferring fonts of language: " |
2875 | << locale->lang | 2838 | << locale->lang |
2876 | << llendl; | 2839 | << llendl; |
2877 | sort_order = "lang=" + std::string(locale->lang) + ":" | 2840 | sort_order = "lang=" + std::string(locale->lang) + ":" |
2878 | + sort_order; | 2841 | + sort_order; |
2879 | } | 2842 | } |
2880 | FL_FreeLocale(&locale); | ||
2881 | } | 2843 | } |
2844 | FL_FreeLocale(&locale); | ||
2882 | 2845 | ||
2883 | if (!FcInit()) | 2846 | if (!FcInit()) |
2884 | { | 2847 | { |
diff --git a/linden/indra/llwindow/llwindowsdl.h b/linden/indra/llwindow/llwindowsdl.h index 5aed4e6..a395ccd 100644 --- a/linden/indra/llwindow/llwindowsdl.h +++ b/linden/indra/llwindow/llwindowsdl.h | |||
@@ -92,11 +92,6 @@ public: | |||
92 | /*virtual*/ void gatherInput(); | 92 | /*virtual*/ void gatherInput(); |
93 | /*virtual*/ void swapBuffers(); | 93 | /*virtual*/ void swapBuffers(); |
94 | 94 | ||
95 | /*virtual*/ LLString getTempFileName(); | ||
96 | /*virtual*/ void deleteFile( const char* file_name ); | ||
97 | /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ); | ||
98 | /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL); | ||
99 | |||
100 | /*virtual*/ void delayInputProcessing() { }; | 95 | /*virtual*/ void delayInputProcessing() { }; |
101 | 96 | ||
102 | // handy coordinate space conversion routines | 97 | // handy coordinate space conversion routines |
@@ -120,6 +115,8 @@ public: | |||
120 | /*virtual*/ void *getPlatformWindow(); | 115 | /*virtual*/ void *getPlatformWindow(); |
121 | /*virtual*/ void bringToFront(); | 116 | /*virtual*/ void bringToFront(); |
122 | 117 | ||
118 | /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); | ||
119 | |||
123 | static std::string getFontListSans(); | 120 | static std::string getFontListSans(); |
124 | 121 | ||
125 | // Not great that these are public, but they have to be accessible | 122 | // Not great that these are public, but they have to be accessible |
@@ -134,7 +131,7 @@ public: | |||
134 | 131 | ||
135 | protected: | 132 | protected: |
136 | LLWindowSDL( | 133 | LLWindowSDL( |
137 | char *title, int x, int y, int width, int height, U32 flags, | 134 | const std::string& title, int x, int y, int width, int height, U32 flags, |
138 | BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, | 135 | BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, |
139 | BOOL ignore_pixel_depth, U32 fsaa_samples); | 136 | BOOL ignore_pixel_depth, U32 fsaa_samples); |
140 | ~LLWindowSDL(); | 137 | ~LLWindowSDL(); |
@@ -164,7 +161,7 @@ protected: | |||
164 | // create or re-create the GL context/window. Called from the constructor and switchContext(). | 161 | // create or re-create the GL context/window. Called from the constructor and switchContext(). |
165 | BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync); | 162 | BOOL createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync); |
166 | void destroyContext(); | 163 | void destroyContext(); |
167 | void setupFailure(const char* text, const char* caption, U32 type); | 164 | void setupFailure(const std::string& text, const std::string& caption, U32 type); |
168 | void adjustCursorDecouple(bool warpingMouse = false); | 165 | void adjustCursorDecouple(bool warpingMouse = false); |
169 | void fixWindowSize(void); | 166 | void fixWindowSize(void); |
170 | U32 SDLCheckGrabbyKeys(SDLKey keysym, BOOL gain); | 167 | U32 SDLCheckGrabbyKeys(SDLKey keysym, BOOL gain); |
@@ -176,7 +173,7 @@ protected: | |||
176 | U32 mGrabbyKeyFlags; | 173 | U32 mGrabbyKeyFlags; |
177 | int mReallyCapturedCount; | 174 | int mReallyCapturedCount; |
178 | SDL_Surface * mWindow; | 175 | SDL_Surface * mWindow; |
179 | char * mWindowTitle; | 176 | std::string mWindowTitle; |
180 | double mOriginalAspectRatio; | 177 | double mOriginalAspectRatio; |
181 | BOOL mCursorDecoupled; | 178 | BOOL mCursorDecoupled; |
182 | S32 mCursorLastEventDeltaX; | 179 | S32 mCursorLastEventDeltaX; |
@@ -220,11 +217,11 @@ public: | |||
220 | virtual ~LLSplashScreenSDL(); | 217 | virtual ~LLSplashScreenSDL(); |
221 | 218 | ||
222 | /*virtual*/ void showImpl(); | 219 | /*virtual*/ void showImpl(); |
223 | /*virtual*/ void updateImpl(const char* mesg); | 220 | /*virtual*/ void updateImpl(const std::string& mesg); |
224 | /*virtual*/ void hideImpl(); | 221 | /*virtual*/ void hideImpl(); |
225 | }; | 222 | }; |
226 | 223 | ||
227 | S32 OSMessageBoxSDL(const char* text, const char* caption, U32 type); | 224 | S32 OSMessageBoxSDL(const std::string& text, const std::string& caption, U32 type); |
228 | 225 | ||
229 | void load_url_external(const char* url); | 226 | void load_url_external(const char* url); |
230 | 227 | ||
diff --git a/linden/indra/llwindow/llwindowwin32.cpp b/linden/indra/llwindow/llwindowwin32.cpp index 2001899..3729a71 100644 --- a/linden/indra/llwindow/llwindowwin32.cpp +++ b/linden/indra/llwindow/llwindowwin32.cpp | |||
@@ -54,8 +54,6 @@ | |||
54 | #include "llstring.h" | 54 | #include "llstring.h" |
55 | #include "lldir.h" | 55 | #include "lldir.h" |
56 | 56 | ||
57 | #include "llglheaders.h" | ||
58 | |||
59 | #include "indra_constants.h" | 57 | #include "indra_constants.h" |
60 | 58 | ||
61 | #include "llpreeditor.h" | 59 | #include "llpreeditor.h" |
@@ -82,7 +80,7 @@ LLW32MsgCallback gAsyncMsgCallback = NULL; | |||
82 | // LLWindowWin32 | 80 | // LLWindowWin32 |
83 | // | 81 | // |
84 | 82 | ||
85 | void show_window_creation_error(const char* title) | 83 | void show_window_creation_error(const std::string& title) |
86 | { | 84 | { |
87 | LL_WARNS("Window") << title << LL_ENDL; | 85 | LL_WARNS("Window") << title << LL_ENDL; |
88 | } | 86 | } |
@@ -359,7 +357,7 @@ LLWinImm::~LLWinImm() | |||
359 | } | 357 | } |
360 | 358 | ||
361 | 359 | ||
362 | LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | 360 | LLWindowWin32::LLWindowWin32(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, |
363 | S32 height, U32 flags, | 361 | S32 height, U32 flags, |
364 | BOOL fullscreen, BOOL clearBg, | 362 | BOOL fullscreen, BOOL clearBg, |
365 | BOOL disable_vsync, BOOL use_gl, | 363 | BOOL disable_vsync, BOOL use_gl, |
@@ -386,7 +384,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | |||
386 | RECT window_rect; | 384 | RECT window_rect; |
387 | 385 | ||
388 | // Set the window title | 386 | // Set the window title |
389 | if (!title) | 387 | if (title.empty()) |
390 | { | 388 | { |
391 | mWindowTitle = new WCHAR[50]; | 389 | mWindowTitle = new WCHAR[50]; |
392 | wsprintf(mWindowTitle, L"OpenGL Window"); | 390 | wsprintf(mWindowTitle, L"OpenGL Window"); |
@@ -394,12 +392,12 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | |||
394 | else | 392 | else |
395 | { | 393 | { |
396 | mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars. | 394 | mWindowTitle = new WCHAR[256]; // Assume title length < 255 chars. |
397 | mbstowcs(mWindowTitle, title, 255); | 395 | mbstowcs(mWindowTitle, title.c_str(), 255); |
398 | mWindowTitle[255] = 0; | 396 | mWindowTitle[255] = 0; |
399 | } | 397 | } |
400 | 398 | ||
401 | // Set the window class name | 399 | // Set the window class name |
402 | if (!name) | 400 | if (name.empty()) |
403 | { | 401 | { |
404 | mWindowClassName = new WCHAR[50]; | 402 | mWindowClassName = new WCHAR[50]; |
405 | wsprintf(mWindowClassName, L"OpenGL Window"); | 403 | wsprintf(mWindowClassName, L"OpenGL Window"); |
@@ -407,7 +405,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | |||
407 | else | 405 | else |
408 | { | 406 | { |
409 | mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars. | 407 | mWindowClassName = new WCHAR[256]; // Assume title length < 255 chars. |
410 | mbstowcs(mWindowClassName, name, 255); | 408 | mbstowcs(mWindowClassName, name.c_str(), 255); |
411 | mWindowClassName[255] = 0; | 409 | mWindowClassName[255] = 0; |
412 | } | 410 | } |
413 | 411 | ||
@@ -571,8 +569,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width, | |||
571 | mFullscreenBits = -1; | 569 | mFullscreenBits = -1; |
572 | mFullscreenRefresh = -1; | 570 | mFullscreenRefresh = -1; |
573 | 571 | ||
574 | char error[256]; /* Flawfinder: ignore */ | 572 | std::string error = llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); |
575 | snprintf(error, sizeof(error), "Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); /* Flawfinder: ignore */ | ||
576 | OSMessageBox(error, "Error", OSMB_OK); | 573 | OSMessageBox(error, "Error", OSMB_OK); |
577 | } | 574 | } |
578 | } | 575 | } |
@@ -1390,6 +1387,20 @@ BOOL LLWindowWin32::setCursorPosition(const LLCoordWindow position) | |||
1390 | return FALSE; | 1387 | return FALSE; |
1391 | } | 1388 | } |
1392 | 1389 | ||
1390 | // Inform the application of the new mouse position (needed for per-frame | ||
1391 | // hover/picking to function). | ||
1392 | LLCoordGL gl_pos; | ||
1393 | convertCoords(position, &gl_pos); | ||
1394 | mCallbacks->handleMouseMove(this, gl_pos, (MASK)0); | ||
1395 | |||
1396 | // DEV-18951 VWR-8524 Camera moves wildly when alt-clicking. | ||
1397 | // Because we have preemptively notified the application of the new | ||
1398 | // mouse position via handleMouseMove() above, we need to clear out | ||
1399 | // any stale mouse move events. RN/JC | ||
1400 | MSG msg; | ||
1401 | while (PeekMessage(&msg, NULL, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) | ||
1402 | { } | ||
1403 | |||
1393 | return SetCursorPos(screen_pos.mX, screen_pos.mY); | 1404 | return SetCursorPos(screen_pos.mX, screen_pos.mY); |
1394 | } | 1405 | } |
1395 | 1406 | ||
@@ -1564,7 +1575,9 @@ void LLWindowWin32::gatherInput() | |||
1564 | 1575 | ||
1565 | while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) | 1576 | while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) |
1566 | { | 1577 | { |
1578 | mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput"); | ||
1567 | TranslateMessage(&msg); | 1579 | TranslateMessage(&msg); |
1580 | mCallbacks->handlePingWatchdog(this, "Main:DispatchGatherInput"); | ||
1568 | DispatchMessage(&msg); | 1581 | DispatchMessage(&msg); |
1569 | msg_count++; | 1582 | msg_count++; |
1570 | 1583 | ||
@@ -1591,7 +1604,7 @@ void LLWindowWin32::gatherInput() | |||
1591 | } | 1604 | } |
1592 | } | 1605 | } |
1593 | */ | 1606 | */ |
1594 | 1607 | mCallbacks->handlePingWatchdog(this, "Main:AsyncCallbackGatherInput"); | |
1595 | // For async host by name support. Really hacky. | 1608 | // For async host by name support. Really hacky. |
1596 | if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message)) | 1609 | if (gAsyncMsgCallback && (LL_WM_HOST_RESOLVED == msg.message)) |
1597 | { | 1610 | { |
@@ -1942,6 +1955,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
1942 | window_imp->convertCoords(window_coord, &gl_coord); | 1955 | window_imp->convertCoords(window_coord, &gl_coord); |
1943 | } | 1956 | } |
1944 | MASK mask = gKeyboard->currentMask(TRUE); | 1957 | MASK mask = gKeyboard->currentMask(TRUE); |
1958 | // generate move event to update mouse coordinates | ||
1959 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
1945 | if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask)) | 1960 | if (window_imp->mCallbacks->handleMouseDown(window_imp, gl_coord, mask)) |
1946 | { | 1961 | { |
1947 | return 0; | 1962 | return 0; |
@@ -1969,6 +1984,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
1969 | window_imp->convertCoords(window_coord, &gl_coord); | 1984 | window_imp->convertCoords(window_coord, &gl_coord); |
1970 | } | 1985 | } |
1971 | MASK mask = gKeyboard->currentMask(TRUE); | 1986 | MASK mask = gKeyboard->currentMask(TRUE); |
1987 | // generate move event to update mouse coordinates | ||
1988 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
1972 | if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) ) | 1989 | if (window_imp->mCallbacks->handleDoubleClick(window_imp, gl_coord, mask) ) |
1973 | { | 1990 | { |
1974 | return 0; | 1991 | return 0; |
@@ -1999,6 +2016,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
1999 | window_imp->convertCoords(window_coord, &gl_coord); | 2016 | window_imp->convertCoords(window_coord, &gl_coord); |
2000 | } | 2017 | } |
2001 | MASK mask = gKeyboard->currentMask(TRUE); | 2018 | MASK mask = gKeyboard->currentMask(TRUE); |
2019 | // generate move event to update mouse coordinates | ||
2020 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
2002 | if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask)) | 2021 | if (window_imp->mCallbacks->handleMouseUp(window_imp, gl_coord, mask)) |
2003 | { | 2022 | { |
2004 | return 0; | 2023 | return 0; |
@@ -2015,7 +2034,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
2015 | window_imp->interruptLanguageTextInput(); | 2034 | window_imp->interruptLanguageTextInput(); |
2016 | } | 2035 | } |
2017 | 2036 | ||
2018 | // Because we move the cursor position in tllviewerhe app, we need to query | 2037 | // Because we move the cursor position in the llviewerapp, we need to query |
2019 | // to find out where the cursor at the time the event is handled. | 2038 | // to find out where the cursor at the time the event is handled. |
2020 | // If we don't do this, many clicks could get buffered up, and if the | 2039 | // If we don't do this, many clicks could get buffered up, and if the |
2021 | // first click changes the cursor position, all subsequent clicks | 2040 | // first click changes the cursor position, all subsequent clicks |
@@ -2031,6 +2050,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
2031 | window_imp->convertCoords(window_coord, &gl_coord); | 2050 | window_imp->convertCoords(window_coord, &gl_coord); |
2032 | } | 2051 | } |
2033 | MASK mask = gKeyboard->currentMask(TRUE); | 2052 | MASK mask = gKeyboard->currentMask(TRUE); |
2053 | // generate move event to update mouse coordinates | ||
2054 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
2034 | if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask)) | 2055 | if (window_imp->mCallbacks->handleRightMouseDown(window_imp, gl_coord, mask)) |
2035 | { | 2056 | { |
2036 | return 0; | 2057 | return 0; |
@@ -2057,6 +2078,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
2057 | window_imp->convertCoords(window_coord, &gl_coord); | 2078 | window_imp->convertCoords(window_coord, &gl_coord); |
2058 | } | 2079 | } |
2059 | MASK mask = gKeyboard->currentMask(TRUE); | 2080 | MASK mask = gKeyboard->currentMask(TRUE); |
2081 | // generate move event to update mouse coordinates | ||
2082 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
2060 | if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask)) | 2083 | if (window_imp->mCallbacks->handleRightMouseUp(window_imp, gl_coord, mask)) |
2061 | { | 2084 | { |
2062 | return 0; | 2085 | return 0; |
@@ -2089,6 +2112,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
2089 | window_imp->convertCoords(window_coord, &gl_coord); | 2112 | window_imp->convertCoords(window_coord, &gl_coord); |
2090 | } | 2113 | } |
2091 | MASK mask = gKeyboard->currentMask(TRUE); | 2114 | MASK mask = gKeyboard->currentMask(TRUE); |
2115 | // generate move event to update mouse coordinates | ||
2116 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
2092 | if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask)) | 2117 | if (window_imp->mCallbacks->handleMiddleMouseDown(window_imp, gl_coord, mask)) |
2093 | { | 2118 | { |
2094 | return 0; | 2119 | return 0; |
@@ -2115,6 +2140,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ | |||
2115 | window_imp->convertCoords(window_coord, &gl_coord); | 2140 | window_imp->convertCoords(window_coord, &gl_coord); |
2116 | } | 2141 | } |
2117 | MASK mask = gKeyboard->currentMask(TRUE); | 2142 | MASK mask = gKeyboard->currentMask(TRUE); |
2143 | // generate move event to update mouse coordinates | ||
2144 | window_imp->mCallbacks->handleMouseMove(window_imp, gl_coord, mask); | ||
2118 | if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask)) | 2145 | if (window_imp->mCallbacks->handleMiddleMouseUp(window_imp, gl_coord, mask)) |
2119 | { | 2146 | { |
2120 | return 0; | 2147 | return 0; |
@@ -2376,7 +2403,7 @@ BOOL LLWindowWin32::pasteTextFromClipboard(LLWString &dst) | |||
2376 | if (utf16str) | 2403 | if (utf16str) |
2377 | { | 2404 | { |
2378 | dst = utf16str_to_wstring(utf16str); | 2405 | dst = utf16str_to_wstring(utf16str); |
2379 | LLWString::removeCRLF(dst); | 2406 | LLWStringUtil::removeCRLF(dst); |
2380 | GlobalUnlock(h_data); | 2407 | GlobalUnlock(h_data); |
2381 | success = TRUE; | 2408 | success = TRUE; |
2382 | } | 2409 | } |
@@ -2399,7 +2426,7 @@ BOOL LLWindowWin32::copyTextToClipboard(const LLWString& wstr) | |||
2399 | 2426 | ||
2400 | // Provide a copy of the data in Unicode format. | 2427 | // Provide a copy of the data in Unicode format. |
2401 | LLWString sanitized_string(wstr); | 2428 | LLWString sanitized_string(wstr); |
2402 | LLWString::addCRLF(sanitized_string); | 2429 | LLWStringUtil::addCRLF(sanitized_string); |
2403 | llutf16string out_utf16 = wstring_to_utf16str(sanitized_string); | 2430 | llutf16string out_utf16 = wstring_to_utf16str(sanitized_string); |
2404 | const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR); | 2431 | const size_t size_utf16 = (out_utf16.length() + 1) * sizeof(WCHAR); |
2405 | 2432 | ||
@@ -2486,86 +2513,6 @@ BOOL LLWindowWin32::getClientRectInScreenSpace( RECT* rectp ) | |||
2486 | return success; | 2513 | return success; |
2487 | } | 2514 | } |
2488 | 2515 | ||
2489 | |||
2490 | BOOL LLWindowWin32::sendEmail(const char* address, const char* subject, const char* body_text, | ||
2491 | const char* attachment, const char* attachment_displayed_name ) | ||
2492 | { | ||
2493 | // Based on "A SendMail() DLL" by Greg Turner, Windows Developer Magazine, Nov. 1997. | ||
2494 | // See article for use of GetProcAddress | ||
2495 | // No restrictions on use. | ||
2496 | |||
2497 | enum SendResult | ||
2498 | { | ||
2499 | LL_EMAIL_SUCCESS, | ||
2500 | LL_EMAIL_MAPI_NOT_INSTALLED, // No MAPI Server (eg Microsoft Exchange) installed | ||
2501 | LL_EMAIL_MAPILOAD_FAILED, // Load of MAPI32.DLL failed | ||
2502 | LL_EMAIL_SEND_FAILED // The message send itself failed | ||
2503 | }; | ||
2504 | |||
2505 | SendResult result = LL_EMAIL_SUCCESS; | ||
2506 | |||
2507 | U32 mapi_installed = GetProfileInt(L"Mail", L"MAPI", 0); | ||
2508 | if( !mapi_installed) | ||
2509 | { | ||
2510 | result = LL_EMAIL_MAPI_NOT_INSTALLED; | ||
2511 | } | ||
2512 | else | ||
2513 | { | ||
2514 | HINSTANCE hMAPIInst = LoadLibrary(L"MAPI32.DLL"); /* Flawfinder: ignore */ | ||
2515 | if(!hMAPIInst) | ||
2516 | { | ||
2517 | result = LL_EMAIL_MAPILOAD_FAILED; | ||
2518 | } | ||
2519 | else | ||
2520 | { | ||
2521 | LPMAPISENDMAIL pMAPISendMail = (LPMAPISENDMAIL) GetProcAddress(hMAPIInst, "MAPISendMail"); | ||
2522 | |||
2523 | // Send the message | ||
2524 | MapiRecipDesc recipients[1]; | ||
2525 | recipients[0].ulReserved = 0; | ||
2526 | recipients[0].ulRecipClass = MAPI_TO; | ||
2527 | recipients[0].lpszName = (char*)address; | ||
2528 | recipients[0].lpszAddress = (char*)address; | ||
2529 | recipients[0].ulEIDSize = 0; | ||
2530 | recipients[0].lpEntryID = 0; | ||
2531 | |||
2532 | MapiFileDesc files[1]; | ||
2533 | files[0].ulReserved = 0; | ||
2534 | files[0].flFlags = 0; // non-OLE file | ||
2535 | files[0].nPosition = -1; // Leave file location in email unspecified. | ||
2536 | files[0].lpszPathName = (char*)attachment; // Must be fully qualified name, including drive letter. | ||
2537 | files[0].lpszFileName = (char*)attachment_displayed_name; // If NULL, uses attachment as displayed name. | ||
2538 | files[0].lpFileType = NULL; // Recipient will have to figure out what kind of file this is. | ||
2539 | |||
2540 | MapiMessage msg; | ||
2541 | memset(&msg, 0, sizeof(msg)); | ||
2542 | msg.lpszSubject = (char*)subject; // may be NULL | ||
2543 | msg.lpszNoteText = (char*)body_text; | ||
2544 | msg.nRecipCount = address ? 1 : 0; | ||
2545 | msg.lpRecips = address ? recipients : NULL; | ||
2546 | msg.nFileCount = attachment ? 1 : 0; | ||
2547 | msg.lpFiles = attachment ? files : NULL; | ||
2548 | |||
2549 | U32 success = pMAPISendMail(0, (U32) mWindowHandle, &msg, MAPI_DIALOG|MAPI_LOGON_UI|MAPI_NEW_SESSION, 0); | ||
2550 | if(success != SUCCESS_SUCCESS) | ||
2551 | { | ||
2552 | result = LL_EMAIL_SEND_FAILED; | ||
2553 | } | ||
2554 | |||
2555 | FreeLibrary(hMAPIInst); | ||
2556 | } | ||
2557 | } | ||
2558 | |||
2559 | return result == LL_EMAIL_SUCCESS; | ||
2560 | } | ||
2561 | |||
2562 | |||
2563 | S32 LLWindowWin32::stat(const char* file_name, struct stat* stat_info) | ||
2564 | { | ||
2565 | llassert( sizeof(struct stat) == sizeof(struct _stat) ); // They are defined identically in sys/stat.h, but I'm paranoid. | ||
2566 | return LLFile::stat( file_name, (struct _stat*) stat_info ); | ||
2567 | } | ||
2568 | |||
2569 | void LLWindowWin32::flashIcon(F32 seconds) | 2516 | void LLWindowWin32::flashIcon(F32 seconds) |
2570 | { | 2517 | { |
2571 | FLASHWINFO flash_info; | 2518 | FLASHWINFO flash_info; |
@@ -2803,12 +2750,12 @@ void LLSplashScreenWin32::showImpl() | |||
2803 | } | 2750 | } |
2804 | 2751 | ||
2805 | 2752 | ||
2806 | void LLSplashScreenWin32::updateImpl(const char *mesg) | 2753 | void LLSplashScreenWin32::updateImpl(const std::string& mesg) |
2807 | { | 2754 | { |
2808 | if (!mWindow) return; | 2755 | if (!mWindow) return; |
2809 | 2756 | ||
2810 | WCHAR w_mesg[1024]; | 2757 | WCHAR w_mesg[1024]; |
2811 | mbstowcs(w_mesg, mesg, 1024); | 2758 | mbstowcs(w_mesg, mesg.c_str(), 1024); |
2812 | 2759 | ||
2813 | SendDlgItemMessage(mWindow, | 2760 | SendDlgItemMessage(mWindow, |
2814 | 666, // HACK: text id | 2761 | 666, // HACK: text id |
@@ -2840,7 +2787,7 @@ LRESULT CALLBACK LLSplashScreenWin32::windowProc(HWND h_wnd, UINT u_msg, | |||
2840 | // Helper Funcs | 2787 | // Helper Funcs |
2841 | // | 2788 | // |
2842 | 2789 | ||
2843 | S32 OSMessageBoxWin32(const char* text, const char* caption, U32 type) | 2790 | S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type) |
2844 | { | 2791 | { |
2845 | UINT uType; | 2792 | UINT uType; |
2846 | 2793 | ||
@@ -2861,7 +2808,7 @@ S32 OSMessageBoxWin32(const char* text, const char* caption, U32 type) | |||
2861 | } | 2808 | } |
2862 | 2809 | ||
2863 | // HACK! Doesn't properly handle wide strings! | 2810 | // HACK! Doesn't properly handle wide strings! |
2864 | int retval_win = MessageBoxA(NULL, text, caption, uType); | 2811 | int retval_win = MessageBoxA(NULL, text.c_str(), caption.c_str(), uType); |
2865 | S32 retval; | 2812 | S32 retval; |
2866 | 2813 | ||
2867 | switch(retval_win) | 2814 | switch(retval_win) |
@@ -2887,15 +2834,13 @@ S32 OSMessageBoxWin32(const char* text, const char* caption, U32 type) | |||
2887 | } | 2834 | } |
2888 | 2835 | ||
2889 | 2836 | ||
2890 | void spawn_web_browser(const char* escaped_url ) | 2837 | void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) |
2891 | { | 2838 | { |
2892 | bool found = false; | 2839 | bool found = false; |
2893 | S32 i; | 2840 | S32 i; |
2894 | for (i = 0; i < gURLProtocolWhitelistCount; i++) | 2841 | for (i = 0; i < gURLProtocolWhitelistCount; i++) |
2895 | { | 2842 | { |
2896 | S32 len = strlen(gURLProtocolWhitelist[i]); /* Flawfinder: ignore */ | 2843 | if (escaped_url.find(gURLProtocolWhitelist[i]) == 0) |
2897 | if (!strncmp(escaped_url, gURLProtocolWhitelist[i], len) | ||
2898 | && escaped_url[len] == ':') | ||
2899 | { | 2844 | { |
2900 | found = true; | 2845 | found = true; |
2901 | break; | 2846 | break; |
@@ -2931,10 +2876,9 @@ void spawn_web_browser(const char* escaped_url ) | |||
2931 | // Figure out the user's default web browser | 2876 | // Figure out the user's default web browser |
2932 | // HKEY_CLASSES_ROOT\http\shell\open\command | 2877 | // HKEY_CLASSES_ROOT\http\shell\open\command |
2933 | /* | 2878 | /* |
2934 | char reg_path_str[256]; // Flawfinder: ignore | 2879 | std::string reg_path_str = gURLProtocolWhitelistHandler[i] + "\\shell\\open\\command"; |
2935 | snprintf(reg_path_str, sizeof(reg_path_str), "%s\\shell\\open\\command", gURLProtocolWhitelistHandler[i]); // Flawfinder: ignore | ||
2936 | WCHAR reg_path_wstr[256]; | 2880 | WCHAR reg_path_wstr[256]; |
2937 | mbstowcs(reg_path_wstr, reg_path_str, sizeof(reg_path_wstr)/sizeof(reg_path_wstr[0])); | 2881 | mbstowcs(reg_path_wstr, reg_path_str.c_str(), sizeof(reg_path_wstr)/sizeof(reg_path_wstr[0])); |
2938 | 2882 | ||
2939 | HKEY key; | 2883 | HKEY key; |
2940 | WCHAR browser_open_wstr[1024]; | 2884 | WCHAR browser_open_wstr[1024]; |
diff --git a/linden/indra/llwindow/llwindowwin32.h b/linden/indra/llwindow/llwindowwin32.h index feb1c74..ebabcae 100644 --- a/linden/indra/llwindow/llwindowwin32.h +++ b/linden/indra/llwindow/llwindowwin32.h | |||
@@ -86,12 +86,6 @@ public: | |||
86 | /*virtual*/ void delayInputProcessing(); | 86 | /*virtual*/ void delayInputProcessing(); |
87 | /*virtual*/ void swapBuffers(); | 87 | /*virtual*/ void swapBuffers(); |
88 | 88 | ||
89 | /*virtual*/ LLString getTempFileName(); | ||
90 | /*virtual*/ void deleteFile( const char* file_name ); | ||
91 | /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ); | ||
92 | /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL); | ||
93 | |||
94 | |||
95 | // handy coordinate space conversion routines | 89 | // handy coordinate space conversion routines |
96 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); | 90 | /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); |
97 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to); | 91 | /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to); |
@@ -115,12 +109,13 @@ public: | |||
115 | /*virtual*/ void setLanguageTextInput( const LLCoordGL & pos ); | 109 | /*virtual*/ void setLanguageTextInput( const LLCoordGL & pos ); |
116 | /*virtual*/ void updateLanguageTextInputArea(); | 110 | /*virtual*/ void updateLanguageTextInputArea(); |
117 | /*virtual*/ void interruptLanguageTextInput(); | 111 | /*virtual*/ void interruptLanguageTextInput(); |
112 | /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); | ||
118 | 113 | ||
119 | static std::string getFontListSans(); | 114 | static std::string getFontListSans(); |
120 | 115 | ||
121 | protected: | 116 | protected: |
122 | LLWindowWin32( | 117 | LLWindowWin32( |
123 | char *title, char *name, int x, int y, int width, int height, U32 flags, | 118 | const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, |
124 | BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, | 119 | BOOL fullscreen, BOOL clearBg, BOOL disable_vsync, BOOL use_gl, |
125 | BOOL ignore_pixel_depth, U32 fsaa_samples); | 120 | BOOL ignore_pixel_depth, U32 fsaa_samples); |
126 | ~LLWindowWin32(); | 121 | ~LLWindowWin32(); |
@@ -220,7 +215,7 @@ public: | |||
220 | virtual ~LLSplashScreenWin32(); | 215 | virtual ~LLSplashScreenWin32(); |
221 | 216 | ||
222 | /*virtual*/ void showImpl(); | 217 | /*virtual*/ void showImpl(); |
223 | /*virtual*/ void updateImpl(const char* mesg); | 218 | /*virtual*/ void updateImpl(const std::string& mesg); |
224 | /*virtual*/ void hideImpl(); | 219 | /*virtual*/ void hideImpl(); |
225 | 220 | ||
226 | #if LL_WINDOWS | 221 | #if LL_WINDOWS |
@@ -239,6 +234,6 @@ extern LPWSTR gIconResource; | |||
239 | 234 | ||
240 | static void handleMessage( const MSG& msg ); | 235 | static void handleMessage( const MSG& msg ); |
241 | 236 | ||
242 | S32 OSMessageBoxWin32(const char* text, const char* caption, U32 type); | 237 | S32 OSMessageBoxWin32(const std::string& text, const std::string& caption, U32 type); |
243 | 238 | ||
244 | #endif //LL_LLWINDOWWIN32_H | 239 | #endif //LL_LLWINDOWWIN32_H |