]> icculus.org git repositories - icculus/iodoom3.git/blob - neo/renderer/cg_explicit.h
hello world
[icculus/iodoom3.git] / neo / renderer / cg_explicit.h
1 /*
2 ===========================================================================
3
4 Doom 3 GPL Source Code
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company. 
6
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).  
8
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code.  If not, see <http://www.gnu.org/licenses/>.
21
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code.  If not, please request a copy in writing from id Software at the address below.
23
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
25
26 ===========================================================================
27 */
28
29 #ifndef CG_EXTERNAL___H
30 #define CG_EXTERNAL___H
31
32
33
34 typedef int CGbool;
35 typedef struct _CGcontext *CGcontext;
36 typedef struct _CGprogram *CGprogram;
37 typedef struct _CGparameter *CGparameter;
38
39
40 typedef enum
41 {
42     CG_UNKNOWN_TYPE,
43         CG_STRUCT,
44         CG_ARRAY,
45         
46         CG_TYPE_START_ENUM = 1024,
47         
48         
49         CG_HALF ,
50         CG_HALF2 ,
51         CG_HALF3 ,
52         CG_HALF4 ,
53         CG_HALF1x1 ,
54         CG_HALF1x2 ,
55         CG_HALF1x3 ,
56         CG_HALF1x4 ,
57         CG_HALF2x1 ,
58         CG_HALF2x2 ,
59         CG_HALF2x3 ,
60         CG_HALF2x4 ,
61         CG_HALF3x1 ,
62         CG_HALF3x2 ,
63         CG_HALF3x3 ,
64         CG_HALF3x4 ,
65         CG_HALF4x1 ,
66         CG_HALF4x2 ,
67         CG_HALF4x3 ,
68         CG_HALF4x4 ,
69         CG_FLOAT ,
70         CG_FLOAT2 ,
71         CG_FLOAT3 ,
72         CG_FLOAT4 ,
73         CG_FLOAT1x1 ,
74         CG_FLOAT1x2 ,
75         CG_FLOAT1x3 ,
76         CG_FLOAT1x4 ,
77         CG_FLOAT2x1 ,
78         CG_FLOAT2x2 ,
79         CG_FLOAT2x3 ,
80         CG_FLOAT2x4 ,
81         CG_FLOAT3x1 ,
82         CG_FLOAT3x2 ,
83         CG_FLOAT3x3 ,
84         CG_FLOAT3x4 ,
85         CG_FLOAT4x1 ,
86         CG_FLOAT4x2 ,
87         CG_FLOAT4x3 ,
88         CG_FLOAT4x4 ,
89         CG_SAMPLER1D ,
90         CG_SAMPLER2D ,
91         CG_SAMPLER3D ,
92         CG_SAMPLERRECT ,
93         CG_SAMPLERCUBE ,
94         CG_FIXED ,
95         CG_FIXED2 ,
96         CG_FIXED3 ,
97         CG_FIXED4 ,
98         CG_FIXED1x1 ,
99         CG_FIXED1x2 ,
100         CG_FIXED1x3 ,
101         CG_FIXED1x4 ,
102         CG_FIXED2x1 ,
103         CG_FIXED2x2 ,
104         CG_FIXED2x3 ,
105         CG_FIXED2x4 ,
106         CG_FIXED3x1 ,
107         CG_FIXED3x2 ,
108         CG_FIXED3x3 ,
109         CG_FIXED3x4 ,
110         CG_FIXED4x1 ,
111         CG_FIXED4x2 ,
112         CG_FIXED4x3 ,
113         CG_FIXED4x4 ,
114         CG_HALF1 ,
115         CG_FLOAT1 ,
116         CG_FIXED1 ,
117         
118         
119 } CGtype;
120
121 typedef enum
122 {
123     
124     CG_TEXUNIT0 = 2048,
125         CG_TEXUNIT1 = 2049,
126         CG_TEXUNIT2 = 2050,
127         CG_TEXUNIT3 = 2051,
128         CG_TEXUNIT4 = 2052,
129         CG_TEXUNIT5 = 2053,
130         CG_TEXUNIT6 = 2054,
131         CG_TEXUNIT7 = 2055,
132         CG_TEXUNIT8 = 2056,
133         CG_TEXUNIT9 = 2057,
134         CG_TEXUNIT10 = 2058,
135         CG_TEXUNIT11 = 2059,
136         CG_TEXUNIT12 = 2060,
137         CG_TEXUNIT13 = 2061,
138         CG_TEXUNIT14 = 2062,
139         CG_TEXUNIT15 = 2063,
140         
141         CG_ATTR0 = 2113,
142         CG_ATTR1 = 2114,
143         CG_ATTR2 = 2115,
144         CG_ATTR3 = 2116,
145         CG_ATTR4 = 2117,
146         CG_ATTR5 = 2118,
147         CG_ATTR6 = 2119,
148         CG_ATTR7 = 2120,
149         CG_ATTR8 = 2121,
150         CG_ATTR9 = 2122,
151         CG_ATTR10 = 2123,
152         CG_ATTR11 = 2124,
153         CG_ATTR12 = 2125,
154         CG_ATTR13 = 2126,
155         CG_ATTR14 = 2127,
156         CG_ATTR15 = 2128,
157         
158         CG_C = 2178,
159         
160         CG_TEX0 = 2179,
161         CG_TEX1 = 2180,
162         CG_TEX2 = 2181,
163         CG_TEX3 = 2192,
164         CG_TEX4 = 2193,
165         CG_TEX5 = 2194,
166         CG_TEX6 = 2195,
167         CG_TEX7 = 2196,
168         
169         CG_HPOS = 2243,
170         CG_COL0 = 2245,
171         CG_COL1 = 2246,
172         CG_COL2 = 2247,
173         CG_COL3 = 2248,
174         CG_PSIZ = 2309,
175         CG_WPOS = 2373,
176         
177         CG_POSITION0 = 2437,
178         CG_POSITION1 = 2438,
179         CG_POSITION2 = 2439,
180         CG_POSITION3 = 2440,
181         CG_POSITION4 = 2441,
182         CG_POSITION5 = 2442,
183         CG_POSITION6 = 2443,
184         CG_POSITION7 = 2444,
185         CG_POSITION8 = 2445,
186         CG_POSITION9 = 2446,
187         CG_POSITION10 = 2447,
188         CG_POSITION11 = 2448,
189         CG_POSITION12 = 2449,
190         CG_POSITION13 = 2450,
191         CG_POSITION14 = 2451,
192         CG_POSITION15 = 2452,
193         CG_DIFFUSE0 = 2501,
194         CG_TANGENT0 = 2565,
195         CG_TANGENT1 = 2566,
196         CG_TANGENT2 = 2567,
197         CG_TANGENT3 = 2568,
198         CG_TANGENT4 = 2569,
199         CG_TANGENT5 = 2570,
200         CG_TANGENT6 = 2571,
201         CG_TANGENT7 = 2572,
202         CG_TANGENT8 = 2573,
203         CG_TANGENT9 = 2574,
204         CG_TANGENT10 = 2575,
205         CG_TANGENT11 = 2576,
206         CG_TANGENT12 = 2577,
207         CG_TANGENT13 = 2578,
208         CG_TANGENT14 = 2579,
209         CG_TANGENT15 = 2580,
210         CG_SPECULAR0 = 2629,
211         CG_BLENDINDICES0 = 2693,
212         CG_BLENDINDICES1 = 2694,
213         CG_BLENDINDICES2 = 2695,
214         CG_BLENDINDICES3 = 2696,
215         CG_BLENDINDICES4 = 2697,
216         CG_BLENDINDICES5 = 2698,
217         CG_BLENDINDICES6 = 2699,
218         CG_BLENDINDICES7 = 2700,
219         CG_BLENDINDICES8 = 2701,
220         CG_BLENDINDICES9 = 2702,
221         CG_BLENDINDICES10 = 2703,
222         CG_BLENDINDICES11 = 2704,
223         CG_BLENDINDICES12 = 2705,
224         CG_BLENDINDICES13 = 2706,
225         CG_BLENDINDICES14 = 2707,
226         CG_BLENDINDICES15 = 2708,
227         CG_COLOR0 = 2757,
228         CG_COLOR1 = 2758,
229         CG_COLOR2 = 2759,
230         CG_COLOR3 = 2760,
231         CG_COLOR4 = 2761,
232         CG_COLOR5 = 2762,
233         CG_COLOR6 = 2763,
234         CG_COLOR7 = 2764,
235         CG_COLOR8 = 2765,
236         CG_COLOR9 = 2766,
237         CG_COLOR10 = 2767,
238         CG_COLOR11 = 2768,
239         CG_COLOR12 = 2769,
240         CG_COLOR13 = 2770,
241         CG_COLOR14 = 2771,
242         CG_COLOR15 = 2772,
243         CG_PSIZE0 = 2821,
244         CG_PSIZE1 = 2822,
245         CG_PSIZE2 = 2823,
246         CG_PSIZE3 = 2824,
247         CG_PSIZE4 = 2825,
248         CG_PSIZE5 = 2826,
249         CG_PSIZE6 = 2827,
250         CG_PSIZE7 = 2828,
251         CG_PSIZE8 = 2829,
252         CG_PSIZE9 = 2830,
253         CG_PSIZE10 = 2831,
254         CG_PSIZE11 = 2832,
255         CG_PSIZE12 = 2833,
256         CG_PSIZE13 = 2834,
257         CG_PSIZE14 = 2835,
258         CG_PSIZE15 = 2836,
259         CG_BINORMAL0 = 2885,
260         CG_BINORMAL1 = 2886,
261         CG_BINORMAL2 = 2887,
262         CG_BINORMAL3 = 2888,
263         CG_BINORMAL4 = 2889,
264         CG_BINORMAL5 = 2890,
265         CG_BINORMAL6 = 2891,
266         CG_BINORMAL7 = 2892,
267         CG_BINORMAL8 = 2893,
268         CG_BINORMAL9 = 2894,
269         CG_BINORMAL10 = 2895,
270         CG_BINORMAL11 = 2896,
271         CG_BINORMAL12 = 2897,
272         CG_BINORMAL13 = 2898,
273         CG_BINORMAL14 = 2899,
274         CG_BINORMAL15 = 2900,
275         CG_FOG0 = 2917,
276         CG_FOG1 = 2918,
277         CG_FOG2 = 2919,
278         CG_FOG3 = 2920,
279         CG_FOG4 = 2921,
280         CG_FOG5 = 2922,
281         CG_FOG6 = 2923,
282         CG_FOG7 = 2924,
283         CG_FOG8 = 2925,
284         CG_FOG9 = 2926,
285         CG_FOG10 = 2927,
286         CG_FOG11 = 2928,
287         CG_FOG12 = 2929,
288         CG_FOG13 = 2930,
289         CG_FOG14 = 2931,
290         CG_FOG15 = 2932,
291         CG_DEPTH0 = 2933,
292         CG_DEPTH1 = 2934,
293         CG_DEPTH2 = 2935,
294         CG_DEPTH3 = 2936,
295         CG_DEPTH4 = 2937,
296         CG_DEPTH5 = 2938,
297         CG_DEPTH6 = 2939,
298         CG_DEPTH7 = 2940,
299         CG_DEPTH8 = 2941,
300         CG_DEPTH9 = 29542,
301         CG_DEPTH10 = 2943,
302         CG_DEPTH11 = 2944,
303         CG_DEPTH12 = 2945,
304         CG_DEPTH13 = 2946,
305         CG_DEPTH14 = 2947,
306         CG_DEPTH15 = 2948,
307         CG_SAMPLE0 = 2949,
308         CG_SAMPLE1 = 2950,
309         CG_SAMPLE2 = 2951,
310         CG_SAMPLE3 = 2952,
311         CG_SAMPLE4 = 2953,
312         CG_SAMPLE5 = 2954,
313         CG_SAMPLE6 = 2955,
314         CG_SAMPLE7 = 2956,
315         CG_SAMPLE8 = 2957,
316         CG_SAMPLE9 = 2958,
317         CG_SAMPLE10 = 2959,
318         CG_SAMPLE11 = 2960,
319         CG_SAMPLE12 = 2961,
320         CG_SAMPLE13 = 2962,
321         CG_SAMPLE14 = 2963,
322         CG_SAMPLE15 = 2964,
323         CG_BLENDWEIGHT0 = 3028,
324         CG_BLENDWEIGHT1 = 3029,
325         CG_BLENDWEIGHT2 = 3030,
326         CG_BLENDWEIGHT3 = 3031,
327         CG_BLENDWEIGHT4 = 3032,
328         CG_BLENDWEIGHT5 = 3033,
329         CG_BLENDWEIGHT6 = 3034,
330         CG_BLENDWEIGHT7 = 3035,
331         CG_BLENDWEIGHT8 = 3036,
332         CG_BLENDWEIGHT9 = 3037,
333         CG_BLENDWEIGHT10 = 3038,
334         CG_BLENDWEIGHT11 = 3039,
335         CG_BLENDWEIGHT12 = 3040,
336         CG_BLENDWEIGHT13 = 3041,
337         CG_BLENDWEIGHT14 = 3042,
338         CG_BLENDWEIGHT15 = 3043,
339         CG_NORMAL0 = 3092,
340         CG_NORMAL1 = 3093,
341         CG_NORMAL2 = 3094,
342         CG_NORMAL3 = 3095,
343         CG_NORMAL4 = 3096,
344         CG_NORMAL5 = 3097,
345         CG_NORMAL6 = 3098,
346         CG_NORMAL7 = 3099,
347         CG_NORMAL8 = 3100,
348         CG_NORMAL9 = 3101,
349         CG_NORMAL10 = 3102,
350         CG_NORMAL11 = 3103,
351         CG_NORMAL12 = 3104,
352         CG_NORMAL13 = 3105,
353         CG_NORMAL14 = 3106,
354         CG_NORMAL15 = 3107,
355         CG_FOGCOORD = 3156,
356         CG_TEXCOORD0 = 3220,
357         CG_TEXCOORD1 = 3221,
358         CG_TEXCOORD2 = 3222,
359         CG_TEXCOORD3 = 3223,
360         CG_TEXCOORD4 = 3224,
361         CG_TEXCOORD5 = 3225,
362         CG_TEXCOORD6 = 3226,
363         CG_TEXCOORD7 = 3227,
364         CG_TEXCOORD8 = 3228,
365         CG_TEXCOORD9 = 3229,
366         CG_TEXCOORD10 = 3230,
367         CG_TEXCOORD11 = 3231,
368         CG_TEXCOORD12 = 3232,
369         CG_TEXCOORD13 = 3233,
370         CG_TEXCOORD14 = 3234,
371         CG_TEXCOORD15 = 3235,
372         CG_COMBINER_CONST0 = 3284,
373         CG_COMBINER_CONST1 = 3285,
374         CG_COMBINER_STAGE_CONST0 = 3286,
375         CG_COMBINER_STAGE_CONST1 = 3287,
376         CG_OFFSET_TEXTURE_MATRIX = 3288,
377         CG_OFFSET_TEXTURE_SCALE = 3289,
378         CG_OFFSET_TEXTURE_BIAS = 3290,
379         CG_CONST_EYE = 3291,
380         CG_TESSFACTOR = 3255,
381         
382         
383         CG_UNDEFINED,
384         
385  } CGresource;
386  
387  typedef enum
388  {
389      CG_PROFILE_START = 6144,
390          CG_PROFILE_UNKNOWN,
391          
392          CG_PROFILE_VP20 = 6146,
393          CG_PROFILE_FP20 = 6147,
394          CG_PROFILE_VP30 = 6148,
395          CG_PROFILE_FP30 = 6149,
396          CG_PROFILE_ARBVP1 = 6150,
397          CG_PROFILE_ARBFP1 = 7000,
398          
399          
400          CG_PROFILE_VS_1_1 = 6153,
401          CG_PROFILE_VS_2_0 = 6154,
402          CG_PROFILE_VS_2_X = 6155,
403          
404          CG_PROFILE_PS_1_1 = 6159,
405          CG_PROFILE_PS_1_2 = 6160,
406          CG_PROFILE_PS_1_3 = 6161,
407          CG_PROFILE_PS_2_0 = 6162,
408          CG_PROFILE_PS_2_X = 6163,
409          
410          CG_PROFILE_MAX,
411  } CGprofile;
412  
413  typedef enum
414  {
415      
416      
417      CG_NO_ERROR = 0,
418          CG_COMPILER_ERROR = 1,
419          CG_INVALID_PARAMETER_ERROR = 2,
420          CG_INVALID_PROFILE_ERROR = 3,
421          CG_PROGRAM_LOAD_ERROR = 4,
422          CG_PROGRAM_BIND_ERROR = 5,
423          CG_PROGRAM_NOT_LOADED_ERROR = 6,
424          CG_UNSUPPORTED_GL_EXTENSION_ERROR = 7,
425          CG_INVALID_VALUE_TYPE_ERROR = 8,
426          CG_NOT_MATRIX_PARAM_ERROR = 9,
427          CG_INVALID_ENUMERANT_ERROR = 10,
428          CG_NOT_4x4_MATRIX_ERROR = 11,
429          CG_FILE_READ_ERROR = 12,
430          CG_FILE_WRITE_ERROR = 13,
431          CG_NVPARSE_ERROR = 14,
432          CG_MEMORY_ALLOC_ERROR = 15,
433          CG_INVALID_CONTEXT_HANDLE_ERROR = 16,
434          CG_INVALID_PROGRAM_HANDLE_ERROR = 17,
435          CG_INVALID_PARAM_HANDLE_ERROR = 18,
436          CG_UNKNOWN_PROFILE_ERROR = 19,
437          CG_VAR_ARG_ERROR = 20,
438          CG_INVALID_DIMENSION_ERROR = 21,
439          CG_ARRAY_PARAM_ERROR = 22,
440          CG_OUT_OF_ARRAY_BOUNDS_ERROR = 23,
441  } CGerror;
442  
443  typedef enum
444  {
445      CG_UNKNOWN = 4096,
446          CG_IN,
447          CG_OUT,
448          CG_INOUT,
449          CG_MIXED,
450          CG_VARYING,
451          CG_UNIFORM,
452          CG_CONSTANT,
453          CG_PROGRAM_SOURCE,
454          CG_PROGRAM_ENTRY,
455          CG_COMPILED_PROGRAM,
456          CG_PROGRAM_PROFILE,
457          
458          CG_GLOBAL,
459          CG_PROGRAM,
460          
461          CG_DEFAULT,
462          CG_ERROR,
463          
464          CG_SOURCE,
465          CG_OBJECT,
466          
467  } CGenum;
468  
469  
470  extern "C" {
471      
472      typedef void (*CGerrorCallbackFunc)(void);
473      
474      
475      
476      typedef  CGcontext  (*PFNCGCREATECONTEXTPROC)(void);
477      typedef  void  (*PFNCGDESTROYCONTEXTPROC)(CGcontext ctx);
478      typedef  CGbool  (*PFNCGISCONTEXTPROC)(CGcontext ctx);
479      typedef  const char * (*PFNCGGETLASTLISTINGPROC)(CGcontext ctx);
480      typedef  CGprogram (*PFNCGCREATEPROGRAMPROC)(CGcontext ctx, 
481          CGenum program_type,
482          const char *program,
483          CGprofile profile,
484          const char *entry,
485          const char **args);
486      typedef  CGprogram (*PFNCGCREATEPROGRAMFROMFILEPROC)(CGcontext ctx, 
487          CGenum program_type,
488          const char *program_file,
489          CGprofile profile,
490          const char *entry,
491          const char **args);
492      typedef  CGprogram  (*PFNCGCOPYPROGRAMPROC)(CGprogram program);
493      typedef  void  (*PFNCGDESTROYPROGRAMPROC)(CGprogram program);
494      typedef  CGprogram  (*PFNCGGETFIRSTPROGRAMPROC)(CGcontext ctx);
495      typedef  CGprogram  (*PFNCGGETNEXTPROGRAMPROC)(CGprogram current);
496      typedef  CGcontext  (*PFNCGGETPROGRAMCONTEXTPROC)(CGprogram prog);
497      typedef  CGbool  (*PFNCGISPROGRAMPROC)(CGprogram program);
498      typedef  void  (*PFNCGCOMPILEPROGRAMPROC)(CGprogram program);
499      typedef  CGbool  (*PFNCGISPROGRAMCOMPILEDPROC)(CGprogram program);
500      typedef  const char * (*PFNCGGETPROGRAMSTRINGPROC)(CGprogram prog, CGenum pname);
501      typedef  CGprofile  (*PFNCGGETPROGRAMPROFILEPROC)(CGprogram prog);
502      typedef  CGparameter  (*PFNCGGETNAMEDPARAMETERPROC)(CGprogram prog, const char *name);
503      typedef  CGparameter  (*PFNCGGETFIRSTPARAMETERPROC)(CGprogram prog, CGenum name_space);
504      typedef  CGparameter  (*PFNCGGETNEXTPARAMETERPROC)(CGparameter current);
505      typedef  CGparameter  (*PFNCGGETFIRSTLEAFPARAMETERPROC)(CGprogram prog, CGenum name_space);
506      typedef  CGparameter  (*PFNCGGETNEXTLEAFPARAMETERPROC)(CGparameter current);
507      typedef  CGparameter  (*PFNCGGETFIRSTSTRUCTPARAMETERPROC)(CGparameter param);
508      typedef  CGparameter  (*PFNCGGETFIRSTDEPENDENTPARAMETERPROC)(CGparameter param);
509      typedef  CGparameter  (*PFNCGGETARRAYPARAMETERPROC)(CGparameter aparam, int index);
510      typedef  int  (*PFNCGGETARRAYDIMENSIONPROC)(CGparameter param);
511      typedef  int  (*PFNCGGETARRAYSIZEPROC)(CGparameter param, int dimension);
512      typedef  CGprogram  (*PFNCGGETPARAMETERPROGRAMPROC)(CGparameter prog);
513      typedef  CGbool  (*PFNCGISPARAMETERPROC)(CGparameter param);
514      typedef  const char * (*PFNCGGETPARAMETERNAMEPROC)(CGparameter param);
515      typedef  CGtype  (*PFNCGGETPARAMETERTYPEPROC)(CGparameter param);
516      typedef  const char * (*PFNCGGETPARAMETERSEMANTICPROC)(CGparameter param);
517      typedef  CGresource  (*PFNCGGETPARAMETERRESOURCEPROC)(CGparameter param);
518      typedef  CGresource  (*PFNCGGETPARAMETERBASERESOURCEPROC)(CGparameter param);
519      typedef  unsigned long  (*PFNCGGETPARAMETERRESOURCEINDEXPROC)(CGparameter param);
520      typedef  CGenum  (*PFNCGGETPARAMETERVARIABILITYPROC)(CGparameter param);
521      typedef  CGenum  (*PFNCGGETPARAMETERDIRECTIONPROC)(CGparameter param);
522      typedef  CGbool  (*PFNCGISPARAMETERREFERENCEDPROC)(CGparameter param);
523      typedef  void (*PFNCGGETPARAMETERVALUESPROC)(CGparameter param, 
524          CGenum value_type,
525          int *nvalues);
526      typedef  const char * (*PFNCGGETTYPESTRINGPROC)(CGtype type);
527      typedef  CGtype  (*PFNCGGETTYPEPROC)(const char *type_string);
528      typedef  const char * (*PFNCGGETRESOURCESTRINGPROC)(CGresource resource);
529      typedef  CGresource  (*PFNCGGETRESOURCEPROC)(const char *resource_string);
530      typedef  const char * (*PFNCGGETPROFILESTRINGPROC)(CGprofile profile);
531      typedef  CGprofile  (*PFNCGGETPROFILEPROC)(const char *profile_string);
532      typedef  CGerror  (*PFNCGGETERRORPROC)(void);
533      typedef  const char * (*PFNCGGETERRORSTRINGPROC)(CGerror error);
534      typedef  void  (*PFNCGSETERRORCALLBACKPROC)(CGerrorCallbackFunc func);
535      typedef  CGerrorCallbackFunc  (*PFNCGGETERRORCALLBACKPROC)(void);
536      
537      
538      extern PFNCGCREATECONTEXTPROC cgCreateContext;
539      extern PFNCGDESTROYCONTEXTPROC cgDestroyContext;
540      extern PFNCGISCONTEXTPROC cgIsContext;
541      extern PFNCGGETLASTLISTINGPROC cgGetLastListing;
542      extern PFNCGCREATEPROGRAMPROC cgCreateProgram;
543      extern PFNCGCREATEPROGRAMFROMFILEPROC cgCreateProgramFromFile;
544      extern PFNCGCOPYPROGRAMPROC cgCopyProgram;
545      extern PFNCGDESTROYPROGRAMPROC cgDestroyProgram;
546      extern PFNCGGETFIRSTPROGRAMPROC cgGetFirstProgram;
547      extern PFNCGGETNEXTPROGRAMPROC cgGetNextProgram;
548      extern PFNCGGETPROGRAMCONTEXTPROC cgGetProgramContext;
549      extern PFNCGISPROGRAMPROC cgIsProgram;
550      extern PFNCGCOMPILEPROGRAMPROC cgCompileProgram;
551      extern PFNCGISPROGRAMCOMPILEDPROC cgIsProgramCompiled;
552      extern PFNCGGETPROGRAMSTRINGPROC cgGetProgramString;
553      extern PFNCGGETPROGRAMPROFILEPROC cgGetProgramProfile;
554      extern PFNCGGETNAMEDPARAMETERPROC cgGetNamedParameter;
555      extern PFNCGGETFIRSTPARAMETERPROC cgGetFirstParameter;
556      extern PFNCGGETNEXTPARAMETERPROC cgGetNextParameter;
557      extern PFNCGGETFIRSTLEAFPARAMETERPROC cgGetFirstLeafParameter;
558      extern PFNCGGETNEXTLEAFPARAMETERPROC cgGetNextLeafParameter;
559      extern PFNCGGETFIRSTSTRUCTPARAMETERPROC cgGetFirstStructParameter;
560      extern PFNCGGETFIRSTDEPENDENTPARAMETERPROC cgGetFirstDependentParameter;
561      extern PFNCGGETARRAYPARAMETERPROC cgGetArrayParameter;
562      extern PFNCGGETARRAYDIMENSIONPROC cgGetArrayDimension;
563      extern PFNCGGETARRAYSIZEPROC cgGetArraySize;
564      extern PFNCGGETPARAMETERPROGRAMPROC cgGetParameterProgram;
565      extern PFNCGISPARAMETERPROC cgIsParameter;
566      extern PFNCGGETPARAMETERNAMEPROC cgGetParameterName;
567      extern PFNCGGETPARAMETERTYPEPROC cgGetParameterType;
568      extern PFNCGGETPARAMETERSEMANTICPROC cgGetParameterSemantic;
569      extern PFNCGGETPARAMETERRESOURCEPROC cgGetParameterResource;
570      extern PFNCGGETPARAMETERBASERESOURCEPROC cgGetParameterBaseResource;
571      extern PFNCGGETPARAMETERRESOURCEINDEXPROC cgGetParameterResourceIndex;
572      extern PFNCGGETPARAMETERVARIABILITYPROC cgGetParameterVariability;
573      extern PFNCGGETPARAMETERDIRECTIONPROC cgGetParameterDirection;
574      extern PFNCGISPARAMETERREFERENCEDPROC cgIsParameterReferenced;
575      extern PFNCGGETPARAMETERVALUESPROC cgGetParameterValues;
576      extern PFNCGGETTYPESTRINGPROC cgGetTypeString;
577      extern PFNCGGETTYPEPROC cgGetType;
578      extern PFNCGGETRESOURCESTRINGPROC cgGetResourceString;
579      extern PFNCGGETRESOURCEPROC cgGetResource;
580      extern PFNCGGETPROFILESTRINGPROC cgGetProfileString;
581      extern PFNCGGETPROFILEPROC cgGetProfile;
582      extern PFNCGGETERRORPROC cgGetError;
583      extern PFNCGGETERRORSTRINGPROC cgGetErrorString;
584      extern PFNCGSETERRORCALLBACKPROC cgSetErrorCallback;
585      extern PFNCGGETERRORCALLBACKPROC cgGetErrorCallback;
586      
587      
588  }
589  
590  
591  
592  extern "C" {
593      
594      typedef enum
595      {
596          CG_GL_MATRIX_IDENTITY = 0,
597              CG_GL_MATRIX_TRANSPOSE = 1,
598              CG_GL_MATRIX_INVERSE = 2,
599              CG_GL_MATRIX_INVERSE_TRANSPOSE = 3,
600              
601              CG_GL_MODELVIEW_MATRIX,
602              CG_GL_PROJECTION_MATRIX,
603              CG_GL_TEXTURE_MATRIX,
604              CG_GL_MODELVIEW_PROJECTION_MATRIX,
605              
606              CG_GL_VERTEX,
607              CG_GL_FRAGMENT,
608              
609      } CGGLenum;
610      
611      
612      
613      
614      typedef  CGbool  (*PFNCGGLISPROFILESUPPORTEDPROC)(CGprofile profile);
615      typedef  void  (*PFNCGGLENABLEPROFILEPROC)(CGprofile profile);
616      typedef  void  (*PFNCGGLDISABLEPROFILEPROC)(CGprofile profile);
617      typedef  CGprofile  (*PFNCGGLGETLATESTPROFILEPROC)(CGGLenum profile_type);
618      typedef  void  (*PFNCGGLSETOPTIMALOPTIONSPROC)(CGprofile profile);
619      typedef  void  (*PFNCGGLLOADPROGRAMPROC)(CGprogram program);
620      typedef  void  (*PFNCGGLBINDPROGRAMPROC)(CGprogram program);
621      typedef  void (*PFNCGGLSETPARAMETER1FPROC)(CGparameter param,
622          float x);
623      typedef  void (*PFNCGGLSETPARAMETER2FPROC)(CGparameter param,
624          float x,
625          float y);
626      typedef  void (*PFNCGGLSETPARAMETER3FPROC)(CGparameter param,
627          float x,
628          float y,
629          float z);
630      typedef  void (*PFNCGGLSETPARAMETER4FPROC)(CGparameter param,
631          float x,
632          float y,
633          float z,
634          float w);
635      typedef  void  (*PFNCGGLSETPARAMETER1FVPROC)(CGparameter param, const float *v);
636      typedef  void  (*PFNCGGLSETPARAMETER2FVPROC)(CGparameter param, const float *v);
637      typedef  void  (*PFNCGGLSETPARAMETER3FVPROC)(CGparameter param, const float *v);
638      typedef  void  (*PFNCGGLSETPARAMETER4FVPROC)(CGparameter param, const float *v);
639      typedef  void (*PFNCGGLSETPARAMETER1DPROC)(CGparameter param,
640          double x);
641      typedef  void (*PFNCGGLSETPARAMETER2DPROC)(CGparameter param,
642          double x,
643          double y);
644      typedef  void (*PFNCGGLSETPARAMETER3DPROC)(CGparameter param,
645          double x,
646          double y,
647          double z);
648      typedef  void (*PFNCGGLSETPARAMETER4DPROC)(CGparameter param,
649          double x,
650          double y,
651          double z,
652          double w);
653      typedef  void  (*PFNCGGLSETPARAMETER1DVPROC)(CGparameter param, const double *v);
654      typedef  void  (*PFNCGGLSETPARAMETER2DVPROC)(CGparameter param, const double *v);
655      typedef  void  (*PFNCGGLSETPARAMETER3DVPROC)(CGparameter param, const double *v);
656      typedef  void  (*PFNCGGLSETPARAMETER4DVPROC)(CGparameter param, const double *v);
657      typedef  void  (*PFNCGGLSETPARAMETER4DVPROC)(CGparameter param, const double *v);
658      typedef  void  (*PFNCGGLGETPARAMETER1FPROC)(CGparameter param, float *v);
659      typedef  void  (*PFNCGGLGETPARAMETER2FPROC)(CGparameter param, float *v);
660      typedef  void  (*PFNCGGLGETPARAMETER3FPROC)(CGparameter param, float *v);
661      typedef  void  (*PFNCGGLGETPARAMETER4FPROC)(CGparameter param, float *v);
662      typedef  void  (*PFNCGGLGETPARAMETER1DPROC)(CGparameter param, double *v);
663      typedef  void  (*PFNCGGLGETPARAMETER2DPROC)(CGparameter param, double *v);
664      typedef  void  (*PFNCGGLGETPARAMETER3DPROC)(CGparameter param, double *v);
665      typedef  void  (*PFNCGGLGETPARAMETER4DPROC)(CGparameter param, double *v);
666      typedef  void (*PFNCGGLSETPARAMETERARRAY1FPROC)(CGparameter param,
667          long offset,
668          long nelements,
669          const float *v);
670      typedef  void (*PFNCGGLSETPARAMETERARRAY2FPROC)(CGparameter param,
671          long offset,
672          long nelements,
673          const float *v);
674      typedef  void (*PFNCGGLSETPARAMETERARRAY3FPROC)(CGparameter param,
675          long offset,
676          long nelements,
677          const float *v);
678      typedef  void (*PFNCGGLSETPARAMETERARRAY4FPROC)(CGparameter param,
679          long offset,
680          long nelements,
681          const float *v);
682      typedef  void (*PFNCGGLSETPARAMETERARRAY1DPROC)(CGparameter param,
683          long offset,
684          long nelements,
685          const double *v);
686      typedef  void (*PFNCGGLSETPARAMETERARRAY2DPROC)(CGparameter param,
687          long offset,
688          long nelements,
689          const double *v);
690      typedef  void (*PFNCGGLSETPARAMETERARRAY3DPROC)(CGparameter param,
691          long offset,
692          long nelements,
693          const double *v);
694      typedef  void (*PFNCGGLSETPARAMETERARRAY4DPROC)(CGparameter param,
695          long offset,
696          long nelements,
697          const double *v);
698      typedef  void (*PFNCGGLGETPARAMETERARRAY1FPROC)(CGparameter param,
699          long offset,
700          long nelements,
701          float *v);
702      typedef  void (*PFNCGGLGETPARAMETERARRAY2FPROC)(CGparameter param,
703          long offset,
704          long nelements,
705          float *v);
706      typedef  void (*PFNCGGLGETPARAMETERARRAY3FPROC)(CGparameter param,
707          long offset,
708          long nelements,
709          float *v);
710      typedef  void (*PFNCGGLGETPARAMETERARRAY4FPROC)(CGparameter param,
711          long offset,
712          long nelements,
713          float *v);
714      typedef  void (*PFNCGGLGETPARAMETERARRAY1DPROC)(CGparameter param,
715          long offset,
716          long nelements,
717          double *v);
718      typedef  void (*PFNCGGLGETPARAMETERARRAY2DPROC)(CGparameter param,
719          long offset,
720          long nelements,
721          double *v);
722      typedef  void (*PFNCGGLGETPARAMETERARRAY3DPROC)(CGparameter param,
723          long offset,
724          long nelements,
725          double *v);
726      typedef  void (*PFNCGGLGETPARAMETERARRAY4DPROC)(CGparameter param,
727          long offset,
728          long nelements,
729          double *v);
730      typedef  void (*PFNCGGLSETPARAMETERPOINTERPROC)(CGparameter param,
731          GLint fsize,
732          GLenum type,
733          GLsizei stride,
734          GLvoid *pointer);
735      typedef  void  (*PFNCGGLENABLECLIENTSTATEPROC)(CGparameter param);
736      typedef  void  (*PFNCGGLDISABLECLIENTSTATEPROC)(CGparameter param);
737      typedef  void  (*PFNCGGLSETMATRIXPARAMETERDRPROC)(CGparameter param, const double *matrix);
738      typedef  void  (*PFNCGGLSETMATRIXPARAMETERFRPROC)(CGparameter param, const float *matrix);
739      typedef  void  (*PFNCGGLSETMATRIXPARAMETERDCPROC)(CGparameter param, const double *matrix);
740      typedef  void  (*PFNCGGLSETMATRIXPARAMETERFCPROC)(CGparameter param, const float *matrix);
741      typedef  void  (*PFNCGGLGETMATRIXPARAMETERDRPROC)(CGparameter param, double *matrix);
742      typedef  void  (*PFNCGGLGETMATRIXPARAMETERFRPROC)(CGparameter param, float *matrix);
743      typedef  void  (*PFNCGGLGETMATRIXPARAMETERDCPROC)(CGparameter param, double *matrix);
744      typedef  void  (*PFNCGGLGETMATRIXPARAMETERFCPROC)(CGparameter param, float *matrix);
745      typedef  void (*PFNCGGLSETSTATEMATRIXPARAMETERPROC)(CGparameter param, 
746          GLenum matrix,
747          GLenum transform);
748      typedef  void (*PFNCGGLSETMATRIXPARAMETERARRAYFCPROC)(CGparameter param, 
749          long offset,
750          long nelements,
751          const float *matrices);
752      typedef  void (*PFNCGGLSETMATRIXPARAMETERARRAYFRPROC)(CGparameter param, 
753          long offset,
754          long nelements,
755          const float *matrices);
756      typedef  void (*PFNCGGLSETMATRIXPARAMETERARRAYDCPROC)(CGparameter param, 
757          long offset,
758          long nelements,
759          const double *matrices);
760      typedef  void (*PFNCGGLSETMATRIXPARAMETERARRAYDRPROC)(CGparameter param, 
761          long offset,
762          long nelements,
763          const double *matrices);
764      typedef  void (*PFNCGGLGETMATRIXPARAMETERARRAYFCPROC)(CGparameter param, 
765          long offset,
766          long nelements,
767          float *matrices);
768      typedef  void (*PFNCGGLGETMATRIXPARAMETERARRAYFRPROC)(CGparameter param, 
769          long offset,
770          long nelements,
771          float *matrices);
772      typedef  void (*PFNCGGLGETMATRIXPARAMETERARRAYDCPROC)(CGparameter param, 
773          long offset,
774          long nelements,
775          double *matrices);
776      typedef  void (*PFNCGGLGETMATRIXPARAMETERARRAYDRPROC)(CGparameter param, 
777          long offset,
778          long nelements,
779          double *matrices);
780      typedef  void  (*PFNCGGLSETTEXTUREPARAMETERPROC)(CGparameter param, GLuint texobj);
781      typedef  GLuint  (*PFNCGGLGETTEXTUREPARAMETERPROC)(CGparameter param);
782      typedef  void  (*PFNCGGLENABLETEXTUREPARAMETERPROC)(CGparameter param);
783      typedef  void  (*PFNCGGLDISABLETEXTUREPARAMETERPROC)(CGparameter param);
784      typedef  GLenum  (*PFNCGGLGETTEXTUREENUMPROC)(CGparameter param);
785      
786      
787      extern PFNCGGLISPROFILESUPPORTEDPROC cgGLIsProfileSupported;
788      extern PFNCGGLENABLEPROFILEPROC cgGLEnableProfile;
789      extern PFNCGGLDISABLEPROFILEPROC cgGLDisableProfile;
790      extern PFNCGGLGETLATESTPROFILEPROC cgGLGetLatestProfile;
791      extern PFNCGGLSETOPTIMALOPTIONSPROC cgGLSetOptimalOptions;
792      extern PFNCGGLLOADPROGRAMPROC cgGLLoadProgram;
793      extern PFNCGGLBINDPROGRAMPROC cgGLBindProgram;
794      extern PFNCGGLSETPARAMETER1FPROC cgGLSetParameter1f;
795      extern PFNCGGLSETPARAMETER2FPROC cgGLSetParameter2f;
796      extern PFNCGGLSETPARAMETER3FPROC cgGLSetParameter3f;
797      extern PFNCGGLSETPARAMETER4FPROC cgGLSetParameter4f;
798      extern PFNCGGLSETPARAMETER1FVPROC cgGLSetParameter1fv;
799      extern PFNCGGLSETPARAMETER2FVPROC cgGLSetParameter2fv;
800      extern PFNCGGLSETPARAMETER3FVPROC cgGLSetParameter3fv;
801      extern PFNCGGLSETPARAMETER4FVPROC cgGLSetParameter4fv;
802      extern PFNCGGLSETPARAMETER1DPROC cgGLSetParameter1d;
803      extern PFNCGGLSETPARAMETER2DPROC cgGLSetParameter2d;
804      extern PFNCGGLSETPARAMETER3DPROC cgGLSetParameter3d;
805      extern PFNCGGLSETPARAMETER4DPROC cgGLSetParameter4d;
806      extern PFNCGGLSETPARAMETER1DVPROC cgGLSetParameter1dv;
807      extern PFNCGGLSETPARAMETER2DVPROC cgGLSetParameter2dv;
808      extern PFNCGGLSETPARAMETER3DVPROC cgGLSetParameter3dv;
809      extern PFNCGGLSETPARAMETER4DVPROC cgGLSetParameter4dv;
810      extern PFNCGGLGETPARAMETER1FPROC cgGLGetParameter1f;
811      extern PFNCGGLGETPARAMETER2FPROC cgGLGetParameter2f;
812      extern PFNCGGLGETPARAMETER3FPROC cgGLGetParameter3f;
813      extern PFNCGGLGETPARAMETER4FPROC cgGLGetParameter4f;
814      extern PFNCGGLGETPARAMETER1DPROC cgGLGetParameter1d;
815      extern PFNCGGLGETPARAMETER2DPROC cgGLGetParameter2d;
816      extern PFNCGGLGETPARAMETER3DPROC cgGLGetParameter3d;
817      extern PFNCGGLGETPARAMETER4DPROC cgGLGetParameter4d;
818      extern PFNCGGLSETPARAMETERARRAY1FPROC cgGLSetParameterArray1f;
819      extern PFNCGGLSETPARAMETERARRAY2FPROC cgGLSetParameterArray2f;
820      extern PFNCGGLSETPARAMETERARRAY3FPROC cgGLSetParameterArray3f;
821      extern PFNCGGLSETPARAMETERARRAY4FPROC cgGLSetParameterArray4f;
822      extern PFNCGGLSETPARAMETERARRAY1DPROC cgGLSetParameterArray1d;
823      extern PFNCGGLSETPARAMETERARRAY2DPROC cgGLSetParameterArray2d;
824      extern PFNCGGLSETPARAMETERARRAY3DPROC cgGLSetParameterArray3d;
825      extern PFNCGGLSETPARAMETERARRAY4DPROC cgGLSetParameterArray4d;
826      extern PFNCGGLGETPARAMETERARRAY1FPROC cgGLGetParameterArray1f;
827      extern PFNCGGLGETPARAMETERARRAY2FPROC cgGLGetParameterArray2f;
828      extern PFNCGGLGETPARAMETERARRAY3FPROC cgGLGetParameterArray3f;
829      extern PFNCGGLGETPARAMETERARRAY4FPROC cgGLGetParameterArray4f;
830      extern PFNCGGLGETPARAMETERARRAY1DPROC cgGLGetParameterArray1d;
831      extern PFNCGGLGETPARAMETERARRAY2DPROC cgGLGetParameterArray2d;
832      extern PFNCGGLGETPARAMETERARRAY3DPROC cgGLGetParameterArray3d;
833      extern PFNCGGLGETPARAMETERARRAY4DPROC cgGLGetParameterArray4d;
834      extern PFNCGGLSETPARAMETERPOINTERPROC cgGLSetParameterPointer;
835      extern PFNCGGLENABLECLIENTSTATEPROC cgGLEnableClientState;
836      extern PFNCGGLDISABLECLIENTSTATEPROC cgGLDisableClientState;
837      extern PFNCGGLSETMATRIXPARAMETERDRPROC cgGLSetMatrixParameterdr;
838      extern PFNCGGLSETMATRIXPARAMETERFRPROC cgGLSetMatrixParameterfr;
839      extern PFNCGGLSETMATRIXPARAMETERDCPROC cgGLSetMatrixParameterdc;
840      extern PFNCGGLSETMATRIXPARAMETERFCPROC cgGLSetMatrixParameterfc;
841      extern PFNCGGLGETMATRIXPARAMETERDRPROC cgGLGetMatrixParameterdr;
842      extern PFNCGGLGETMATRIXPARAMETERFRPROC cgGLGetMatrixParameterfr;
843      extern PFNCGGLGETMATRIXPARAMETERDCPROC cgGLGetMatrixParameterdc;
844      extern PFNCGGLGETMATRIXPARAMETERFCPROC cgGLGetMatrixParameterfc;
845      extern PFNCGGLSETSTATEMATRIXPARAMETERPROC cgGLSetStateMatrixParameter;
846      extern PFNCGGLSETMATRIXPARAMETERARRAYFCPROC cgGLSetMatrixParameterArrayfc;
847      extern PFNCGGLSETMATRIXPARAMETERARRAYFRPROC cgGLSetMatrixParameterArrayfr;
848      extern PFNCGGLSETMATRIXPARAMETERARRAYDCPROC cgGLSetMatrixParameterArraydc;
849      extern PFNCGGLSETMATRIXPARAMETERARRAYDRPROC cgGLSetMatrixParameterArraydr;
850      extern PFNCGGLGETMATRIXPARAMETERARRAYFCPROC cgGLGetMatrixParameterArrayfc;
851      extern PFNCGGLGETMATRIXPARAMETERARRAYFRPROC cgGLGetMatrixParameterArrayfr;
852      extern PFNCGGLGETMATRIXPARAMETERARRAYDCPROC cgGLGetMatrixParameterArraydc;
853      extern PFNCGGLGETMATRIXPARAMETERARRAYDRPROC cgGLGetMatrixParameterArraydr;
854      extern PFNCGGLSETTEXTUREPARAMETERPROC cgGLSetTextureParameter;
855      extern PFNCGGLGETTEXTUREPARAMETERPROC cgGLGetTextureParameter;
856      extern PFNCGGLENABLETEXTUREPARAMETERPROC cgGLEnableTextureParameter;
857      extern PFNCGGLDISABLETEXTUREPARAMETERPROC cgGLDisableTextureParameter;
858      extern PFNCGGLGETTEXTUREENUMPROC cgGLGetTextureEnum;
859      
860      
861 }
862
863 bool init_explicit_Cg();
864
865 #endif
866