Khung dây OpenGL


18

Không, tôi không tìm kiếm glPolygonMode. Tôi đang tìm kiếm một phương thức, có thể là một shader GLSL sẽ tạo ra khung hình dây kiểu retro cho các đối tượng. Bất kỳ đề xuất?

Một cái gì đó giống như Vector Tanks đã có.

http://toucharcade.com/wp-content/uploads/2009/01/picture-111-300x204.png

Tốt nhất là giải pháp cũng nên hoạt động trên OpenGL ES 2.0.

Bất kỳ gợi ý và gợi ý (miễn là không NULL) đánh giá cao!

Câu trả lời:



5

Tôi rất muốn giới thiệu sử dụng kết cấu, như Dave nói. Nó có thể là một cái gì đó của một nỗi đau, nhưng nó sẽ cung cấp hiệu suất tốt hơn nhiều, tôi nghĩ.

Bạn có thể thử tìm kiếm để phát hiện cạnh thuật toán . Nếu bạn tạo các mắt lưới của mình bằng cách sử dụng màu đỉnh với màu sắc rắn và giá trị alpha trung bình (để có độ trong suốt nhẹ), sau đó sử dụng trình tạo bóng phát hiện cạnh, nó có thể trông đủ tốt. Nó sẽ không hoàn toàn giống nhau, nhưng bạn có thể thích nó nhiều hơn nữa; hoặc có thể không.

Mặt khác, bạn có thể đang xem giải pháp hai lượt, vẽ đa giác mờ (một lần nữa, đặt màu đỉnh thành màu đơn sắc với giá trị alpha trung bình), sau đó đặt glPolygonMode (GL_LINE) và điều chỉnh glLineWidth như mong muốn (có thể dựa trên đối tượng khoảng cách) và vẽ các đa giác một lần nữa.

Hơi muộn một chút và tôi đang gặp khó khăn khi đọc qua điều này, nhưng một cuộc thảo luận trên diễn đàn chỉ ra bản PDF này: Kết xuất khung dây một lần . Tôi xin lỗi nếu nó không liên quan.


+1: sẽ dễ dàng hơn nếu tôi tìm cách tạo họa tiết bằng cách nào đó. Không thể sử dụng glPolygonMode do nhắm mục tiêu OpenGL ES (iStuff) sau này.
Kornel Kisielewicz

2

Tôi biết đó có thể không phải là những gì bạn theo đuổi, nhưng có vẻ như Vector Tanks chỉ sử dụng các mô hình kết cấu. Kết cấu cho giao diện khung dây, nó chạy trên iPod touch của tôi không hỗ trợ trình đổ bóng.


Tôi biết, tôi biết, nhưng tôi cũng có thể dán hình ảnh của Subversion và nó hoàn toàn không sử dụng họa tiết (AFAIK)
Kornel Kisielewicz

2

Cách duy nhất tôi thấy nó được thực hiện là với các kết cấu có độ phân giải cao, chủ yếu là màu đen, chẳng hạn như các họa tiết trong Tron 2.0. Hoạ tiết của chúng gần như phổ biến hoặc là một màu đen phẳng với viền dày, màu hoặc kết cấu nhiễu Perlin đơn giản.

Họ đã áp dụng một số xử lý hậu kỳ đơn giản để đạt được hiệu ứng phát sáng.


+1: Tôi biết bài viết này, nhưng cảm ơn vì đã nhắc nhở - đó thực sự là một bài viết tốt (và giúp đỡ với vấn đề thứ hai tôi gặp phải - phát sáng).
Kornel Kisielewicz

1

Bạn có thể thử một số loại chức năng khoảng cách đơn giản trong pixel shader. Có lẽ một cái gì đó như tọa độ barycentric (lưu trữ RGB khác nhau ở các đỉnh và rasteriser sẽ làm hầu hết công việc cho bạn).

Sau đó, trình đổ bóng pixel của bạn sẽ có thông tin cần thiết về vị trí của đa giác pixel hiện tại - gần một đỉnh, gần một cạnh hoặc ở giữa ...

Tôi nghi ngờ trong thực tế, nó sẽ dễ dàng hơn để kết cấu nó mặc dù.


1

Làm thế nào về điều này: Lấy mô hình của bạn, và vát các cạnh bạn muốn xuất hiện dưới dạng phác thảo. Tô màu các khuôn mặt được tạo ra với màu xanh lục đục, trong khi tất cả các khuôn mặt cũ là màu xanh lục mờ.

Điều này không yêu cầu sử dụng các shader pixel nào cả. (Trên thực tế, không có kết cấu; chỉ có màu mặt.) Nó yêu cầu một số tiền xử lý mô hình từ phía bạn, điều này có thể hoặc không phải là một vấn đề.

Bạn sẽ không thể nhìn thấy đường viền khi bề mặt vát vuông góc với khung nhìn. Nếu điều này làm phiền bạn, bạn có thể đùn bề mặt vát ra một chút, tô màu cho phần đùn như bạn sẽ có góc xiên. Bạn có thể chơi xung quanh với các mức độ vát và đùn khác nhau để tạo ra các đường mỏng hơn và dày hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.