2010-01-07 20 views
5

Tôi có đoạn mã sau:glPolygonOffset() lỗi với dòng

glEnable(GL_POLYGON_OFFSET_LINE); 
glPolygonOffset(1,1); // or 40,40 etc... doesnt help at all 

Nhưng dòng vẫn là Z-fighting, là lỗi hoặc một cái gì đó chung này ...? Dòng của tôi dày 1,0f và tôi vẽ các đường cuối cùng trong cảnh.

Ngoài ra tôi có disable GL_ALPHA_TEST và GL_LINE_SMOOTH và kích hoạt GL_BLEND và GL_COLOR_LOGIC_OP

Edit: tôi đã cố gắng GL_POLYGON_OFFSET_FILL, nó không giúp đỡ.

Trả lời

12

GL_POLYGON_OFFSET_LINE chỉ hoạt động để hiển thị đa giác với glPolygonMode(GL_FRONT_AND_BACK, GL_LINE). Nếu bạn đang vẽ nguyên thủy với GL_LINES nó không hoạt động. Trong trường hợp này, bạn sẽ phải tự bù đắp các đỉnh.

+0

Ah, vì vậy tôi phải vẽ các đường với chế độ đa giác sau đó –

+0

@Newbie 'GL_TRIANGLES' và' GL_QUADS' hoạt động tốt. –

+0

Vẽ các đường như đa giác mỏng vô cùng sẽ không hoạt động tốt; GL tính toán bình thường và sử dụng nó để bù đắp các đỉnh. Trong trường hợp này, bình thường đối với đa giác bạn vẽ sẽ là một véc tơ 0 chiều dài. – Tarydon

4

Hãy thử bật GL_POLYGON_OFFSET_FILL. (Tôi cho rằng các đường có độ sâu chiến đấu với đa giác bạn đã kết xuất trước đó?)

+0

Bạn có thể chưa giải quyết được vấn đề của mình, nhưng bạn đã giải quyết được vấn đề của tôi, 2 năm sau đó. Cảm ơn! –

Các vấn đề liên quan