Tôi cần vẽ đường viền xung quanh các đối tượng 2d trong không gian 3d. Tôi đã thử vẽ các đường xung quanh đối tượng (+ điểm để lấp đầy khoảng trống), nhưng do độ rộng của đường, một phần của nó (~ 50%) đã che đối tượng. Tôi đã cố gắng sử dụng bộ đệm stpson, để loại bỏ vấn đề này, nhưng tôi đã nhận được sth như thế này (đường viền là màu xanh lá cây):
http://goo.gl/OI5uc (xin lỗi tôi không thể đăng ảnh, vì danh tiếng của tôi)
Bạn có thể thấy (trong đó các điểm mũi tên), rằng một số phần của dòng nằm phía sau đối tượng và một số ở trên. Điều này thay đổi khi tôi di chuyển máy ảnh, nhưng luôn có một phần, đó là che nó. Đây là mã, mà tôi sử dụng để vẽ đối tượng:
glColorMask(1,1,1,1);
std::list<CObjectOnScene*>::iterator objIter=ptr->objects.begin(),objEnd=ptr->objects.end();
int countStencilBit=1;
while(objIter!=objEnd)
{
glColorMask(1,1,1,1);
glStencilFunc(GL_ALWAYS,countStencilBit,countStencilBit);
glStencilOp(GL_REPLACE,GL_KEEP,GL_REPLACE );
(*objIter)->DrawYourVertices();
glStencilFunc(GL_NOTEQUAL,countStencilBit,countStencilBit);
glStencilOp(GL_KEEP,GL_KEEP,GL_REPLACE);
(*objIter)->DrawYourBorder();
++objIter;
++countStencilBit;
}
Tôi đã thử các cài đặt khác nhau của bộ đệm stpson, nhưng tôi luôn cảm thấy như vậy. Đây là câu hỏi: 1.Am tôi cài đặt bộ đệm stpson sai?
2. Có cách nào đơn giản khác để tạo đường viền trên các đối tượng đó không?
Cảm ơn trước.
BIÊN TẬP:
1. Tôi không có quy tắc của các đối tượng.
2. Vật có thể lõm.
3. Tôi không thể sử dụng shader (xem bên dưới tại sao).