AndroidNPatch.h 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //-----------------------------------------------------------------------------
  2. // Copyright (c) 2013 GarageGames, LLC
  3. //
  4. // Permission is hereby granted, free of charge, to any person obtaining a copy
  5. // of this software and associated documentation files (the "Software"), to
  6. // deal in the Software without restriction, including without limitation the
  7. // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  8. // sell copies of the Software, and to permit persons to whom the Software is
  9. // furnished to do so, subject to the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be included in
  12. // all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  19. // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  20. // IN THE SOFTWARE.
  21. //-----------------------------------------------------------------------------
  22. // AndroidNPatch.h
  23. //
  24. // mac specific implementation(s) of NPatch functionality
  25. // since each platform might use slightly diff methods to control.
  26. // current Mac NPatches is ATI TRUFORM implementation, accessed on OS9 via a
  27. // back door method. OSX tests for the ATIX extension.
  28. #if !defined(TORQUE_OS_MAC_OSX)
  29. #define AGLSETINT_NPATCH_FLAG ((unsigned long)500)
  30. #define AGLSETINT_NPATCH_LOD ((unsigned long)501)
  31. #define AGLSETINT_NPATCH_POINTINTERP ((unsigned long)502)
  32. #define AGLSETINT_NPATCH_NORMALINTERP ((unsigned long)503)
  33. #endif
  34. // for the moment, this seems to be the best roundup of
  35. // the npatch extensions on the PC.
  36. #ifndef GL_ATIX_pn_triangles
  37. #define GL_ATIX_pn_triangles 1
  38. #define GL_PN_TRIANGLES_ATIX 0x6090
  39. #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATIX 0x6091
  40. #define GL_PN_TRIANGLES_POINT_MODE_ATIX 0x6092
  41. #define GL_PN_TRIANGLES_NORMAL_MODE_ATIX 0x6093
  42. #define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATIX 0x6094
  43. #define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATIX 0x6095
  44. #define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATIX 0x6096
  45. #define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATIX 0x6097
  46. #define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATIX 0x6098
  47. #if defined(TORQUE_OS_MAC_OSX) // for the moment...
  48. extern void glPNTrianglesiATIX(GLenum pname, GLint param);
  49. extern void glPNTrianglesfATIX(GLenum pname, GLfloat param);
  50. #endif
  51. #endif
  52. typedef void (*PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param);
  53. //typedef void (APIENTRY *PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param);
  54. #define GL_NPATCH_EXT_STRING "GL_ATIX_pn_triangles"
  55. #define GL_NPATCH_SETINT_STRING "glPNTrianglesiATIX"
  56. typedef PFNGLPNTRIANGLESIATIPROC PFNNPatchSetInt;
  57. #define GETINT_NPATCH_MAX_LEVEL GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATIX
  58. #define GL_NPATCH_FLAG GL_PN_TRIANGLES_ATIX
  59. #define SETINT_NPATCH_LOD GL_PN_TRIANGLES_TESSELATION_LEVEL_ATIX
  60. #define SETINT_NPATCH_POINTINTERP GL_PN_TRIANGLES_POINT_MODE_ATIX
  61. #define SETINT_NPATCH_NORMALINTERP GL_PN_TRIANGLES_NORMAL_MODE_ATIX
  62. #define NPATCH_POINTINTERP_MIN GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATIX
  63. #define NPATCH_POINTINTERP_MAX GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATIX
  64. #define NPATCH_NORMALINTERP_MIN GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATIX
  65. #define NPATCH_NORMALINTERP_MAX GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATIX