Je devine que vous voulez essentiellement des lignes de graisse? Permet de supposer que la ligne est spécifiée par deux points (x0, y0)
et (x1, y1)
nous avons alors:
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();
Puisque vous utilisez OpenGL ES Je suppose que vous devrez convertir le rendu en mode immédiat (glBegin
, glEnd
, etc.) à glDrawElements
. Vous devrez également convertir le quad en deux triangles. Une dernière chose, je suis un peu fatigué et incertain si le quad résultant est dans le sens antihoraire ou dans le sens des aiguilles d'une montre, donc tour de l'arrachement de la face arrière lorsque vous essayez cela (glDisable(GL_CULL)
).
attention, IBM a breveté! http://www.forbes.com/asap/2002/0624/044.html –
qui est fou ... les lignes de graisse devraient être libres pour tout le monde – Mel
Je peux avoir foiré expliquant ceci ici. La ligne est au milieu du rectangle. Donc, imaginez un rectangle avec une ligne de coupe dans la moitié de la longueur, pas en diagonale – Mel