X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=gl_backend.h;h=0a35233621018c4c26ccc3381f40e34d4a8d0c41;hb=90c25c516ee8ba2b285e10f31896e4c0ceb29185;hp=76ff5ba3e87b4c2701f3111d81c12211cdbe7bfc;hpb=7fd79071d59a0cd0cd40ba401235643f578c8ecc;p=xonotic%2Fdarkplaces.git diff --git a/gl_backend.h b/gl_backend.h index 76ff5ba3..0a352336 100644 --- a/gl_backend.h +++ b/gl_backend.h @@ -28,8 +28,10 @@ void R_Viewport_InitCubeSideView(r_viewport_t *v, const matrix4x4_t *cameramatri void R_Viewport_InitRectSideView(r_viewport_t *v, const matrix4x4_t *cameramatrix, int side, int size, int border, float nearclip, float farclip, const float *nearplane); void R_SetViewport(const r_viewport_t *v); void R_GetViewport(r_viewport_t *v); +void GL_Finish(void); void GL_BlendFunc(int blendfunc1, int blendfunc2); +void GL_BlendEquationSubtract(qboolean negated); void GL_DepthMask(int state); void GL_DepthTest(int state); void GL_DepthFunc(int state); @@ -39,6 +41,7 @@ void R_SetStencil(qboolean enable, int writemask, int fail, int zfail, int zpass void GL_PolygonOffset(float planeoffset, float depthoffset); void GL_CullFace(int state); void GL_AlphaTest(int state); +void GL_AlphaToCoverage(qboolean state); void GL_ColorMask(int r, int g, int b, int a); void GL_Color(float cr, float cg, float cb, float ca); void GL_ActiveTexture(unsigned int num); @@ -50,6 +53,7 @@ void GL_ReadPixelsBGRA(int x, int y, int width, int height, unsigned char *outpi int R_Mesh_CreateFramebufferObject(rtexture_t *depthtexture, rtexture_t *colortexture, rtexture_t *colortexture2, rtexture_t *colortexture3, rtexture_t *colortexture4); void R_Mesh_DestroyFramebufferObject(int fbo); void R_Mesh_ResetRenderTargets(void); +void R_Mesh_SetMainRenderTargets(void); void R_Mesh_SetRenderTargets(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture, rtexture_t *colortexture2, rtexture_t *colortexture3, rtexture_t *colortexture4); unsigned int GL_Backend_CompileProgram(int vertexstrings_count, const char **vertexstrings_list, int geometrystrings_count, const char **geometrystrings_list, int fragmentstrings_count, const char **fragmentstrings_list); @@ -87,11 +91,6 @@ qboolean R_Mesh_PrepareVertices_Mesh_Unlock(void); // if this returns false, you void R_Mesh_PrepareVertices_Mesh_Arrays(int numvertices, const float *vertex3f, const float *svector3f, const float *tvector3f, const float *normal3f, const float *color4f, const float *texcoordtexture2f, const float *texcoordlightmap2f); void R_Mesh_PrepareVertices_Mesh(int numvertices, const r_vertexmesh_t *vertex, const r_meshbuffer_t *buffer); -r_vertexbouncelight_t *R_Mesh_PrepareVertices_BounceLight_Lock(int numvertices); -qboolean R_Mesh_PrepareVertices_BounceLight_Unlock(void); -void R_Mesh_PrepareVertices_BounceLight_Arrays(int numvertices, const float *vertex3f, const float *color4f, const float *texcoord4f); -void R_Mesh_PrepareVertices_BounceLight(int numvertices, const r_vertexbouncelight_t *vertex, const r_meshbuffer_t *vertexbuffer); - // sets up the requested vertex transform matrix void R_EntityMatrix(const matrix4x4_t *matrix); // sets the vertex array pointer @@ -112,6 +111,8 @@ void R_Mesh_TexMatrix(unsigned int unitnum, const matrix4x4_t *matrix); void R_Mesh_TexCombine(unsigned int unitnum, int combinergb, int combinealpha, int rgbscale, int alphascale); // set up a blank texture state (unbinds all textures, texcoord pointers, and resets combine settings) void R_Mesh_ResetTextureState(void); +// before a texture is freed, make sure there are no references to it +void R_Mesh_ClearBindingsForTexture(int texnum); // renders a mesh void R_Mesh_Draw(int firstvertex, int numvertices, int firsttriangle, int numtriangles, const int *element3i, const r_meshbuffer_t *element3i_indexbuffer, size_t element3i_bufferoffset, const unsigned short *element3s, const r_meshbuffer_t *element3s_indexbuffer, size_t element3s_bufferoffset);