Cg.GL.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. {******************************************************************************}
  2. {* *}
  3. {* Copyright (c) 2002, NVIDIA Corporation. *}
  4. {* *}
  5. {* Files: cgGL.h *}
  6. {* Content: NVIDIA Cg OpenGL interface include files *}
  7. {* *}
  8. {* NVIDIA "Cg" Release 1.2 ObjectPascal adaptation by Alexey Barkovoy *}
  9. {* E-Mail: [email protected] *}
  10. {* *}
  11. {* Modified: 14-Mar-2004 *}
  12. {* *}
  13. {* Latest version can be downloaded from: *}
  14. {* http://clootie.narod.ru *}
  15. {* http://developer.nvidia.com/object/cg_download.html *}
  16. {* *}
  17. {******************************************************************************}
  18. { }
  19. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  20. { }
  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 }
  25. { }
  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. }
  29. { }
  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. }
  39. { }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. { }
  42. {******************************************************************************}
  43. (*
  44. *
  45. * Copyright (c) 2002, NVIDIA Corporation.
  46. *
  47. *
  48. *
  49. * NVIDIA Corporation("NVIDIA") supplies this software to you in consideration
  50. * of your agreement to the following terms, and your use, installation,
  51. * modification or redistribution of this NVIDIA software constitutes
  52. * acceptance of these terms. If you do not agree with these terms, please do
  53. * not use, install, modify or redistribute this NVIDIA software.
  54. *
  55. * In consideration of your agreement to abide by the following terms, and
  56. * subject to these terms, NVIDIA grants you a personal, non-exclusive license,
  57. * under NVIDIARs copyrights in this original NVIDIA software (the "NVIDIA
  58. * Software"), to use, reproduce, modify and redistribute the NVIDIA
  59. * Software, with or without modifications, in source and/or binary forms;
  60. * provided that if you redistribute the NVIDIA Software, you must retain the
  61. * copyright notice of NVIDIA, this notice and the following text and
  62. * disclaimers in all such redistributions of the NVIDIA Software. Neither the
  63. * name, trademarks, service marks nor logos of NVIDIA Corporation may be used
  64. * to endorse or promote products derived from the NVIDIA Software without
  65. * specific prior written permission from NVIDIA. Except as expressly stated
  66. * in this notice, no other rights or licenses express or implied, are granted
  67. * by NVIDIA herein, including but not limited to any patent rights that may be
  68. * infringed by your derivative works or by other works in which the NVIDIA
  69. * Software may be incorporated. No hardware is licensed hereunder.
  70. *
  71. * THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
  72. * WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
  73. * WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
  74. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION
  75. * EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS.
  76. *
  77. * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
  78. * EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST
  79. * PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  80. * PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE,
  81. * REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE,
  82. * HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING
  83. * NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED
  84. * OF THE POSSIBILITY OF SUCH DAMAGE.
  85. *
  86. *)
  87. unit Cg.GL;
  88. interface
  89. uses
  90. {$IFDEF MSWINDOWS}
  91. Winapi.Windows,
  92. {$ENDIF}
  93. Cg.Import;
  94. const
  95. {$IFDEF MSWINDOWS}
  96. CgGLlibrary = 'cgGL.dll';
  97. {$ELSE}
  98. CgGLlibrary = 'libCgGL.so';
  99. {$ENDIF}
  100. (*****************************************************************************)
  101. (*** cgGL Type Definitions ***)
  102. (*****************************************************************************)
  103. type
  104. TCGGLenum = Cardinal;
  105. CGGLenum = TCGGLenum;
  106. const
  107. CG_GL_MATRIX_IDENTITY = 0;
  108. CG_GL_MATRIX_TRANSPOSE = 1;
  109. CG_GL_MATRIX_INVERSE = 2;
  110. CG_GL_MATRIX_INVERSE_TRANSPOSE = 3;
  111. CG_GL_MODELVIEW_MATRIX = 4;
  112. CG_GL_PROJECTION_MATRIX = 5;
  113. CG_GL_TEXTURE_MATRIX = 6;
  114. CG_GL_MODELVIEW_PROJECTION_MATRIX = 7;
  115. CG_GL_VERTEX = 8;
  116. CG_GL_FRAGMENT = 9;
  117. (******************************************************************************
  118. *** Profile Functions
  119. *****************************************************************************)
  120. function cgGLIsProfileSupported(profile: TCGprofile): TCGbool; cdecl; external CgGLlibrary;
  121. procedure cgGLEnableProfile(profile: TCGprofile); cdecl; external CgGLlibrary;
  122. procedure cgGLDisableProfile(profile: TCGprofile); cdecl; external CgGLlibrary;
  123. function cgGLGetLatestProfile(profile_type: TCGGLenum): TCGprofile; cdecl; external CgGLlibrary;
  124. procedure cgGLSetOptimalOptions(profile: TCGprofile); cdecl; external CgGLlibrary;
  125. (******************************************************************************
  126. *** Program Managment Functions
  127. *****************************************************************************)
  128. procedure cgGLLoadProgram(_program: PCGprogram); cdecl; external CgGLlibrary;
  129. function cgGLIsProgramLoaded(_program: PCGprogram): TCGbool; cdecl; external CgGLlibrary;
  130. procedure cgGLBindProgram(_program: PCGprogram); cdecl; external CgGLlibrary;
  131. procedure cgGLUnbindProgram(profile: TCGprofile); cdecl; external CgGLlibrary;
  132. function cgGLGetProgramID(_program: PCGprogram): Cardinal; cdecl; external CgGLlibrary;
  133. (******************************************************************************
  134. *** Parameter Managment Functions
  135. *****************************************************************************)
  136. procedure cgGLSetParameter1f(param: PCGparameter; x: Single); cdecl; external CgGLlibrary;
  137. procedure cgGLSetParameter2f(param: PCGparameter; x, y: Single); cdecl; external CgGLlibrary;
  138. procedure cgGLSetParameter3f(param: PCGparameter; x, y, z: Single); cdecl; external CgGLlibrary;
  139. procedure cgGLSetParameter4f(param: PCGparameter; x, y, z, w: Single); cdecl; external CgGLlibrary;
  140. procedure cgGLSetParameter1fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
  141. procedure cgGLSetParameter2fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
  142. procedure cgGLSetParameter3fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
  143. procedure cgGLSetParameter4fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
  144. procedure cgGLSetParameter1d(param: PCGparameter; x: Double); cdecl; external CgGLlibrary;
  145. procedure cgGLSetParameter2d(param: PCGparameter; x, y: Double); cdecl; external CgGLlibrary;
  146. procedure cgGLSetParameter3d(param: PCGparameter; x, y, z: Double); cdecl; external CgGLlibrary;
  147. procedure cgGLSetParameter4d(param: PCGparameter; x, y, z, w: Double); cdecl; external CgGLlibrary;
  148. procedure cgGLSetParameter1dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
  149. procedure cgGLSetParameter2dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
  150. procedure cgGLSetParameter3dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
  151. procedure cgGLSetParameter4dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
  152. procedure cgGLGetParameter1f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
  153. procedure cgGLGetParameter2f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
  154. procedure cgGLGetParameter3f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
  155. procedure cgGLGetParameter4f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
  156. procedure cgGLGetParameter1d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
  157. procedure cgGLGetParameter2d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
  158. procedure cgGLGetParameter3d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
  159. procedure cgGLGetParameter4d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
  160. procedure cgGLSetParameterArray1f(param: PCGparameter;
  161. offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
  162. procedure cgGLSetParameterArray2f(param: PCGparameter;
  163. offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
  164. procedure cgGLSetParameterArray3f(param: PCGparameter;
  165. offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
  166. procedure cgGLSetParameterArray4f(param: PCGparameter;
  167. offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
  168. procedure cgGLSetParameterArray1d(param: PCGparameter;
  169. offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
  170. procedure cgGLSetParameterArray2d(param: PCGparameter;
  171. offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
  172. procedure cgGLSetParameterArray3d(param: PCGparameter;
  173. offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
  174. procedure cgGLSetParameterArray4d(param: PCGparameter;
  175. offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
  176. procedure cgGLGetParameterArray1f(param: PCGparameter;
  177. offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
  178. procedure cgGLGetParameterArray2f(param: PCGparameter;
  179. offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
  180. procedure cgGLGetParameterArray3f(param: PCGparameter;
  181. offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
  182. procedure cgGLGetParameterArray4f(param: PCGparameter;
  183. offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
  184. procedure cgGLGetParameterArray1d(param: PCGparameter;
  185. offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
  186. procedure cgGLGetParameterArray2d(param: PCGparameter;
  187. offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
  188. procedure cgGLGetParameterArray3d(param: PCGparameter;
  189. offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
  190. procedure cgGLGetParameterArray4d(param: PCGparameter;
  191. offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
  192. procedure cgGLSetParameterPointer(param: PCGparameter; fsize: Integer;
  193. _type: Cardinal; stride: Integer; const _pointer: Pointer); cdecl; external CgGLlibrary;
  194. procedure cgGLEnableClientState(param: PCGparameter); cdecl; external CgGLlibrary;
  195. procedure cgGLDisableClientState(param: PCGparameter); cdecl; external CgGLlibrary;
  196. (******************************************************************************
  197. *** Matrix Parameter Managment Functions
  198. *****************************************************************************)
  199. procedure cgGLSetMatrixParameterdr(param: PCGparameter; const matrix: PDouble); cdecl; external CgGLlibrary;
  200. procedure cgGLSetMatrixParameterfr(param: PCGparameter; const matrix: PSingle); cdecl; external CgGLlibrary;
  201. procedure cgGLSetMatrixParameterdc(param: PCGparameter; const matrix: PDouble); cdecl; external CgGLlibrary;
  202. procedure cgGLSetMatrixParameterfc(param: PCGparameter; const matrix: PSingle); cdecl; external CgGLlibrary;
  203. procedure cgGLGetMatrixParameterdr(param: PCGparameter; matrix: PDouble); cdecl; external CgGLlibrary;
  204. procedure cgGLGetMatrixParameterfr(param: PCGparameter; matrix: PSingle); cdecl; external CgGLlibrary;
  205. procedure cgGLGetMatrixParameterdc(param: PCGparameter; matrix: PDouble); cdecl; external CgGLlibrary;
  206. procedure cgGLGetMatrixParameterfc(param: PCGparameter; matrix: PSingle); cdecl; external CgGLlibrary;
  207. procedure cgGLSetStateMatrixParameter(param: PCGparameter;
  208. matrix: TCGGLenum; transform: TCGGLenum); cdecl; external CgGLlibrary;
  209. procedure cgGLSetMatrixParameterArrayfc(param: PCGparameter;
  210. offset, nelements: Longint; const matrices: PSingle); cdecl; external CgGLlibrary;
  211. procedure cgGLSetMatrixParameterArrayfr(param: PCGparameter;
  212. offset, nelements: Longint; const matrices: PSingle); cdecl; external CgGLlibrary;
  213. procedure cgGLSetMatrixParameterArraydc(param: PCGparameter;
  214. offset, nelements: Longint; const matrices: PDouble); cdecl; external CgGLlibrary;
  215. procedure cgGLSetMatrixParameterArraydr(param: PCGparameter;
  216. offset, nelements: Longint; const matrices: PDouble); cdecl; external CgGLlibrary;
  217. procedure cgGLGetMatrixParameterArrayfc(param: PCGparameter;
  218. offset, nelements: Longint; matrices: PSingle); cdecl; external CgGLlibrary;
  219. procedure cgGLGetMatrixParameterArrayfr(param: PCGparameter;
  220. offset, nelements: Longint; matrices: PSingle); cdecl; external CgGLlibrary;
  221. procedure cgGLGetMatrixParameterArraydc(param: PCGparameter;
  222. offset, nelements: Longint; matrices: PDouble); cdecl; external CgGLlibrary;
  223. procedure cgGLGetMatrixParameterArraydr(param: PCGparameter;
  224. offset, nelements: Longint; matrices: PDouble); cdecl; external CgGLlibrary;
  225. (******************************************************************************
  226. *** Texture Parameter Managment Functions
  227. *****************************************************************************)
  228. procedure cgGLSetTextureParameter(param: PCGparameter; texobj: Cardinal); cdecl; external CgGLlibrary;
  229. function cgGLGetTextureParameter(param: PCGparameter): Cardinal; cdecl; external CgGLlibrary;
  230. procedure cgGLEnableTextureParameter(param: PCGparameter); cdecl; external CgGLlibrary;
  231. procedure cgGLDisableTextureParameter(param: PCGparameter); cdecl; external CgGLlibrary;
  232. function cgGLGetTextureEnum(param: PCGparameter): Cardinal; cdecl; external CgGLlibrary;
  233. procedure cgGLSetManageTextureParameters(ctx: PCGcontext; flag: TCGbool); cdecl; external CgGLlibrary;
  234. function cgGLGetManageTextureParameters(ctx: PCGcontext): TCGbool; cdecl; external CgGLlibrary;
  235. implementation //--------------------------------------------------------------
  236. end.