2012-01-09 50 views
9

Tôi đang thiết lập ngữ cảnh OpenGL 3.2 Core trên Mac OS X. Tôi muốn có thể vẽ một số màu đen dày thích trên màn hình. Trong phiên bản mở rộng của OpenGL, tôi chỉ có thể đặtOpenGL 3.2 Cấu hình cốt lõi glLineWidth

glLineWidth(10.0f); 

và tôi sẽ có đường rộng 10 pixel. Tuy nhiên, khi tôi kiểm tra phạm vi chiều rộng của dòng trong 3.2 Lõi

GLint range[2]; 
glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range); 
glGetIntegerv(GL_SMOOTH_LINE_WIDTH_RANGE, range); 

Tôi nhận được các giá trị của 1 cho Đường kẻ biệt và 0-1 cho đường trơn. Làm thế nào tôi có thể tạo ra một dòng rộng 10,0 pixel trong không gian màn hình? Có một cách đơn giản để vẽ này khác hơn là làm cho mỗi dòng phân khúc một hình chữ nhật?

Trả lời

7

Sử dụng OpenGL hồ sơ 3.2 lõi, gọi glLineWidth với giá trị lớn hơn 1.0 đưa ra một lỗi INVALID_VALUE (gọi glGetError để chứng minh điều đó).

Chắc chắn bạn có thể nhận được kết quả mong muốn bằng cách xác định quad cần thiết để vẽ đường.

Tôi nghĩ rằng bạn sẽ có thể tạo ra quads từ từ điểm dòng: hey, một dòng lớn hơn là một quad! Có lẽ bạn có thể sử dụng techinques như this để có được kết quả mong muốn của mình.

Điều quan trọng là: thay vì dựa vào LineWidth, bạn cung cấp cho một đơn vị quad làm đầu vào (4 đỉnh bằng dải tam giác), sau đó chuyển đổi các đỉnh vào bên trong bóng đổ đi tới đồng phục phù hợp.

Có thể một cách tiếp cận khác sẽ được hiển thị bằng cách sử dụng trình đổ bóng hình: tạo quad từ điểm. Tuy nhiên, tôi không chắc chắn về điểm này. Tôi không biết nếu một shader hình học (chỉ khi nó khả thi, tất nhiên) sẽ là cách tiếp cận tốt nhất: chi phí vẽ một dải đường bằng cách sử dụng một quad sẽ là thiết lập đồng phục đổ bóng cho mỗi dòng soạn dải.

+0

Dường như cách tốt nhất/duy nhất để thực hiện điều này là hai vẽ ête hình học đầy đủ thông qua hình học ban đầu hoặc trình đổ bóng hình học. – user1139069

1

Điều này có thể tùy thuộc vào loại hình chiếu bạn đã thiết lập. Bạn đang sử dụng ma trận chiếu hình ảnh hoặc phối cảnh?

Tôi nghĩ rằng nếu bạn không sử dụng phép chiếu chính xác, sự rasterisation cuối cùng của nguyên thủy sẽ phụ thuộc vào khoảng cách của đối tượng (ma trận mô hình) từ máy ảnh (ma trận xem).

Cheers

+0

Tôi đang sử dụng phép chiếu chính tả. – user1139069

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