supongo que básicamente desea que las líneas de grasa? Asumamos la línea se especifica por dos puntos (x0, y0)
y (x1, y1)
entonces tenemos:
float dx = x1 - x0; //delta x
float dy = y1 - y0; //delta y
float linelength = sqrtf(dx * dx + dy * dy);
dx /= linelength;
dy /= linelength;
//Ok, (dx, dy) is now a unit vector pointing in the direction of the line
//A perpendicular vector is given by (-dy, dx)
const float thickness = 5.0f; //Some number
const float px = 0.5f * thickness * (-dy); //perpendicular vector with lenght thickness * 0.5
const float py = 0.5f * thickness * dx;
glBegin(GL_QUADS);
glVertex2f(x0 + px, y0 + py);
glVertex2f(x1 + px, y1 + py);
glVertex2f(x1 - px, y1 - py);
glVertex2f(x0 - px, y0 - py);
glEnd();
Puesto que usted está usando OpenGL ES supongo que tendrá que convertir la prestación inmediata de modo (glBegin
, glEnd
, etc) a glDrawElements
. También tendrás que convertir el quad en dos triángulos.
Una última cosa, estoy un poco cansado e inseguro si el cuadrante resultante es en sentido antihorario o en el sentido de las agujas del reloj, así que voltea la ocultación de la cara posterior cuando pruebas esto (glDisable(GL_CULL)
).
mirar hacia fuera, que IBM ha patentado! http://www.forbes.com/asap/2002/0624/044.html –
que es una locura ... líneas de grasa deben ser libres para todos – Mel
I pueden tener mal estado explicando esto aquí. La línea está en el medio del rectángulo. Imagine un rectángulo con una línea que lo corte por la mitad longitudinalmente, no diagonal – Mel