|
|
@@ -64,19 +64,19 @@ static void cull_tri( struct prim_stage *stage, |
|
|
|
struct prim_header *header ) |
|
|
|
{ |
|
|
|
/* Window coords: */ |
|
|
|
GLfloat *v0 = (GLfloat *)&(header->v[0]->data[0]); |
|
|
|
GLfloat *v1 = (GLfloat *)&(header->v[1]->data[0]); |
|
|
|
GLfloat *v2 = (GLfloat *)&(header->v[2]->data[0]); |
|
|
|
const GLfloat *v0 = header->v[0]->data[0]; |
|
|
|
const GLfloat *v1 = header->v[1]->data[0]; |
|
|
|
const GLfloat *v2 = header->v[2]->data[0]; |
|
|
|
|
|
|
|
/* edge vectors e = v0 - v2, f = v1 - v2 */ |
|
|
|
GLfloat ex = v0[0] - v2[0]; |
|
|
|
GLfloat ey = v0[1] - v2[1]; |
|
|
|
GLfloat fx = v1[0] - v2[0]; |
|
|
|
GLfloat fy = v1[1] - v2[1]; |
|
|
|
|
|
|
|
/* det = cross(e,f).z */ |
|
|
|
header->det = ex * fy - ey * fx; |
|
|
|
|
|
|
|
_mesa_printf("%s %f\n", __FUNCTION__, header->det ); |
|
|
|
|
|
|
|
if (header->det != 0) { |
|
|
|
/* non-zero area */ |
|
|
|
GLuint mode = (header->det < 0) ? PIPE_WINDING_CW : PIPE_WINDING_CCW; |