Tôi muốn hỏi để tham khảo. Tôi đã gặp một bài viết về cách tạo bóng trong các trò chơi. Tôi đang sử dụng canvas html5 (hiện không có webgl) với javascript cho các dự án của tôi.
Bài viết được đề cập ở trên được đặt tại http://willyg302.wordpress.com/2012/11/04/2d-visibility/ .
Tôi đã suy nghĩ nếu phương pháp này có thể sử dụng với canvas (không có webgl) và javascript?
Chính xác hơn, tôi có một vài hình được vẽ trên vải, một số trong số chúng được tạo phức tạp bằng cung và các phương pháp tương tự. Do đó, tôi không có cách mô phỏng làm thế nào để mô tả một hình dạng với một phương trình mà tôi chỉ có thể lưu trữ một vài tham số (tức là hình tròn được mô tả là centreX, centre, bán kính với những hình này tôi có thể dễ dàng vẽ nó nhưng với hình dạng phức tạp hơn tôi không thể Vì vậy, tôi không có thông tin như vậy) vì vậy tôi đã nghĩ đến việc lưu trữ toàn bộ dữ liệu canvas bằng pixel với context.getImageData.data, sau đó sử dụng phương thức được mô tả trong bài viết (chuyển đổi cực, ..., quay lại hệ thống cartesian) và đưa toàn bộ cảnh vào canvas với phương thức canvas.putImageData.
Nhưng trước khi thực sự áp dụng điều này, tôi muốn hỏi liệu thậm chí có thể với canvas (không có webgl) và javascript để tạo bóng động (nguồn sáng di chuyển trên màn hình) theo cách này mà không mất fps nặng (tôi có thể tưởng tượng phương pháp này hoạt động khá tốt đối với các đối tượng tĩnh nhưng thời điểm tôi cần thực hiện mỗi khi nguồn sáng di chuyển Tôi không chắc liệu javascript + canvas có thể xử lý việc này trong thời gian hợp lý hay không, đặc biệt là khi tôi tìm thấy thông tin mà putImageData và getImageData khá chậm)?
Hoặc nếu bất cứ ai đã cố gắng tạo bóng động theo cách khác nhau trong html5 + js, tôi cũng đánh giá cao đề xuất của bạn về những điều này (Tôi hiện đang làm theo cách tương tự như được mô tả trong http://ncase.me/sight-and- ánh sáng / , mặc dù tôi đang gặp một số rắc rối với hình dạng lõm :().
Điều này đang trở nên rất dài, tôi hy vọng tôi đã giải thích bản thân mình đủ tốt.
Cảm ơn bạn rất nhiều vì bất kỳ lời khuyên nào bạn có thể chia sẻ và tôi xin lỗi vì bài đăng của tôi đã phát triển quá lớn, mặc dù tôi chỉ hỏi một câu hỏi.
EDIT: Quên đề cập đến, tôi chỉ tìm kiếm giải pháp 2d.