Đây là một câu hỏi cũ, nhưng câu trả lời hiện tại không thực sự giải thích bạn sẽ sử dụng chúng để làm gì.
Đó là tất cả về tiết kiệm không gian. Và với các thuộc tính đỉnh, ít không gian hơn có thể có nghĩa là hiệu suất cao hơn (nếu bạn bị ràng buộc chuyển giao đỉnh).
Màu sắc thường không cần nhiều hơn 8 bit cho mỗi thành phần. Đôi khi bạn cần 16 bit, nếu đó là giá trị ánh sáng HDR hoặc thứ gì đó. Nhưng đối với các đặc điểm bề mặt (đó là những gì hầu hết các thuộc tính đỉnh), 8 bit là tốt. Vì vậy, byte chuẩn hóa không dấu là một định dạng đỉnh tốt.
Các tọa độ kết cấu không cần độ chính xác của dấu phẩy động 32 bit. Giá trị 16 bit từ [0, 1] là đủ. Vì vậy, quần short không dấu bình thường là một định dạng đỉnh hợp lý.
Định mức không bao giờ cần 32 bit chính xác. Họ chỉ đường. Các byte được chuẩn hóa 8 bit có xu hướng hơi nhỏ, nhưng hầu hết các giá trị chuẩn hóa 10 bit là đủ tốt trong hầu hết thời gian. OpenGL (3.3+) thậm chí cho phép bạn sử dụng các định mức 10 bit thông qua định dạng đóng gói 10/10/10/2 bit, được lưu trữ trong một số nguyên không dấu 32 bit.
Bạn thậm chí có thể chơi các trò chơi với các vị trí đỉnh, nếu bạn thấy mình cần nhiều bộ nhớ hơn.
Nếu không chuẩn hóa, bạn sẽ phải lãng phí các chu kỳ quý giá trong shader chia các thuộc tính byte cho 255.0. Tại sao làm điều này, khi phần cứng có thể làm điều đó miễn phí?