Texture là lớp khá phổ biến trong các game engine. Bất cứ game engine nào cũng đều có texture và trong libgdx cũng vậy.
Texture chính là thứ cơ bản nhất mà người lập trình cần biết khi làm bất cứ game nào sử dụng hình ảnh. Nói đơn giản hơn : cứ có hình ảnh là phải dùng texture.
Vậy, công dụng của texture là gì ?
LOAD HÌNH ẢNH
Load ở đâu không chỉ có mỗi việc là tải hình ảnh từ máy về đâu mà còn lưu giữ nó (save) vào trong biến texture rồi truy xuất khi cần.
Sâu hơn một tí về texture trong libgdx thì đó chính là công cụ texture trong opengl chuyển thành. Vì vậy texture trong libgdx khá gần với hệ thống gốc cho tốc độ khá nhanh :)) ( mình nghĩ cái này các bạn chỉ cần biết cho vui thôi vì mình nghĩ texture là độc nhất rồi )
Mặc dù texture ít khá ít chức năng. Thua texture region rất nhiều nhưng texture chính là nền tảng cơ bản để hình thành nên texture region. Chính vì vậy, bất cứ khi nào muốn sử dụng texture region bạn đều phải khởi tạo texture đầu tiên :
Texture texture = new Texture(Gdx.files.internal(String name));
Texture : lớp (class) Texture
texture : tên biến của lớp Texture.
Gdx.files.internal: chỉ ra đó là files có sẵn trong chương trình.
String name : chuỗi chỉ ra địa chỉ hay đường dẫn của hình ảnh mà chương trình sẽ lấy.
| thư mục chứa ảnh |
Texture ground = new Texture(Gdx.files.internal("asset/ground.png"));
chúng ta tạo một biến của lớp Texture tên ground rồi gán cho biến địa chỉ của file hình ảnh "asset/ground.png"
Ngoài ra, để truy xuất file trong chương trình cục bộ ta không cần phải thêm asset đằng trước vì mặc định đó là nơi chứa file, chương trinhfh sẽ tự động tìm trong đó. Việc cần làm duy nhất của ta là cho chương trình biết cần lấy file nào.
// không cần thêm asset chương trình vẫn biết file ground.png trong thư mục asset
Texture ground = new Texture(Gdx.files.internal("ground.png"));
LƯU Ý : khi ta khởi tạo bất kì texture nào ta cũng cần có phương thức dispose() của texture đó để xóa texture đó khỏi bộ nhớ khi không cần đến. Điều đó ngăn cho việc tràn bộ nhớ trong libgdx
ground.dispose();
Một phương thức quan trọng không kém của texture là
setFilter(TextureFilter.___,TextureFilter.___);
Vậy chức năng của setFilter là gì?
Khi texture phóng to hay thu nhỏ, libgdx sẽ sử dụng phương thức
setFilter(TextureFilter.___,TextureFilter.___)
Để làm cho texture trong tự nhiên nhất giống với ảnh gốc ban đầu. Trong phương thức
setFilter(TextureFilter.___,TextureFilter.___)
có hai phương pháp hay dùng nhất để xử lý hình ảnh khi phóng to hay thu nhỏ là TextureFilter.Nearest và TextureFilter.Linear . Đại khái là libgdx sẽ sử dụng những tông màu của các pixel ở rìa để tự động điền màu vào khi phóng to ( không cần hiểu cũng được vì cái này chỉ nói rõ thêm cách thức hoạt động thôi. nó không quan lắm ).
Về phương thức TextureFilter.Nearest cho chất lượng ảnh thấp hơn là TextureFilter.Linear nhưng bù lại chi phí của TextureFilter.Nearest để hoạt động lại thấp hơn TextureFilter.Linear. Vì thế, khi cần một chương trình hoạt động nhanh ít tốn chi phi hoặc xác định rõ kích thước của ảnh không cần hay hiếm khi thu phóng ảnh thì TextureFilter.Nearest sẽ tối ưu hơn TextureFilter.Linear. Nhưng khi hiệu năng của chương trình không phải là vấn đề của bạn hoặc bạn hoàn toàn có thể xử lý được vấn đề hiệu năng. Trong khi đó chất lượng đồ họa của chương trình mới chính là vấn đề bạn cần quan tâm thì bạn nên cần nhắc TextureFilter.Linear sẽ cho ảnh khi phóng to mượt và mềm hơn không bị nhòe nhiều như TextureFilter.Nearest.
Nếu bạn muốn tìm hiểu sâu hơn về nhưng phương thức thì trên trang libgdx có hết nhé.
No comments:
Post a Comment