Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Phương pháp A-Buffer trong C/C++


Kỹ thuật A-Buffer (anti-aliased/area-averaged/accumulation buffer) trong đồ họa máy tính: cơ chế phát hiện mặt ẩn đơn giản cho máy ảo bộ nhớ trung bình. Mở rộng thuật toán depth-buffer (Z-buffer). Z-buffer chỉ dùng cho vật thể đục, A-buffer hỗ trợ vật thể trong suốt. Dù tốn bộ nhớ hơn, A-buffer kết hợp đúng màu bề mặt khác nhau.

Là hậu duệ của Z-buffer, mỗi vị trí buffer tham chiếu linked list các bề mặt. Cấu trúc dữ liệu chính: accumulation buffer.

Mỗi vị trí A-buffer chứa 2 trường:

  • Trường cường độ (Intensity) hoặc dữ liệu bề mặt (Surface data)
  • Trường độ sâu (Depth)

Depth field lưu số thực dương/âm. Surface data field lưu con trỏ linked list các bề mặt đóng góp pixel hoặc thông tin cường độ bề mặt.

Nếu depth >= 0: số lưu là độ sâu bề mặt đơn lẻ che pixel. Trường cường độ lưu thành phần RGB, màu bề mặt tại điểm đó và % bao phủ pixel.

Nếu depth < 0: nhiều bề mặt đóng góp cường độ pixel. Trường cường độ lưu con trỏ linked list dữ liệu bề mặt.

A-buffer tốn kém hơn Z-buffer do cần nhiều bộ nhớ hơn. Dùng độ sâu và độ mờ (opacity) xác định màu cuối cùng của pixel.

Surface buffer trong A-buffer gồm:

  • Surface Identifier
  • Depth
  • Phần trăm bao phủ diện tích
  • Tham số độ mờ (Opacity)
  • Con trỏ bề mặt tiếp theo
  • Thành phần cường độ RGB

Ưu điểm khác: cung cấp anti-aliasing ngoài những gì Z-buffer làm.