- float floats[36];
-
- _DrawQ_SetupAndProcessDrawFlag(flags, pic, a1*a2*a3*a4);
- if(!r_draw2d.integer && !r_draw2d_force)
- return;
-
-// R_Mesh_ResetTextureState();
- if (pic)
- {
- if (width == 0)
- width = pic->width;
- if (height == 0)
- height = pic->height;
- R_SetupShader_Generic(Draw_GetPicTexture(pic), NULL, GL_MODULATE, 1, (flags & (DRAWFLAGS_BLEND | DRAWFLAG_NOGAMMA)) ? false : true, true, false);
- }
- else
- R_SetupShader_Generic_NoTexture((flags & (DRAWFLAGS_BLEND | DRAWFLAG_NOGAMMA)) ? false : true, true);
-
- floats[2] = floats[5] = floats[8] = floats[11] = 0;
- floats[0] = floats[9] = x;
- floats[1] = floats[4] = y;
- floats[3] = floats[6] = x + width;
- floats[7] = floats[10] = y + height;
- floats[12] = s1;floats[13] = t1;
- floats[14] = s2;floats[15] = t2;
- floats[16] = s4;floats[17] = t4;
- floats[18] = s3;floats[19] = t3;
- floats[20] = r1;floats[21] = g1;floats[22] = b1;floats[23] = a1;
- floats[24] = r2;floats[25] = g2;floats[26] = b2;floats[27] = a2;
- floats[28] = r4;floats[29] = g4;floats[30] = b4;floats[31] = a4;
- floats[32] = r3;floats[33] = g3;floats[34] = b3;floats[35] = a3;
-
- R_Mesh_PrepareVertices_Generic_Arrays(4, floats, floats + 20, floats + 12);
- R_Mesh_Draw(0, 4, 0, 2, polygonelement3i, NULL, 0, polygonelement3s, NULL, 0);
-}
-
-void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags, qboolean hasalpha)
-{
- _DrawQ_Setup();
- if(!r_draw2d.integer && !r_draw2d_force)
- return;
- DrawQ_ProcessDrawFlag(flags, hasalpha);
-
-// R_Mesh_ResetTextureState();
- R_SetupShader_Generic(mesh->texture, NULL, GL_MODULATE, 1, (flags & DRAWFLAGS_BLEND) ? false : true, true, false);
-
- R_Mesh_PrepareVertices_Generic_Arrays(mesh->num_vertices, mesh->data_vertex3f, mesh->data_color4f, mesh->data_texcoord2f);
- R_Mesh_Draw(0, mesh->num_vertices, 0, mesh->num_triangles, mesh->data_element3i, NULL, 0, mesh->data_element3s, NULL, 0);
-}
-
-void DrawQ_LineLoop (drawqueuemesh_t *mesh, int flags)
-{
- _DrawQ_SetupAndProcessDrawFlag(flags, NULL, 1);
- if(!r_draw2d.integer && !r_draw2d_force)
- return;
-
- GL_Color(1,1,1,1);
- switch(vid.renderpath)
- {
- case RENDERPATH_GL11:
- case RENDERPATH_GL13:
- case RENDERPATH_GL20:
-#ifndef USE_GLES2
- {
- int num;
- CHECKGLERROR
- qglBegin(GL_LINE_LOOP);
- for (num = 0;num < mesh->num_vertices;num++)
- {
- if (mesh->data_color4f)
- GL_Color(mesh->data_color4f[num*4+0], mesh->data_color4f[num*4+1], mesh->data_color4f[num*4+2], mesh->data_color4f[num*4+3]);
- qglVertex2f(mesh->data_vertex3f[num*3+0], mesh->data_vertex3f[num*3+1]);
- }
- qglEnd();
- CHECKGLERROR
- }
-#endif
- break;
- case RENDERPATH_D3D9:
- //Con_DPrintf("FIXME D3D9 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- break;
- case RENDERPATH_D3D10:
- Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- break;
- case RENDERPATH_D3D11:
- Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- break;
- case RENDERPATH_SOFT:
- //Con_DPrintf("FIXME SOFT %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- break;
- case RENDERPATH_GLES1:
- case RENDERPATH_GLES2:
- //Con_DPrintf("FIXME GLES2 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- return;
- }
+ model_t *mod = CL_Mesh_UI();
+ msurface_t *surf;
+ int e0, e1, e2, e3;
+ if (!pic)
+ pic = Draw_CachePic("white");
+ // make sure pic is loaded - we don't use the texture here, Mod_Mesh_GetTexture looks up the skinframe by name
+ Draw_GetPicTexture(pic);
+ if (width == 0)
+ width = pic->width;
+ if (height == 0)
+ height = pic->height;
+ surf = Mod_Mesh_AddSurface(mod, Mod_Mesh_GetTexture(mod, pic->name, flags, pic->texflags, MATERIALFLAG_WALL | MATERIALFLAG_VERTEXCOLOR | MATERIALFLAG_ALPHAGEN_VERTEX | MATERIALFLAG_ALPHA | MATERIALFLAG_BLENDED | MATERIALFLAG_NOSHADOW), true);
+ e0 = Mod_Mesh_IndexForVertex(mod, surf, x , y , 0, 0, 0, -1, s1, t1, 0, 0, r1, g1, b1, a1);
+ e1 = Mod_Mesh_IndexForVertex(mod, surf, x + width, y , 0, 0, 0, -1, s2, t2, 0, 0, r2, g2, b2, a2);
+ e2 = Mod_Mesh_IndexForVertex(mod, surf, x + width, y + height, 0, 0, 0, -1, s4, t4, 0, 0, r4, g4, b4, a4);
+ e3 = Mod_Mesh_IndexForVertex(mod, surf, x , y + height, 0, 0, 0, -1, s3, t3, 0, 0, r3, g3, b3, a3);
+ Mod_Mesh_AddTriangle(mod, surf, e0, e1, e2);
+ Mod_Mesh_AddTriangle(mod, surf, e0, e2, e3);