2014-12-20 16 views
6

Câu hỏi này phải làm với cách trình duyệt hiển thị toàn bộ trang dưới dạng hình ảnh lát gạch (và không phải là về hiển thị hình ảnh trong các trang.) Tôi quan tâm nhiều nhất đến chi phí bộ nhớ. Đó là sự hiểu biết của tôi rằng một trình duyệt như Chrome sẽ bố trí toàn bộ trang nhưng hiển thị các phần của trang nếu cần, trong các ô vuông nhỏ. Khi người dùng cuộn trang, chỉ các ô không tồn tại được hiển thị. Tạo luồng thường xảy ra trong một chuỗi nền, nhưng câu hỏi này không liên quan đến luồng.Làm cách nào để các trình duyệt hiện đại thực hiện kết xuất lát gạch (đặc biệt trong Direct2D) một cách hiệu quả?

Câu hỏi đặt ra là tổng dung lượng bộ nhớ của phương pháp này là bao nhiêu?

Giả sử màn hình là 1024x768 và một ô là 64x64 pixel. Vì vậy, màn hình là gạch 16x12. Hơn nữa, tôi giả sử mỗi ô là 32 bit trên mỗi pixel, Direct2D là nền tảng kết xuất và một Direct2D SwapChainPanel được sử dụng để thực hiện.

Trong một chu kỳ hiển thị đã cho, Chỉ một phần của tổng số (16x12) ô có khả năng được hiển thị. Tuy nhiên, con số có thể nhiều hơn một. Do đó

  1. Dường như với tôi rằng bitmap đầu 1024x768 thuận tiện nhất để hiển thị các ô hiện tại không hợp lệ.
  2. Các phần hợp lệ sau đó được sao chép vào bitmap thực tế của kích thước 64x64, để sử dụng trong bước tiếp theo và trong các chu kỳ hiển thị trong tương lai.
  3. Bitmap cuối cùng được hiển thị được tạo thành bằng cách đổ gạch thích hợp, một số trong đó có thể đã được tạo bởi chu kỳ hiển thị trước đó và một số trong chu trình hiển thị này. Bitmap cuối cùng này cũng là 1024x768.

Do đó, có vẻ như hai bitmap 32bpp của kích thước màn hình đầy đủ (1024x768) là cần thiết ngoài các ô xếp kề.

Câu hỏi:

  1. Đừng trình duyệt trên thực tế sử dụng 32 bit cho mỗi pixel, hoặc một cái gì đó thấp hơn?
  2. Bước (3) ở trên có cần thiết không, hoặc có cách nào để hiển thị trực tiếp các lát không có bitmap cuối cùng không?
  3. Có bất kỳ phân bổ bộ nhớ chính bổ sung nào mà tôi có thể đã bỏ lỡ (ví dụ: bằng GPU) không?

Số lượng bản sao trung gian là sự tinh tế đòi hỏi suy nghĩ cẩn thận, vì vậy tôi thực sự đánh giá cao câu trả lời chính xác. Không có đầu cơ, xin vui lòng.

Trả lời

-1

Với Chrome, tôi nghĩ đó không phải là triển khai trong công cụ hiển thị nhưng là trình duyệt giao diện người dùng. Tôi sử dụng CEF và đã sử dụng Awesomium bằng cả Chrome/Webkit/Blink. Bạn chỉ cần vượt qua một bitmap nơi dữ liệu được hiển thị, do đó nó là giao diện người dùng phải quyết định chiến lược tối ưu.

Tôi không nghĩ rằng bất kỳ ai sẽ thực hiện các lát nhỏ. Tôi giả sử họ là một cái gì đó giống như 256 x chiều rộng (trừ khi chiều rộng là đặc biệt lớn) sọc.

+0

Tại sao lại là downvote? Điều đó đúng. những gì tôi đã viết và OP là khó hiểu "gạch" trong một trình duyệt thực hiện với gạch trong trò chơi. – Lothar

Các vấn đề liên quan