1
{******************************************************************************}
3
{* Copyright (c) 2002, NVIDIA Corporation. *}
6
{* Content: NVIDIA Cg OpenGL interface include files *}
8
{* NVIDIA "Cg" Release 1.2 ObjectPascal adaptation by Alexey Barkovoy *}
9
{* E-Mail: clootie@ixbt.com *}
11
{* Modified: 14-Mar-2004 *}
13
{* Latest version can be downloaded from: *}
14
{* http://clootie.narod.ru *}
15
{* http://developer.nvidia.com/object/cg_download.html *}
17
{******************************************************************************}
19
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
21
{ The contents of this file are used with permission, subject to the Mozilla }
22
{ Public License Version 1.1 (the "License"); you may not use this file except }
23
{ in compliance with the License. You may obtain a copy of the License at }
24
{ http://www.mozilla.org/MPL/MPL-1.1.html }
26
{ Software distributed under the License is distributed on an "AS IS" basis, }
27
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
28
{ the specific language governing rights and limitations under the License. }
30
{ Alternatively, the contents of this file may be used under the terms of the }
31
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
32
{ provisions of the LGPL License are applicable instead of those above. }
33
{ If you wish to allow use of your version of this file only under the terms }
34
{ of the LGPL License and not to allow others to use your version of this file }
35
{ under the MPL, indicate your decision by deleting the provisions above and }
36
{ replace them with the notice and other provisions required by the LGPL }
37
{ License. If you do not delete the provisions above, a recipient may use }
38
{ your version of this file under either the MPL or the LGPL License. }
40
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
42
{******************************************************************************}
46
* Copyright (c) 2002, NVIDIA Corporation.
50
* NVIDIA Corporation("NVIDIA") supplies this software to you in consideration
51
* of your agreement to the following terms, and your use, installation,
52
* modification or redistribution of this NVIDIA software constitutes
53
* acceptance of these terms. If you do not agree with these terms, please do
54
* not use, install, modify or redistribute this NVIDIA software.
58
* In consideration of your agreement to abide by the following terms, and
59
* subject to these terms, NVIDIA grants you a personal, non-exclusive license,
60
* under NVIDIARs copyrights in this original NVIDIA software (the "NVIDIA
61
* Software"), to use, reproduce, modify and redistribute the NVIDIA
62
* Software, with or without modifications, in source and/or binary forms;
63
* provided that if you redistribute the NVIDIA Software, you must retain the
64
* copyright notice of NVIDIA, this notice and the following text and
65
* disclaimers in all such redistributions of the NVIDIA Software. Neither the
66
* name, trademarks, service marks nor logos of NVIDIA Corporation may be used
67
* to endorse or promote products derived from the NVIDIA Software without
68
* specific prior written permission from NVIDIA. Except as expressly stated
69
* in this notice, no other rights or licenses express or implied, are granted
70
* by NVIDIA herein, including but not limited to any patent rights that may be
71
* infringed by your derivative works or by other works in which the NVIDIA
72
* Software may be incorporated. No hardware is licensed hereunder.
76
* THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
77
* WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
78
* WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
79
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION
80
* EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS.
84
* IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
85
* EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST
86
* PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
87
* PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE,
88
* REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE,
89
* HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING
90
* NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED
91
* OF THE POSSIBILITY OF SUCH DAMAGE.
95
//////////////////////////////////////////////////////////////////////////////
97
// 19-Dec-2012 - PW: Restored CPPB compatibility,
98
// suppressed some unnecessary directives
99
// 23-Aug-2010 - YarUnderoaker
100
// - Replaced OpenGL1x to OpenGLTokens
101
// 17-Nov-09 - Da Stranger
102
// - Improved Unix compatibility (thanks Predator) (BugtrackerID = 2893580)
103
// XX-XX-04 - LR, YHC - BCB corrections:
104
// - suppress the $NODEFINE, $HPPEMIT and $EXTERNALSYM directives
105
// 23-Apr-04 - Nelson Chu:
106
// - Adopted to use with GLScene (jedi.inc -> GLScene.inc)
107
// 04-Mar-04 - Alexey Barkovoy:
108
// - Updated to Release 1.2 of Cg toolkit (published 25-Feb-2004)
109
// 21-Mar-03 - Alexey Barkovoy:
110
// - Updated to Release 1.1 of Cg toolkit (published 04-Mar-2003)
111
// 11-Jan-03 - Alexey Barkovoy:
112
// - Updated to Release 1.0 of Cg toolkit (published 20-Dec-2002)
116
{$Include GLScene.inc}
122
{$IFDEF MSWINDOWS} ,Windows{$ENDIF};
126
CgGLlibrary = 'cgGL.dll';
128
CgGLlibrary = 'libCgGL.so';
131
(*****************************************************************************)
132
(*** cgGL Type Definitions ***)
133
(*****************************************************************************)
137
CGGLenum = TCGGLenum;
140
CG_GL_MATRIX_IDENTITY = 0;
141
CG_GL_MATRIX_TRANSPOSE = 1;
142
CG_GL_MATRIX_INVERSE = 2;
143
CG_GL_MATRIX_INVERSE_TRANSPOSE = 3;
145
CG_GL_MODELVIEW_MATRIX = 4;
146
CG_GL_PROJECTION_MATRIX = 5;
147
CG_GL_TEXTURE_MATRIX = 6;
148
CG_GL_MODELVIEW_PROJECTION_MATRIX = 7;
153
(******************************************************************************
154
*** Profile Functions
155
*****************************************************************************)
157
function cgGLIsProfileSupported(profile: TCGprofile): TCGbool; cdecl; external CgGLlibrary;
159
procedure cgGLEnableProfile(profile: TCGprofile); cdecl; external CgGLlibrary;
160
procedure cgGLDisableProfile(profile: TCGprofile); cdecl; external CgGLlibrary;
162
function cgGLGetLatestProfile(profile_type: TCGGLenum): TCGprofile; cdecl; external CgGLlibrary;
163
procedure cgGLSetOptimalOptions(profile: TCGprofile); cdecl; external CgGLlibrary;
165
(******************************************************************************
166
*** Program Managment Functions
167
*****************************************************************************)
169
procedure cgGLLoadProgram(_program: PCGprogram); cdecl; external CgGLlibrary;
170
function cgGLIsProgramLoaded(_program: PCGprogram): TCGbool; cdecl; external CgGLlibrary;
171
procedure cgGLBindProgram(_program: PCGprogram); cdecl; external CgGLlibrary;
172
procedure cgGLUnbindProgram(profile: TCGprofile); cdecl; external CgGLlibrary;
173
function cgGLGetProgramID(_program: PCGprogram): GLuint; cdecl; external CgGLlibrary;
175
(******************************************************************************
176
*** Parameter Managment Functions
177
*****************************************************************************)
179
procedure cgGLSetParameter1f(param: PCGparameter; x: Single); cdecl; external CgGLlibrary;
181
procedure cgGLSetParameter2f(param: PCGparameter; x, y: Single); cdecl; external CgGLlibrary;
183
procedure cgGLSetParameter3f(param: PCGparameter; x, y, z: Single); cdecl; external CgGLlibrary;
185
procedure cgGLSetParameter4f(param: PCGparameter; x, y, z, w: Single); cdecl; external CgGLlibrary;
187
procedure cgGLSetParameter1fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
189
procedure cgGLSetParameter2fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
191
procedure cgGLSetParameter3fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
193
procedure cgGLSetParameter4fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
195
procedure cgGLSetParameter1d(param: PCGparameter; x: Double); cdecl; external CgGLlibrary;
197
procedure cgGLSetParameter2d(param: PCGparameter; x, y: Double); cdecl; external CgGLlibrary;
199
procedure cgGLSetParameter3d(param: PCGparameter; x, y, z: Double); cdecl; external CgGLlibrary;
201
procedure cgGLSetParameter4d(param: PCGparameter; x, y, z, w: Double); cdecl; external CgGLlibrary;
203
procedure cgGLSetParameter1dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
205
procedure cgGLSetParameter2dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
207
procedure cgGLSetParameter3dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
209
procedure cgGLSetParameter4dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
211
procedure cgGLGetParameter1f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
213
procedure cgGLGetParameter2f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
215
procedure cgGLGetParameter3f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
217
procedure cgGLGetParameter4f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
219
procedure cgGLGetParameter1d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
221
procedure cgGLGetParameter2d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
223
procedure cgGLGetParameter3d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
225
procedure cgGLGetParameter4d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
227
procedure cgGLSetParameterArray1f(param: PCGparameter;
228
offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
230
procedure cgGLSetParameterArray2f(param: PCGparameter;
231
offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
233
procedure cgGLSetParameterArray3f(param: PCGparameter;
234
offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
236
procedure cgGLSetParameterArray4f(param: PCGparameter;
237
offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
239
procedure cgGLSetParameterArray1d(param: PCGparameter;
240
offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
242
procedure cgGLSetParameterArray2d(param: PCGparameter;
243
offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
245
procedure cgGLSetParameterArray3d(param: PCGparameter;
246
offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
248
procedure cgGLSetParameterArray4d(param: PCGparameter;
249
offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
251
procedure cgGLGetParameterArray1f(param: PCGparameter;
252
offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
254
procedure cgGLGetParameterArray2f(param: PCGparameter;
255
offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
257
procedure cgGLGetParameterArray3f(param: PCGparameter;
258
offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
260
procedure cgGLGetParameterArray4f(param: PCGparameter;
261
offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
263
procedure cgGLGetParameterArray1d(param: PCGparameter;
264
offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
266
procedure cgGLGetParameterArray2d(param: PCGparameter;
267
offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
269
procedure cgGLGetParameterArray3d(param: PCGparameter;
270
offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
272
procedure cgGLGetParameterArray4d(param: PCGparameter;
273
offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
275
procedure cgGLSetParameterPointer(param: PCGparameter; fsize: GLint;
276
_type: TGLenum; stride: GLsizei; const _pointer: Pointer); cdecl; external CgGLlibrary;
278
procedure cgGLEnableClientState(param: PCGparameter); cdecl; external CgGLlibrary;
279
procedure cgGLDisableClientState(param: PCGparameter); cdecl; external CgGLlibrary;
281
(******************************************************************************
282
*** Matrix Parameter Managment Functions
283
*****************************************************************************)
285
procedure cgGLSetMatrixParameterdr(param: PCGparameter; const matrix: PDouble); cdecl; external CgGLlibrary;
286
procedure cgGLSetMatrixParameterfr(param: PCGparameter; const matrix: PSingle); cdecl; external CgGLlibrary;
287
procedure cgGLSetMatrixParameterdc(param: PCGparameter; const matrix: PDouble); cdecl; external CgGLlibrary;
288
procedure cgGLSetMatrixParameterfc(param: PCGparameter; const matrix: PSingle); cdecl; external CgGLlibrary;
290
procedure cgGLGetMatrixParameterdr(param: PCGparameter; matrix: PDouble); cdecl; external CgGLlibrary;
291
procedure cgGLGetMatrixParameterfr(param: PCGparameter; matrix: PSingle); cdecl; external CgGLlibrary;
292
procedure cgGLGetMatrixParameterdc(param: PCGparameter; matrix: PDouble); cdecl; external CgGLlibrary;
293
procedure cgGLGetMatrixParameterfc(param: PCGparameter; matrix: PSingle); cdecl; external CgGLlibrary;
295
procedure cgGLSetStateMatrixParameter(param: PCGparameter;
296
matrix: TCGGLenum; transform: TCGGLenum); cdecl; external CgGLlibrary;
298
procedure cgGLSetMatrixParameterArrayfc(param: PCGparameter;
299
offset, nelements: Longint; const matrices: PSingle); cdecl; external CgGLlibrary;
301
procedure cgGLSetMatrixParameterArrayfr(param: PCGparameter;
302
offset, nelements: Longint; const matrices: PSingle); cdecl; external CgGLlibrary;
304
procedure cgGLSetMatrixParameterArraydc(param: PCGparameter;
305
offset, nelements: Longint; const matrices: PDouble); cdecl; external CgGLlibrary;
307
procedure cgGLSetMatrixParameterArraydr(param: PCGparameter;
308
offset, nelements: Longint; const matrices: PDouble); cdecl; external CgGLlibrary;
310
procedure cgGLGetMatrixParameterArrayfc(param: PCGparameter;
311
offset, nelements: Longint; matrices: PSingle); cdecl; external CgGLlibrary;
313
procedure cgGLGetMatrixParameterArrayfr(param: PCGparameter;
314
offset, nelements: Longint; matrices: PSingle); cdecl; external CgGLlibrary;
316
procedure cgGLGetMatrixParameterArraydc(param: PCGparameter;
317
offset, nelements: Longint; matrices: PDouble); cdecl; external CgGLlibrary;
319
procedure cgGLGetMatrixParameterArraydr(param: PCGparameter;
320
offset, nelements: Longint; matrices: PDouble); cdecl; external CgGLlibrary;
322
(******************************************************************************
323
*** Texture Parameter Managment Functions
324
*****************************************************************************)
326
procedure cgGLSetTextureParameter(param: PCGparameter; texobj: TGLuint); cdecl; external CgGLlibrary;
327
function cgGLGetTextureParameter(param: PCGparameter): TGLuint; cdecl; external CgGLlibrary;
328
procedure cgGLEnableTextureParameter(param: PCGparameter); cdecl; external CgGLlibrary;
329
procedure cgGLDisableTextureParameter(param: PCGparameter); cdecl; external CgGLlibrary;
330
function cgGLGetTextureEnum(param: PCGparameter): TGLenum; cdecl; external CgGLlibrary;
331
procedure cgGLSetManageTextureParameters(ctx: PCGcontext; flag: TCGbool); cdecl; external CgGLlibrary;
332
function cgGLGetManageTextureParameters(ctx: PCGcontext): TCGbool; cdecl; external CgGLlibrary;