cgGL.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. /*
  2. *
  3. * Copyright (c) 2002-2009, NVIDIA Corporation.
  4. *
  5. *
  6. *
  7. * NVIDIA Corporation("NVIDIA") supplies this software to you in consideration
  8. * of your agreement to the following terms, and your use, installation,
  9. * modification or redistribution of this NVIDIA software constitutes
  10. * acceptance of these terms. If you do not agree with these terms, please do
  11. * not use, install, modify or redistribute this NVIDIA software.
  12. *
  13. *
  14. *
  15. * In consideration of your agreement to abide by the following terms, and
  16. * subject to these terms, NVIDIA grants you a personal, non-exclusive license,
  17. * under NVIDIA's copyrights in this original NVIDIA software (the "NVIDIA
  18. * Software"), to use, reproduce, modify and redistribute the NVIDIA
  19. * Software, with or without modifications, in source and/or binary forms;
  20. * provided that if you redistribute the NVIDIA Software, you must retain the
  21. * copyright notice of NVIDIA, this notice and the following text and
  22. * disclaimers in all such redistributions of the NVIDIA Software. Neither the
  23. * name, trademarks, service marks nor logos of NVIDIA Corporation may be used
  24. * to endorse or promote products derived from the NVIDIA Software without
  25. * specific prior written permission from NVIDIA. Except as expressly stated
  26. * in this notice, no other rights or licenses express or implied, are granted
  27. * by NVIDIA herein, including but not limited to any patent rights that may be
  28. * infringed by your derivative works or by other works in which the NVIDIA
  29. * Software may be incorporated. No hardware is licensed hereunder.
  30. *
  31. *
  32. *
  33. * THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
  34. * WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
  35. * WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
  36. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION
  37. * EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS.
  38. *
  39. *
  40. *
  41. * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
  42. * EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST
  43. * PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  44. * PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE,
  45. * REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE,
  46. * HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING
  47. * NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED
  48. * OF THE POSSIBILITY OF SUCH DAMAGE.
  49. *
  50. */
  51. #ifndef _cggl_h
  52. #define _cggl_h
  53. #include <Cg/cg.h>
  54. #ifdef _WIN32
  55. # ifndef APIENTRY /* From Win32's <windef.h> */
  56. # define CGGL_APIENTRY_DEFINED
  57. # if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) || defined(__BORLANDC__) || defined(__LCC__)
  58. # define APIENTRY __stdcall
  59. # else
  60. # define APIENTRY
  61. # endif
  62. # endif
  63. # ifndef WINGDIAPI /* From Win32's <wingdi.h> and <winnt.h> */
  64. # define CGGL_WINGDIAPI_DEFINED
  65. # define WINGDIAPI __declspec(dllimport)
  66. # endif
  67. #endif /* _WIN32 */
  68. /* Set up for either Win32 import/export/lib. */
  69. #ifndef CGGL_API
  70. # ifdef CGGL_EXPORTS
  71. # ifdef _WIN32
  72. # define CGGL_API __declspec(dllexport)
  73. # elif defined(__GNUC__) && __GNUC__>=4
  74. # define CGGL_API __attribute__ ((visibility("default")))
  75. # elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
  76. # define CGGL_API __global
  77. # else
  78. # define CGGL_API
  79. # endif
  80. # else
  81. # define CGGL_API
  82. # endif
  83. #endif
  84. #ifndef CGGLENTRY
  85. # ifdef _WIN32
  86. # define CGGLENTRY __cdecl
  87. # else
  88. # define CGGLENTRY
  89. # endif
  90. #endif
  91. #ifdef __APPLE__
  92. #include <OpenGL/gl.h>
  93. #else
  94. #include <GL/gl.h>
  95. #endif
  96. #ifdef __cplusplus
  97. extern "C" {
  98. #endif
  99. /*****************************************************************************/
  100. /*** cgGL Type Definitions ***/
  101. /*****************************************************************************/
  102. typedef enum
  103. {
  104. CG_GL_MATRIX_IDENTITY = 0,
  105. CG_GL_MATRIX_TRANSPOSE = 1,
  106. CG_GL_MATRIX_INVERSE = 2,
  107. CG_GL_MATRIX_INVERSE_TRANSPOSE = 3,
  108. CG_GL_MODELVIEW_MATRIX,
  109. CG_GL_PROJECTION_MATRIX,
  110. CG_GL_TEXTURE_MATRIX,
  111. CG_GL_MODELVIEW_PROJECTION_MATRIX,
  112. CG_GL_VERTEX,
  113. CG_GL_FRAGMENT,
  114. CG_GL_GEOMETRY
  115. } CGGLenum;
  116. #ifndef CGGL_EXPLICIT
  117. /******************************************************************************
  118. *** Profile Functions
  119. *****************************************************************************/
  120. CGGL_API CGbool CGGLENTRY cgGLIsProfileSupported(CGprofile profile);
  121. CGGL_API void CGGLENTRY cgGLEnableProfile(CGprofile profile);
  122. CGGL_API void CGGLENTRY cgGLDisableProfile(CGprofile profile);
  123. CGGL_API CGprofile CGGLENTRY cgGLGetLatestProfile(CGGLenum profile_type);
  124. CGGL_API void CGGLENTRY cgGLSetOptimalOptions(CGprofile profile);
  125. CGGL_API char const ** CGGLENTRY cgGLGetOptimalOptions(CGprofile profile);
  126. /******************************************************************************
  127. *** Program Managment Functions
  128. *****************************************************************************/
  129. CGGL_API void CGGLENTRY cgGLLoadProgram(CGprogram program);
  130. CGGL_API void CGGLENTRY cgGLUnloadProgram(CGprogram program);
  131. CGGL_API CGbool CGGLENTRY cgGLIsProgramLoaded(CGprogram program);
  132. CGGL_API void CGGLENTRY cgGLBindProgram(CGprogram program);
  133. CGGL_API void CGGLENTRY cgGLUnbindProgram(CGprofile profile);
  134. CGGL_API GLuint CGGLENTRY cgGLGetProgramID(CGprogram program);
  135. /******************************************************************************
  136. *** Parameter Managment Functions
  137. *****************************************************************************/
  138. CGGL_API void CGGLENTRY cgGLSetParameter1f(CGparameter param,
  139. float x);
  140. CGGL_API void CGGLENTRY cgGLSetParameter2f(CGparameter param,
  141. float x,
  142. float y);
  143. CGGL_API void CGGLENTRY cgGLSetParameter3f(CGparameter param,
  144. float x,
  145. float y,
  146. float z);
  147. CGGL_API void CGGLENTRY cgGLSetParameter4f(CGparameter param,
  148. float x,
  149. float y,
  150. float z,
  151. float w);
  152. CGGL_API void CGGLENTRY cgGLSetParameter1fv(CGparameter param, const float *v);
  153. CGGL_API void CGGLENTRY cgGLSetParameter2fv(CGparameter param, const float *v);
  154. CGGL_API void CGGLENTRY cgGLSetParameter3fv(CGparameter param, const float *v);
  155. CGGL_API void CGGLENTRY cgGLSetParameter4fv(CGparameter param, const float *v);
  156. CGGL_API void CGGLENTRY cgGLSetParameter1d(CGparameter param,
  157. double x);
  158. CGGL_API void CGGLENTRY cgGLSetParameter2d(CGparameter param,
  159. double x,
  160. double y);
  161. CGGL_API void CGGLENTRY cgGLSetParameter3d(CGparameter param,
  162. double x,
  163. double y,
  164. double z);
  165. CGGL_API void CGGLENTRY cgGLSetParameter4d(CGparameter param,
  166. double x,
  167. double y,
  168. double z,
  169. double w);
  170. CGGL_API void CGGLENTRY cgGLSetParameter1dv(CGparameter param, const double *v);
  171. CGGL_API void CGGLENTRY cgGLSetParameter2dv(CGparameter param, const double *v);
  172. CGGL_API void CGGLENTRY cgGLSetParameter3dv(CGparameter param, const double *v);
  173. CGGL_API void CGGLENTRY cgGLSetParameter4dv(CGparameter param, const double *v);
  174. CGGL_API void CGGLENTRY cgGLGetParameter1f(CGparameter param, float *v);
  175. CGGL_API void CGGLENTRY cgGLGetParameter2f(CGparameter param, float *v);
  176. CGGL_API void CGGLENTRY cgGLGetParameter3f(CGparameter param, float *v);
  177. CGGL_API void CGGLENTRY cgGLGetParameter4f(CGparameter param, float *v);
  178. CGGL_API void CGGLENTRY cgGLGetParameter1d(CGparameter param, double *v);
  179. CGGL_API void CGGLENTRY cgGLGetParameter2d(CGparameter param, double *v);
  180. CGGL_API void CGGLENTRY cgGLGetParameter3d(CGparameter param, double *v);
  181. CGGL_API void CGGLENTRY cgGLGetParameter4d(CGparameter param, double *v);
  182. CGGL_API void CGGLENTRY cgGLSetParameterArray1f(CGparameter param,
  183. long offset,
  184. long nelements,
  185. const float *v);
  186. CGGL_API void CGGLENTRY cgGLSetParameterArray2f(CGparameter param,
  187. long offset,
  188. long nelements,
  189. const float *v);
  190. CGGL_API void CGGLENTRY cgGLSetParameterArray3f(CGparameter param,
  191. long offset,
  192. long nelements,
  193. const float *v);
  194. CGGL_API void CGGLENTRY cgGLSetParameterArray4f(CGparameter param,
  195. long offset,
  196. long nelements,
  197. const float *v);
  198. CGGL_API void CGGLENTRY cgGLSetParameterArray1d(CGparameter param,
  199. long offset,
  200. long nelements,
  201. const double *v);
  202. CGGL_API void CGGLENTRY cgGLSetParameterArray2d(CGparameter param,
  203. long offset,
  204. long nelements,
  205. const double *v);
  206. CGGL_API void CGGLENTRY cgGLSetParameterArray3d(CGparameter param,
  207. long offset,
  208. long nelements,
  209. const double *v);
  210. CGGL_API void CGGLENTRY cgGLSetParameterArray4d(CGparameter param,
  211. long offset,
  212. long nelements,
  213. const double *v);
  214. CGGL_API void CGGLENTRY cgGLGetParameterArray1f(CGparameter param,
  215. long offset,
  216. long nelements,
  217. float *v);
  218. CGGL_API void CGGLENTRY cgGLGetParameterArray2f(CGparameter param,
  219. long offset,
  220. long nelements,
  221. float *v);
  222. CGGL_API void CGGLENTRY cgGLGetParameterArray3f(CGparameter param,
  223. long offset,
  224. long nelements,
  225. float *v);
  226. CGGL_API void CGGLENTRY cgGLGetParameterArray4f(CGparameter param,
  227. long offset,
  228. long nelements,
  229. float *v);
  230. CGGL_API void CGGLENTRY cgGLGetParameterArray1d(CGparameter param,
  231. long offset,
  232. long nelements,
  233. double *v);
  234. CGGL_API void CGGLENTRY cgGLGetParameterArray2d(CGparameter param,
  235. long offset,
  236. long nelements,
  237. double *v);
  238. CGGL_API void CGGLENTRY cgGLGetParameterArray3d(CGparameter param,
  239. long offset,
  240. long nelements,
  241. double *v);
  242. CGGL_API void CGGLENTRY cgGLGetParameterArray4d(CGparameter param,
  243. long offset,
  244. long nelements,
  245. double *v);
  246. CGGL_API void CGGLENTRY cgGLSetParameterPointer(CGparameter param,
  247. GLint fsize,
  248. GLenum type,
  249. GLsizei stride,
  250. const GLvoid *pointer);
  251. CGGL_API void CGGLENTRY cgGLEnableClientState(CGparameter param);
  252. CGGL_API void CGGLENTRY cgGLDisableClientState(CGparameter param);
  253. /******************************************************************************
  254. *** Matrix Parameter Managment Functions
  255. *****************************************************************************/
  256. CGGL_API void CGGLENTRY cgGLSetMatrixParameterdr(CGparameter param,
  257. const double *matrix);
  258. CGGL_API void CGGLENTRY cgGLSetMatrixParameterfr(CGparameter param,
  259. const float *matrix);
  260. CGGL_API void CGGLENTRY cgGLSetMatrixParameterdc(CGparameter param,
  261. const double *matrix);
  262. CGGL_API void CGGLENTRY cgGLSetMatrixParameterfc(CGparameter param,
  263. const float *matrix);
  264. CGGL_API void CGGLENTRY cgGLGetMatrixParameterdr(CGparameter param, double *matrix);
  265. CGGL_API void CGGLENTRY cgGLGetMatrixParameterfr(CGparameter param, float *matrix);
  266. CGGL_API void CGGLENTRY cgGLGetMatrixParameterdc(CGparameter param, double *matrix);
  267. CGGL_API void CGGLENTRY cgGLGetMatrixParameterfc(CGparameter param, float *matrix);
  268. CGGL_API void CGGLENTRY cgGLSetStateMatrixParameter(CGparameter param,
  269. CGGLenum matrix,
  270. CGGLenum transform);
  271. CGGL_API void CGGLENTRY cgGLSetMatrixParameterArrayfc(CGparameter param,
  272. long offset,
  273. long nelements,
  274. const float *matrices);
  275. CGGL_API void CGGLENTRY cgGLSetMatrixParameterArrayfr(CGparameter param,
  276. long offset,
  277. long nelements,
  278. const float *matrices);
  279. CGGL_API void CGGLENTRY cgGLSetMatrixParameterArraydc(CGparameter param,
  280. long offset,
  281. long nelements,
  282. const double *matrices);
  283. CGGL_API void CGGLENTRY cgGLSetMatrixParameterArraydr(CGparameter param,
  284. long offset,
  285. long nelements,
  286. const double *matrices);
  287. CGGL_API void CGGLENTRY cgGLGetMatrixParameterArrayfc(CGparameter param,
  288. long offset,
  289. long nelements,
  290. float *matrices);
  291. CGGL_API void CGGLENTRY cgGLGetMatrixParameterArrayfr(CGparameter param,
  292. long offset,
  293. long nelements,
  294. float *matrices);
  295. CGGL_API void CGGLENTRY cgGLGetMatrixParameterArraydc(CGparameter param,
  296. long offset,
  297. long nelements,
  298. double *matrices);
  299. CGGL_API void CGGLENTRY cgGLGetMatrixParameterArraydr(CGparameter param,
  300. long offset,
  301. long nelements,
  302. double *matrices);
  303. /******************************************************************************
  304. *** Texture Parameter Managment Functions
  305. *****************************************************************************/
  306. CGGL_API void CGGLENTRY cgGLSetTextureParameter(CGparameter param, GLuint texobj);
  307. CGGL_API GLuint CGGLENTRY cgGLGetTextureParameter(CGparameter param);
  308. CGGL_API void CGGLENTRY cgGLEnableTextureParameter(CGparameter param);
  309. CGGL_API void CGGLENTRY cgGLDisableTextureParameter(CGparameter param);
  310. CGGL_API GLenum CGGLENTRY cgGLGetTextureEnum(CGparameter param);
  311. CGGL_API void CGGLENTRY cgGLSetManageTextureParameters(CGcontext ctx, CGbool flag);
  312. CGGL_API CGbool CGGLENTRY cgGLGetManageTextureParameters(CGcontext ctx);
  313. CGGL_API void CGGLENTRY cgGLSetupSampler(CGparameter param, GLuint texobj);
  314. CGGL_API void CGGLENTRY cgGLRegisterStates(CGcontext);
  315. CGGL_API void CGGLENTRY cgGLEnableProgramProfiles( CGprogram program );
  316. CGGL_API void CGGLENTRY cgGLDisableProgramProfiles( CGprogram program );
  317. /******************************************************************************
  318. *** Misc Functions
  319. *****************************************************************************/
  320. CGGL_API void CGGLENTRY cgGLSetDebugMode( CGbool debug );
  321. /******************************************************************************
  322. *** Buffer Functions
  323. *****************************************************************************/
  324. CGGL_API CGbuffer CGGLENTRY cgGLCreateBuffer(CGcontext context, int size, const void *data, GLenum bufferUsage);
  325. CGGL_API GLuint CGGLENTRY cgGLGetBufferObject(CGbuffer buffer);
  326. #endif
  327. #ifdef __cplusplus
  328. }
  329. #endif
  330. #ifdef CGGL_APIENTRY_DEFINED
  331. # undef CGGL_APIENTRY_DEFINED
  332. # undef APIENTRY
  333. #endif
  334. #ifdef CGGL_WINGDIAPI_DEFINED
  335. # undef CGGL_WINGDIAPI_DEFINED
  336. # undef WINGDIAPI
  337. #endif
  338. #endif
粤ICP备19079148号