Trong trò chơi của tôi có một địa hình giống như Minecraft được tạo thành từ các hình khối. Tôi tạo một bộ đệm đỉnh từ dữ liệu voxel và sử dụng tập bản đồ kết cấu cho các khối khác nhau:
Vấn đề là kết cấu của các hình khối ở xa sẽ nội suy với các ô liền kề trong tập bản đồ kết cấu. Điều đó dẫn đến các dòng màu sai giữa các hình khối (bạn có thể cần phải xem ảnh chụp màn hình bên dưới ở kích thước đầy đủ của nó để xem các lỗi đồ họa):
Hiện tại tôi sử dụng các cài đặt nội suy này nhưng tôi đã thử mọi kết hợp và thậm chí GL_NEAREST
không có mipmapping không cung cấp kết quả tốt hơn.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Tôi cũng đã thử thêm một phần bù trong tọa độ kết cấu để chọn một vùng nhỏ hơn một chút nhưng vì hiệu ứng không mong muốn phụ thuộc vào khoảng cách đến máy ảnh nên điều này không thể giải quyết hoàn toàn vấn đề. Ở khoảng cách xa các sọc xảy ra.
Làm thế nào tôi có thể giải quyết chảy máu kết cấu này? Vì sử dụng một tập bản đồ kết cấu là kỹ thuật phổ biến, có thể có một cách tiếp cận phổ biến. Đáng buồn thay, vì một số lý do được giải thích trong các bình luận, tôi không thể thay đổi thành các kết cấu hoặc mảng kết cấu khác nhau.
GL_LINEAR
, cho kết quả tương tự hoặc chọn pixel gần nhất GL_NEAREST
mà dù sao cũng dẫn đến các sọc giữa các khối. Tùy chọn được đề cập cuối cùng giảm nhưng không loại bỏ lỗ hổng pixel.