annotate android/testproject/jni/importgl.c @ 4709:6dc26b9d8368

Tweaks to the libsdl side
author Paul Hunkin <paul@bieh.net>
date Fri, 18 Jun 2010 01:29:14 +1200
parents 611d39792201
children
rev   line source
4704
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
1 /* San Angeles Observation OpenGL ES version example
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
2 * Copyright 2004-2005 Jetro Lauha
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
3 * All rights reserved.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
4 * Web: http://iki.fi/jetro/
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
5 *
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
6 * This source is free software; you can redistribute it and/or
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
7 * modify it under the terms of EITHER:
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
8 * (1) The GNU Lesser General Public License as published by the Free
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
9 * Software Foundation; either version 2.1 of the License, or (at
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
10 * your option) any later version. The text of the GNU Lesser
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
11 * General Public License is included with this source in the
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
12 * file LICENSE-LGPL.txt.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
13 * (2) The BSD-style license that is included with this source in
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
14 * the file LICENSE-BSD.txt.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
15 *
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
16 * This source is distributed in the hope that it will be useful,
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
19 * LICENSE-LGPL.txt and LICENSE-BSD.txt for more details.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
20 *
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
21 * $Id: importgl.c,v 1.4 2005/02/08 18:42:55 tonic Exp $
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
22 * $Revision: 1.4 $
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
23 */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
24
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
25 #undef WIN32
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
26 #undef LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
27 #ifdef _MSC_VER
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
28 // Desktop or mobile Win32 environment:
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
29 #define WIN32
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
30 #else
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
31 // Linux environment:
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
32 #define LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
33 #endif
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
34
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
35 #ifndef DISABLE_IMPORTGL
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
36
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
37 #if defined(WIN32)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
38 #define WIN32_LEAN_AND_MEAN
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
39 #include <windows.h>
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
40 #include <tchar.h>
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
41 static HMODULE sGLESDLL = NULL;
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
42 #endif // WIN32
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
43
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
44 #ifdef LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
45 #include <stdlib.h>
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
46 #include <dlfcn.h>
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
47 static void *sGLESSO = NULL;
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
48 #endif // LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
49
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
50 #endif /* DISABLE_IMPORTGL */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
51
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
52 #define IMPORTGL_NO_FNPTR_DEFS
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
53 #define IMPORTGL_API
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
54 #define IMPORTGL_FNPTRINIT = NULL
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
55 #include "importgl.h"
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
56
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
57
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
58 /* Imports function pointers to selected function calls in OpenGL ES Common
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
59 * or Common Lite profile DLL or shared object. The function pointers are
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
60 * stored as global symbols with equivalent function name but prefixed with
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
61 * "funcPtr_". Standard gl/egl calls are redirected to the function pointers
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
62 * with preprocessor macros (see importgl.h).
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
63 */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
64 int importGLInit()
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
65 {
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
66 int result = 1;
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
67
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
68 #ifndef DISABLE_IMPORTGL
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
69
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
70 #undef IMPORT_FUNC
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
71
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
72 #ifdef WIN32
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
73 sGLESDLL = LoadLibrary(_T("libGLES_CM.dll"));
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
74 if (sGLESDLL == NULL)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
75 sGLESDLL = LoadLibrary(_T("libGLES_CL.dll"));
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
76 if (sGLESDLL == NULL)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
77 return 0; // Cannot find OpenGL ES Common or Common Lite DLL.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
78
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
79 /* The following fetches address to each egl & gl function call
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
80 * and stores it to the related function pointer. Casting through
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
81 * void * results in warnings with VC warning level 4, which
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
82 * could be fixed by casting to the true type for each fetch.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
83 */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
84 #define IMPORT_FUNC(funcName) do { \
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
85 void *procAddress = (void *)GetProcAddress(sGLESDLL, _T(#funcName)); \
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
86 if (procAddress == NULL) result = 0; \
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
87 *((void **)&FNPTR(funcName)) = procAddress; } while (0)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
88 #endif // WIN32
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
89
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
90 #ifdef LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
91 #ifdef ANDROID_NDK
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
92 sGLESSO = dlopen("libGLESv1_CM.so", RTLD_NOW);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
93 #else /* !ANDROID_NDK */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
94 sGLESSO = dlopen("libGLES_CM.so", RTLD_NOW);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
95 if (sGLESSO == NULL)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
96 sGLESSO = dlopen("libGLES_CL.so", RTLD_NOW);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
97 #endif /* !ANDROID_NDK */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
98 if (sGLESSO == NULL)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
99 return 0; // Cannot find OpenGL ES Common or Common Lite SO.
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
100
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
101 #define IMPORT_FUNC(funcName) do { \
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
102 void *procAddress = (void *)dlsym(sGLESSO, #funcName); \
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
103 if (procAddress == NULL) result = 0; \
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
104 *((void **)&FNPTR(funcName)) = procAddress; } while (0)
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
105 #endif // LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
106
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
107 #ifndef ANDROID_NDK
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
108 IMPORT_FUNC(eglChooseConfig);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
109 IMPORT_FUNC(eglCreateContext);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
110 IMPORT_FUNC(eglCreateWindowSurface);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
111 IMPORT_FUNC(eglDestroyContext);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
112 IMPORT_FUNC(eglDestroySurface);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
113 IMPORT_FUNC(eglGetConfigAttrib);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
114 IMPORT_FUNC(eglGetConfigs);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
115 IMPORT_FUNC(eglGetDisplay);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
116 IMPORT_FUNC(eglGetError);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
117 IMPORT_FUNC(eglInitialize);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
118 IMPORT_FUNC(eglMakeCurrent);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
119 IMPORT_FUNC(eglSwapBuffers);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
120 IMPORT_FUNC(eglTerminate);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
121 #endif /* !ANDROID_NDK */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
122
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
123 IMPORT_FUNC(glBlendFunc);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
124 IMPORT_FUNC(glClear);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
125 IMPORT_FUNC(glClearColorx);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
126 IMPORT_FUNC(glColor4x);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
127 IMPORT_FUNC(glColorPointer);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
128 IMPORT_FUNC(glDisable);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
129 IMPORT_FUNC(glDisableClientState);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
130 IMPORT_FUNC(glDrawArrays);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
131 IMPORT_FUNC(glEnable);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
132 IMPORT_FUNC(glEnableClientState);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
133 IMPORT_FUNC(glFrustumx);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
134 IMPORT_FUNC(glGetError);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
135 IMPORT_FUNC(glLightxv);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
136 IMPORT_FUNC(glLoadIdentity);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
137 IMPORT_FUNC(glMaterialx);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
138 IMPORT_FUNC(glMaterialxv);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
139 IMPORT_FUNC(glMatrixMode);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
140 IMPORT_FUNC(glMultMatrixx);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
141 IMPORT_FUNC(glNormalPointer);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
142 IMPORT_FUNC(glPopMatrix);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
143 IMPORT_FUNC(glPushMatrix);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
144 IMPORT_FUNC(glRotatex);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
145 IMPORT_FUNC(glScalex);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
146 IMPORT_FUNC(glShadeModel);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
147 IMPORT_FUNC(glTranslatex);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
148 IMPORT_FUNC(glVertexPointer);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
149 IMPORT_FUNC(glViewport);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
150
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
151 #endif /* DISABLE_IMPORTGL */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
152
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
153 return result;
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
154 }
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
155
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
156
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
157 void importGLDeinit()
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
158 {
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
159 #ifndef DISABLE_IMPORTGL
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
160 #ifdef WIN32
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
161 FreeLibrary(sGLESDLL);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
162 #endif
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
163
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
164 #ifdef LINUX
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
165 dlclose(sGLESSO);
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
166 #endif
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
167 #endif /* DISABLE_IMPORTGL */
611d39792201 Added minimal test project
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
168 }