Tôi đoán về cơ bản bạn muốn dòng chất béo? Hãy giả định rằng dòng được xác định bởi hai điểm (x0, y0)
và (x1, y1)
sau đó chúng ta có:
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();
Vì bạn đang sử dụng OpenGL ES Tôi đoán bạn sẽ phải chuyển đổi chế độ dựng hình ngay lập tức (glBegin
, glEnd
, vv) để glDrawElements
. Bạn cũng sẽ phải chuyển đổi quad thành hai tam giác.
Một điều cuối cùng, tôi hơi mệt mỏi và không chắc chắn nếu kết quả quad là ngược chiều kim đồng hồ hoặc chiều kim đồng hồ để quay ngược lại khi bạn thử cái này (glDisable(GL_CULL)
).
Nguồn
2009-12-20 21:53:46
coi chừng, IBM đã cấp bằng sáng chế đó! http://www.forbes.com/asap/2002/0624/044.html –
đó là điên ... dòng chất béo nên được miễn phí cho tất cả mọi người – Mel
Tôi có thể đã sai lầm giải thích điều này ở đây. Đường thẳng nằm ở giữa hình chữ nhật. Vì vậy, hãy tưởng tượng một hình chữ nhật với một đường cắt nó một nửa theo chiều dọc, không chéo – Mel