/* =========================================================================== Radiant masked occlusion culling bridge =========================================================================== */ #pragma once struct qglRadiantMOCClipVertex_t { float x; float y; float w; }; struct qglRadiantMOCStats_t { int occluderTriangles; int testedRects; int occludedRects; }; typedef void* qglMOCContext_t; qglMOCContext_t QGL_MOC_Create(); void QGL_MOC_Destroy(qglMOCContext_t context); bool QGL_MOC_BeginFrame(qglMOCContext_t context, int width, int height, float nearClip); void QGL_MOC_EndFrame(qglMOCContext_t context); bool QGL_MOC_IsActive(qglMOCContext_t context); void QGL_MOC_RenderTriangles(qglMOCContext_t context, const qglRadiantMOCClipVertex_t* verts, const unsigned int* indices, int numTriangles); bool QGL_MOC_TestTriangles(qglMOCContext_t context, const qglRadiantMOCClipVertex_t* verts, const unsigned int* indices, int numTriangles); void QGL_MOC_RenderIndexedTriangles(qglMOCContext_t context, const float* verts, const unsigned int* indices, int numTriangles, const float* modelToClipMatrix, int vertexStride, int yOffset, int zOffset); bool QGL_MOC_TestIndexedTriangles(qglMOCContext_t context, const float* verts, const unsigned int* indices, int numTriangles, const float* modelToClipMatrix, int vertexStride, int yOffset, int zOffset); bool QGL_MOC_TestRect(qglMOCContext_t context, float xmin, float ymin, float xmax, float ymax, float wmin); qglRadiantMOCStats_t QGL_MOC_GetStats(qglMOCContext_t context); bool QGL_RadiantMOC_BeginFrame(int width, int height, float nearClip); void QGL_RadiantMOC_EndFrame(); bool QGL_RadiantMOC_IsActive(); void QGL_RadiantMOC_RenderTriangles(const qglRadiantMOCClipVertex_t* verts, const unsigned int* indices, int numTriangles); bool QGL_RadiantMOC_TestTriangles(const qglRadiantMOCClipVertex_t* verts, const unsigned int* indices, int numTriangles); void QGL_RadiantMOC_RenderIndexedTriangles(const float* verts, const unsigned int* indices, int numTriangles, const float* modelToClipMatrix, int vertexStride, int yOffset, int zOffset); bool QGL_RadiantMOC_TestIndexedTriangles(const float* verts, const unsigned int* indices, int numTriangles, const float* modelToClipMatrix, int vertexStride, int yOffset, int zOffset); bool QGL_RadiantMOC_TestRect(float xmin, float ymin, float xmax, float ymax, float wmin); qglRadiantMOCStats_t QGL_RadiantMOC_GetStats();