- byte alphaub;
- alphaub = bound(0, alpha, 255);
- transpolybegin(R_GetTexture(frame->texture), 0, R_GetTexture(frame->fogtexture), currententity->render.effects & EF_ADDITIVE ? TPOLYTYPE_ADD : TPOLYTYPE_ALPHA);
- transpolyvertub(origin[0] + frame->down * up[0] + frame->left * right[0], origin[1] + frame->down * up[1] + frame->left * right[1], origin[2] + frame->down * up[2] + frame->left * right[2], 0, 1, red, green, blue, alphaub);
- transpolyvertub(origin[0] + frame->up * up[0] + frame->left * right[0], origin[1] + frame->up * up[1] + frame->left * right[1], origin[2] + frame->up * up[2] + frame->left * right[2], 0, 0, red, green, blue, alphaub);
- transpolyvertub(origin[0] + frame->up * up[0] + frame->right * right[0], origin[1] + frame->up * up[1] + frame->right * right[1], origin[2] + frame->up * up[2] + frame->right * right[2], 1, 0, red, green, blue, alphaub);
- transpolyvertub(origin[0] + frame->down * up[0] + frame->right * right[0], origin[1] + frame->down * up[1] + frame->right * right[1], origin[2] + frame->down * up[2] + frame->right * right[2], 1, 1, red, green, blue, alphaub);
- transpolyend();
+ rmeshstate_t m;
+ memset(&m, 0, sizeof(m));
+ m.blendfunc1 = GL_SRC_ALPHA;
+ m.blendfunc2 = GL_ONE_MINUS_SRC_ALPHA;
+ if (additive)
+ m.blendfunc2 = GL_ONE;
+ m.tex[0] = texture;
+ R_Mesh_State(&m);
+
+ varray_texcoord[0][ 0] = 0;varray_texcoord[0][ 1] = 1;
+ varray_texcoord[0][ 4] = 0;varray_texcoord[0][ 5] = 0;
+ varray_texcoord[0][ 8] = 1;varray_texcoord[0][ 9] = 0;
+ varray_texcoord[0][12] = 1;varray_texcoord[0][13] = 1;
+ // FIXME: negate left and right in loader
+ varray_vertex[0] = origin[0] + frame->down * up[0] - frame->left * left[0];
+ varray_vertex[1] = origin[1] + frame->down * up[1] - frame->left * left[1];
+ varray_vertex[2] = origin[2] + frame->down * up[2] - frame->left * left[2];
+ varray_vertex[4] = origin[0] + frame->up * up[0] - frame->left * left[0];
+ varray_vertex[5] = origin[1] + frame->up * up[1] - frame->left * left[1];
+ varray_vertex[6] = origin[2] + frame->up * up[2] - frame->left * left[2];
+ varray_vertex[8] = origin[0] + frame->up * up[0] - frame->right * left[0];
+ varray_vertex[9] = origin[1] + frame->up * up[1] - frame->right * left[1];
+ varray_vertex[10] = origin[2] + frame->up * up[2] - frame->right * left[2];
+ varray_vertex[12] = origin[0] + frame->down * up[0] - frame->right * left[0];
+ varray_vertex[13] = origin[1] + frame->down * up[1] - frame->right * left[1];
+ varray_vertex[14] = origin[2] + frame->down * up[2] - frame->right * left[2];
+ GL_Color(red * r_colorscale, green * r_colorscale, blue * r_colorscale, alpha);
+ R_Mesh_Draw(4, 2, polygonelements);