Nếu bạn sử dụng một công cụ kết xuất phông chữ như FreeType, thì lỗi phổ biến nhất là kết xuất lại chuỗi mỗi khung. Điều này là vô nghĩa, bởi vì khi bạn kết xuất một chuỗi, nó thường sẽ ở trên màn hình không thay đổi trong ít nhất vài giây.
Khi bạn muốn hiển thị một văn bản, kết xuất văn bản đó thành một kết cấu một lần và sau đó vẽ kết cấu đó thay vì hiển thị lại văn bản. Khi bạn thực hiện việc này, chi phí kết xuất văn bản sẽ chỉ áp dụng lần đầu tiên bạn cần kết xuất một chuỗi đã cho với các cài đặt đã cho. Trên bất kỳ khung tiếp theo nào, chi phí hiển thị chuỗi đó cũng giống như khi vẽ bất kỳ sprite nào khác có kích thước đó.
Một giải pháp mà tôi thấy khá tiện dụng trong các dự án khác nhau là có một TextRenderingCache
lớp để quản lý kết xuất phông chữ được lưu trong bộ nhớ cache. Nó thường có một bảng băm với các chuỗi cài đặt kết xuất (phông chữ, màu sắc, kích thước, v.v.) làm khóa và kết cấu với kết xuất dưới dạng giá trị. Khi một kết xuất đã cho được yêu cầu từ lớp TextRenderingCache, nó sẽ kiểm tra xem nó đã có kết xuất đó chưa và nếu không thì nó sẽ tạo một kết xuất. Bỏ các kết xuất từ bản đồ băm không được sử dụng trong vài giây để tránh rò rỉ bộ nhớ là tùy chọn (một số trò chơi cần điều này, một số thì không).
Nhân tiện: FreeType đã đi kèm với một hệ thống bộ đệm kết xuất . Nhưng nó chỉ được sử dụng khi bạn sử dụng nó một cách rõ ràng.