nềnOpenGL phương pháp văn bản vẽ và thương mại-offs
tôi làm việc trên các trò chơi Bitfighter. Chúng tôi vẫn tương thích với OpenGL 1.1 và biên dịch cho OSX, Windows và Linux.
Chúng tôi sử dụng đồ họa vector cho mọi thứ, bao gồm hiển thị văn bản và thao tác. Chúng tôi sử dụng biến thể được sửa đổi một chút của 'FontStrokeRoman' từ GLUT, đây chỉ là một loạt các dòng tĩnh. Chúng tôi thích điều này vì nó có vẻ hoạt động rất tốt, dễ xoay/quy mô/thao tác. Chúng tôi cũng cho phép trò chuyện trong trò chơi để văn bản được vẽ khi đang di chuyển.
Vấn đề
Chúng tôi muốn sử dụng phông chữ hơn/khác nhau.
Chúng tôi đã tìm thấy một số phông chữ khác mà chúng tôi thích, nhưng tất cả chúng đều là phông chữ kiểu TTF được tạo thành đa giác (có đường cong, v.v.) thay vì nét hoặc gai. Này sẽ trả về một vài vấn đề:
- Chúng tôi sẽ phải sử dụng kết cấu (mà chúng tôi đã tránh được cho đến nay trong trò chơi)
- Họ không dễ dàng thay đổi kích thước/xoay/etc.
- Hiệu suất là ít hơn đáng kể (trên lý thuyết?)
Chúng tôi đã thử nghiệm chuyển đổi phông chữ TTF mảng điểm đa giác và sau đó triangulating điền. Tuy nhiên, điều này đã gây khó khăn cho việc hiển thị gợi ý/chống răng cưa độc đáo - có vẻ khó thực hiện trong trường hợp này.
Chúng tôi thậm chí còn thử nghiệm với các khung hình đa giác bằng cách sử dụng các thư viện như 'campskeleton', vì vậy chúng tôi có thể xuất ra một phông chữ vector-stroke (với nhiều thành công không tốt).
Chúng ta nên làm gì?
Tôi biết câu hỏi này có phần chung chung. Chúng tôi muốn giữ hiệu suất thao tác và văn bản nhưng có thể sử dụng phông chữ tốt hơn. Tôi mở cho bất kỳ đề xuất nào theo bất kỳ hướng nào.
Một số giải pháp có thể là câu trả lời như sau:
- Làm thế nào để chúng ta đúng anti-alias văn bản đa giác dựa trên và vẫn giữ hiệu suất?
- Làm họa tiết thực sự có hoạt động kém hơn mảng điểm tĩnh không? Có lẽ tôi có một giả thiết bị lỗi
- Phông chữ có thể được định cấu trúc được thay đổi kích thước/xoay một cách nhanh chóng?
- Có điều gì đó hoàn toàn khác?
Tôi có thể quan tâm đến việc xem xét vấn đề này. Bạn có thể đặt một số ví dụ về: 1) một trong các phông chữ hiện tại của bạn và cách mã hóa của nó trông giống như, 2) một trong các phông chữ bạn muốn sử dụng, 3) tùy chọn, ví dụ về các thử nghiệm không thành công của bạn. – meyumer
Phông chữ hiện tại của chúng tôi xuất phát từ GLUT. Nguồn: http://code.google.com/p/bitfighter/source/browse/zap/FontStrokeRoman.h. Chúng tôi muốn sử dụng orbitron: https://github.com/theleagueof/orbitron. Tôi không có một số thí nghiệm trên tôi vào lúc này. Một trong những nhà phát triển khác Watusimoto) có kết quả đầu ra của mọi thứ trên máy tính của mình – raptor
Quadured kết cấu là như vậy, nhanh hơn rất nhiều khi hiển thị văn bản phẳng trong OpenGL. Sử dụng libfreetype2; nó rất dễ dàng, sẽ tạo ra kết quả chất lượng cao và sẽ có hiệu suất cao hơn (với kết cấu atlases) so với glyphs đa giác chưa được kết cấu. Không thể vẽ văn bản có dấu vân tay chống bí danh hoặc (lordy) chất lượng theo cách bạn đang làm. –