Phông chữ dựa trên vector so với phông chữ bitmap trong trò chơi (2d)?


7

Tôi biết rằng nhiều trò chơi đang sử dụng phông chữ bitmap. Đâu là lợi thế cho việc hiển thị / thao tác phông chữ dựa trên vectơ khi so sánh với phông chữ bitmap và trong trường hợp nào chúng sẽ quan trọng nhất?

Thích tập trung vào các trò chơi 2d khi trả lời câu hỏi này.

Nếu có liên quan, vui lòng bao gồm các ví dụ cho các trò chơi bằng cách sử dụng một trong hai cách tiếp cận.

BIÊN TẬP: Vui lòng bao gồm sở thích cá nhân của bạn nếu bạn có kinh nghiệm về vấn đề này.

Một số yếu tố bạn có thể xem xét:

  • số lượng văn bản được sử dụng trong trò chơi
  • chia tỷ lệ văn bản
  • phủ glyphs và khử răng cưa
  • chất lượng kết xuất chung
  • màu chữ và kiểu dáng
  • yêu cầu giao diện người dùng
  • nội địa hóa / unicode
  • văn bản gói và định dạng
  • triển khai đa nền tảng
  • 2d vs 3d

Lý lịch:

Tôi đang phát triển một trò chơi khối rơi đơn giản trong 2d, nhắm mục tiêu cho pc. Tôi muốn thêm nhãn văn bản cho các nút cấp độ, điểm số và menu. Tôi đang sử dụng SFML sử dụng FreeType trong nội bộ, vì vậy các tính năng dựa trên vector dễ dàng có sẵn cho dự án của tôi.

Theo quan điểm của tôi, kích thước phông chữ trong các trò chơi đơn giản thường không thay đổi và phông chữ bitmap sẽ dễ dàng hơn cho các mối quan tâm đa nền tảng (định dạng phông chữ và chất lượng hiển thị phông chữ). Nhưng tôi không chắc chắn nếu tôi thiếu một số điểm quan trọng ở đây, đặc biệt là vì tôi muốn đánh bóng ngoại hình của trò chơi cuối cùng.


2
Lưu ý quan trọng: SFML sử dụng FreeType để tải phông chữ, nhưng sau đó nó kết xuất lại thành kết cấu, do đó kết xuất thực tế được thực hiện bằng phông chữ bitmap. Điều này cung cấp cho bạn một kết hợp của những ưu và nhược điểm của cả hai phong cách.
jv42

1
@ jv42: Chủ yếu, nó cung cấp cho bạn những nhược điểm.


1
@JoeWreschnig cũng có, ngoại trừ tốc độ kết xuất và thời gian cần thiết để bắt đầu.
jv42

Mặc dù vậy, tất cả các trò chơi chuyên nghiệp mà tôi đã làm việc trên các ảnh bitmap được tạo đã sử dụng, vì đó là kỹ thuật duy nhất có sẵn hoặc do đó nghệ sĩ đồ họa có thể điều chỉnh chúng chủ yếu.
jv42

Câu trả lời:


7

Phông chữ bitmap

Ưu điểm:

  • Có thể được tích hợp vào bất kỳ cơ sở mã hiện có nào, cho dù đó là OpenGL, DirectX, DirectDraw hay thậm chí GDI +.

  • Nhanh. Sử dụng tập bản đồ kết cấu, bạn có thể hiển thị tất cả văn bản của mình trong một lần duy nhất.

  • Nghệ sĩ kiểm soát. Kết cấu nền có thể được tạo theo thủ tục (hiển thị kiểu phông chữ thành kết cấu) hoặc chúng có thể được tải từ một tệp. Các nghệ sĩ sau đó có thể điều chỉnh giao diện của bất kỳ glyph nào mà không phá vỡ trò chơi.

Nhược điểm:

  • Chỉ hữu ích cho văn bản tĩnh. Khi bạn đang làm việc với văn bản hoạt hình (bật lên, xoay, chia tỷ lệ, v.v.), việc quản lý tất cả các kiểu phông chữ khác nhau sẽ trở nên khó khăn.

  • Ký ức hog. Nếu bạn muốn Arial 12, 16 và 24 in đậm, in nghiêng hoặc cả hai, sẽ trở thành 3 (kích thước) * 3 (kiểu) = 9 bản đồ kết cấu. Thêm một phông chữ khác và bạn có 18 bản đồ kết cấu khác nhau. Thêm hỗ trợ cho Unicode và bạn đang xem kết cấu 1024x1024 cho mỗi kích thước! Chủ yếu là một vấn đề trên nền tảng di động.

Phông chữ dựa trên vector

BIÊN TẬP: Tôi đã không làm rõ điều này, nhưng cách triển khai phổ biến cho các phông chữ dựa trên vectơ là hiển thị chúng thành tập bản đồ kết cấu và sử dụng chúng như một bitmap, mang lại cho bạn lợi thế tốc độ tương tự như phông chữ bitmap.

Ưu điểm:

  • Thao tác dễ dàng. Vì bạn đang raster giữa các điểm kiểm soát trên glyph, bạn có thể làm biến dạng các điểm kiểm soát đó theo bất kỳ cách nào bạn muốn. Rất linh hoạt cho các nghệ sĩ.

Nhược điểm:

  • Chậm. Khi tính toán các phép biến đổi, điều đó có nghĩa là bạn phải biến đổi từng điểm kiểm soát và rasterize một tập hợp các hình tam giác cho chúng.

  • Khó thực hiện. Rasterizing glyphs là khó khăn để có được đúng.

Làm thế nào để người khác làm điều này?

Hãy xem trang này:

http://www.microsoft.com/typography/OTSPEC/TTCH01.htm

Đây là cách Microsoft giải quyết nó cho Windows 95 trở lên. Về cơ bản:

  • Một nhà thiết kế phông chữ cung cấp một phác thảo (dựa trên vector)
  • Đối với mọi kích thước điểm (8, 10, 12, v.v.), một bộ hướng dẫn lắp lưới được thêm vào

Cung cấp cho bạn lợi thế của phông chữ dựa trên vector (thao tác dễ dàng) kết hợp với tốc độ của bitmap.

Cuối cùng, bạn có thể muốn xem qua tùy chọn thứ ba:

https://steamcdn-a.akamaihd.net/apps/valve/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf


3
Tào lao đây là tất cả mọi thứ tôi vừa gõ lên và hơn thế nữa, hơn là cửa sổ bật lên 'một câu trả lời mới' đáng sợ xuất hiện và câu trả lời tuyệt vời này xuất hiện ...! :)
Roy T.

Hôm nay bạn, ngày mai tôi. ;)
hiệp sĩ666

2
"Hướng dẫn lắp lưới" (thường được gọi là "gợi ý") là một trong những điều làm cho phông chữ vector chậm hiển thị. Họ cải thiện chất lượng hiển thị với chi phí hiệu suất hơn nữa.

1
"Kết xuất thành kết cấu là một tối ưu hóa." - Thực tế ngày nay, để hiển thị bất cứ điều gì bạn cần để kết xuất nó thành một kết cấu đầu tiên. Tôi không biết về bất kỳ trình kết xuất phông chữ TrueType nào tương thích với OpenGL mà không hiển thị kết cấu trước. (tức là họ sẽ cung cấp các điểm kiểm soát vào trình tạo bóng đỉnh và để trình tạo bóng phân mảnh xử lý rasterizing và gợi ý.) Có một số công việc thú vị trong việc để các trình tạo bóng đỉnh và phân đoạn xử lý các spline (không tương thích TT) nhưng nó không phổ biến và khá tiên tiến.

2
Những gì tôi đã làm được mô tả trong câu trả lời của tôi cho câu hỏi này là một bản sao. (Và khi tôi nói "đã làm" ý tôi là "bạn có thể vào một cửa hàng và mua trò chơi đang làm điều này", chứ không phải "Tôi đã đọc nó trong một cuốn sách một lần".)

1

Ưu điểm của việc sử dụng Phông chữ Vector / Kiểu thật so với phông chữ Bitmap là tính linh hoạt cao hơn trong ứng dụng: bạn có thể vẽ chúng ở bất kỳ kích thước nào, in nghiêng chúng, in đậm chúng, thêm một số hiệu ứng chuyển đổi lạ mắt, tất cả đều có chất lượng tối đa.

Có rất nhiều Phông chữ Vector chuyên nghiệp ngoài kia, nhiều trong số chúng có hàng ngàn glyph và nhiều siêu dữ liệu cho mỗi loại, làm cho nó rất có lợi cho việc xử lý hiển thị các chuỗi không phải mã ascii, hữu ích cho các bản dịch.

Sự khác biệt về hiệu suất sẽ chỉ hiển thị trong quá trình tải phông cho bạn bộ đệm glyphs một cách chính xác. (Mã kết xuất SFML hoàn toàn không được tối ưu hóa, tuy nhiên việc tải và lưu trữ glyph được thực hiện đúng cách.)

FreeType có trình rasterizer và trình tải phông riêng và không sử dụng các hệ thống, vì vậy chất lượng và định dạng phông chữ sẽ không phải là vấn đề.


Tôi có thể thấy quan điểm của bạn về tính linh hoạt. Nhưng tôi tưởng tượng có thể có sự khác biệt trong kết xuất phông chữ trên các nền tảng khác nhau khiến cho việc đạt được kích thước chính xác trên các nền tảng trở nên khó khăn. Với phông chữ bitmap bạn biết phông chữ sẽ trông giống hệt nhau và luôn chiếm cùng một lượng pixel.
jmp97

Không, Freetype giống nhau trên tất cả các nền tảng và thiết bị, nếu bạn sử dụng cùng một phông chữ và cùng kích thước, bạn sẽ nhận được kết quả tương tự. Bạn có cùng độ tin cậy.
API-Beast
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.