Computer >> Máy Tính >  >> Lập trình >> C ++

Phương thức Z-Buffer hoặc Depth-Buffer trong C ++

Bộ đệm z còn được gọi là bộ đệm độ sâu là một phương pháp được sử dụng để phát hiện bề mặt ẩn.

Phát hiện bề mặt ẩn

Đối với bất kỳ hình ảnh nào có các vật thể và bề mặt trong suốt. Trong trường hợp này, các đối tượng nằm sau các đối tượng khác được ẩn đi. Để có hình ảnh phù hợp, chúng ta cần loại bỏ các bề mặt ẩn này là bắt buộc. Việc xác định được gọi là vấn đề bề mặt ẩn.

Trong z-buffer, chúng tôi sẽ so sánh các bề mặt trong trục z dưới dạng độ sâu.

Thuật toán

Step 1: initialize the depth of all pixel max.
   d(i,j) = infinity
Step 2: Initialize color for all pixels.
   c(i,j) = background-color
Step 3: for each pixel in polygon projection do,
   Step 3.1: find z i.e. depth of projection’s (i,j) pixel.
   Step 3.2: if z < d(i,j) do
      Step 3.2.1 : d(i,j) = z and c(i,j) = color of polygon.

Sử dụng phương pháp này từng pixel một, chúng ta sẽ tìm thấy độ sâu của từng pixel của mặt phẳng. Bề mặt nhỏ nhất quyết định màu sắc của đệm. Nói chung, tất cả các giá trị z đều gần với phạm vi [0,1].

z =0, mặt phẳng cắt sau và z =1, mặt phẳng cắt trước.

Một số điểm quan trọng của z-buffer

  • Không cần phân loại đa giác (mặt phẳng) ban đầu để áp dụng phương pháp z-buffer.

  • Z-buffer cung cấp kết quả nhanh chóng ngay cả khi số lượng mặt phẳng lớn.

  • Không cần so sánh đối tượng trong phương thức z-buffer.

  • Các đối tượng ẩn không đa giác cũng có thể được phát hiện bằng phương pháp này.

  • Không cần cấu trúc dữ liệu bổ sung để lưu trữ và phân giải.

  • Có thể triển khai phần cứng để tăng tốc quá trình và được sử dụng tích cực trong việc giải quyết các máy trạm đồ họa.

  • Phương pháp này chỉ có thể áp dụng khi các đối tượng được xem xét là không trong suốt, tức là các đối tượng trong suốt có thể gây ra lỗi.

  • Vẽ bề mặt ẩn có thể là một quá trình tốn thời gian.