rs_graphics.rsh revision 09c67356bbeee0a97a20a06c95b66756838cb541
11b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams#ifndef __RS_GRAPHICS_RSH__ 21b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams#define __RS_GRAPHICS_RSH__ 31b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams 422fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams#include "rs_math.rsh" 551f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 651f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 77349547db61d2d458b31c074b902d56d082e5d84Jason Sams// Bind a ProgramFragment to the RS context. 87349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 97349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindProgramFragment(rs_program_fragment); 107349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 117349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindProgramStore(rs_program_store); 127349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 137349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindProgramVertex(rs_program_vertex); 147349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 157349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindProgramRaster(rs_program_raster); 16f2bcce71dc7a2328355ce779028904772a85cc5fJason Sams 177349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 187349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindSampler(rs_program_fragment, uint slot, rs_sampler); 197349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 207349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindTexture(rs_program_fragment, uint slot, rs_allocation); 2151f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 227349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 237349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgProgramVertexLoadProjectionMatrix(const rs_matrix4x4 *); 247349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 257349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgProgramVertexLoadModelMatrix(const rs_matrix4x4 *); 267349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 277349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgProgramVertexLoadTextureMatrix(const rs_matrix4x4 *); 2851f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 296445e5210c6d7f8689e94be9026153d017c9545bJason Samsextern void __attribute__((overloadable)) 3095333f998fd4a983f89e5128e85f6f710d200bd9Alex Sakhartchouk rsgProgramVertexGetProjectionMatrix(rs_matrix4x4 *); 3195333f998fd4a983f89e5128e85f6f710d200bd9Alex Sakhartchouk 3295333f998fd4a983f89e5128e85f6f710d200bd9Alex Sakhartchoukextern void __attribute__((overloadable)) 336445e5210c6d7f8689e94be9026153d017c9545bJason Sams rsgProgramFragmentConstantColor(rs_program_fragment, float, float, float, float); 346445e5210c6d7f8689e94be9026153d017c9545bJason Sams 357349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern uint __attribute__((overloadable)) 367349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgGetWidth(void); 377349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern uint __attribute__((overloadable)) 387349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgGetHeight(void); 3951f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 407349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 417349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgUploadToTexture(rs_allocation); 427349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 437349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgUploadToTexture(rs_allocation, uint mipLevel); 447349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 457349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgUploadToBufferObject(rs_allocation); 4651f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 477349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 487349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawRect(float x1, float y1, float x2, float y2, float z); 497349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 507349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawQuad(float x1, float y1, float z1, 517349547db61d2d458b31c074b902d56d082e5d84Jason Sams float x2, float y2, float z2, 527349547db61d2d458b31c074b902d56d082e5d84Jason Sams float x3, float y3, float z3, 537349547db61d2d458b31c074b902d56d082e5d84Jason Sams float x4, float y4, float z4); 547349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 557349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawQuadTexCoords(float x1, float y1, float z1, float u1, float v1, 567349547db61d2d458b31c074b902d56d082e5d84Jason Sams float x2, float y2, float z2, float u2, float v2, 577349547db61d2d458b31c074b902d56d082e5d84Jason Sams float x3, float y3, float z3, float u3, float v3, 587349547db61d2d458b31c074b902d56d082e5d84Jason Sams float x4, float y4, float z4, float u4, float v4); 597349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 607349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawSpriteScreenspace(float x, float y, float z, float w, float h); 6151f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 627349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 637349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawMesh(rs_mesh ism); 647349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 657349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawMesh(rs_mesh ism, uint primitiveIndex); 667349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 677349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawMesh(rs_mesh ism, uint primitiveIndex, uint start, uint len); 684e9a7a8ded109e16b163789274899447cef02642Alex Sakhartchouk 697349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 707349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgClearColor(float, float, float, float); 717349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 727349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgClearDepth(float); 7351f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 747349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 757349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawText(const char *, int x, int y); 767349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 777349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgDrawText(rs_allocation, int x, int y); 787349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 797349547db61d2d458b31c074b902d56d082e5d84Jason Sams rsgBindFont(rs_font); 809fc9f0375a92fe22fecb3782b18a5c6060a07290Alex Sakhartchoukextern void __attribute__((overloadable)) 819fc9f0375a92fe22fecb3782b18a5c6060a07290Alex Sakhartchouk rsgFontColor(float, float, float, float); 8209c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk// Returns the bounding box of the text relative to (0, 0) 8309c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk// Any of left, right, top, bottom could be NULL 8409c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchoukextern void __attribute__((overloadable)) 8509c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk rsgMeasureText(const char *, int *left, int *right, int *top, int *bottom); 8609c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchoukextern void __attribute__((overloadable)) 8709c67356bbeee0a97a20a06c95b66756838cb541Alex Sakhartchouk rsgMeasureText(rs_allocation, int *left, int *right, int *top, int *bottom); 88d3e0ad43dc758c409fc23d1893dab67b18520c24Alex Sakhartchouk 89ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchoukextern void __attribute__((overloadable)) 90ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk rsgMeshComputeBoundingBox(rs_mesh mesh, float *minX, float *minY, float *minZ, 91ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk float *maxX, float *maxY, float *maxZ); 92ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchoukvoid __attribute__((overloadable)) 93ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex SakhartchoukrsgMeshComputeBoundingBox(rs_mesh mesh, float3 *bBoxMin, float3 *bBoxMax) { 94ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk float x1, y1, z1, x2, y2, z2; 95ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk rsgMeshComputeBoundingBox(mesh, &x1, &y1, &z1, &x2, &y2, &z2); 96ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk bBoxMin->x = x1; 97ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk bBoxMin->y = y1; 98ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk bBoxMin->z = z1; 99ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk bBoxMax->x = x2; 100ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk bBoxMax->y = y2; 101ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk bBoxMax->z = z2; 102ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk} 103ba4aa5c768a498bc3fbb8cb5547b7a9ad6f4b771Alex Sakhartchouk 10422fa371bf64b8aae786acfe5d711af21afb13a93Jason Sams/////////////////////////////////////////////////////// 10551f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams// misc 1066445e5210c6d7f8689e94be9026153d017c9545bJason Sams 1076445e5210c6d7f8689e94be9026153d017c9545bJason Sams// Depricated 1087349547db61d2d458b31c074b902d56d082e5d84Jason Samsextern void __attribute__((overloadable)) 1097349547db61d2d458b31c074b902d56d082e5d84Jason Sams color(float, float, float, float); 11051f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 1111b937f5c0d66a65daf07a45554c98a9f2481b9baJason Sams#endif 11251f36ab783316b1c036bab4c3f7e0934dd564bd7Jason Sams 113