# Frame structure wrt calls from the engine - (eng) SCR_UpdateScreen() - (eng) V_PreRender() - **(ref) R_BeginFrame()** - (eng) V_RenderView() - **(ref) GL_BackendStartFrame()** -- ref_gl only sets speeds string to empty here - (eng) loop over ref_params_t views - **(ref) GL_RenderFrame()** - (eng) ??? SV_DrawDebugTriangles() - **(ref) GL_BackendEndFrame()** -- ref_gl only produces speeds string here - (eng) V_PostRender() - **(ref) R_AllowFog(), R_Set2DMode(true)** - **(ref) R_DrawTileClear()** x N - (vgui) Paint() -> ??? - (eng) SCR_RSpeeds() - **(ref) R_SpeedsMessage()** - (eng) CL_DrawString() ... - **(ref) GL_SetRenderMode()** - **(ref) RefGetParm()** for texture resolution - **(ref) Color4ub()** - **(ref) R_DrawStretchPic()** - (eng) SRC_DrawNetGraph() - **(ref) many TriApi calls** -- 2D usage of triapi. we were not ready for this (maybe track R_Set2DMode()?) - **(ref) R_ShowTextures()** kekw - **(ref) VID_ScreenShot()** - **(ref) R_AllowFog(true)** - **(ref) R_EndFrame()**