2013-06-05 46 views
6

Tôi đang làm việc với AndEngine và OpenGL ES 2.0. Tôi tiếp tục đọc khoảng GL_MAX_TEXTURE_SIZE và cách tôi nên giữ các ngôn ngữ của mình dưới 1024x1024. Tôi bắt đầu sai trước và trong khi sử dụng tilesets trong phần mở rộng TMX (không thực sự quan trọng nó là gì, nếu bạn không biết AndEngine) tôi nhận được một bricket mà làm cho một kết cấu rộng hơn 1024px. Tôi đang nghĩ đến việc tách gạch thành hai, làm cho chúng "an toàn". Nhưng tôi không thể tìm thấy bất kỳ thiết bị nào được phát hành trong vài năm qua có giới hạn này được đặt dưới 2048x2048. Có danh sách hoặc trang web nào tôi có thể sử dụng để lọc thiết bị theo số GL_MAX_TEXTURE_SIZE không?Thiết bị Android GL_MAX_TEXTURE_SIZE giới hạn, kích thước họa tiết an toàn


tôi đọc các câu hỏi sau:

And I used this site to search for devices. Nhưng tôi không thể tìm kiếm bằng/lọc bởi GL_MAX_TEXTURE_SIZE, mà làm cho việc tìm kiếm tẻ nhạt. Tôi yêu cầu chủ yếu là vì tôi bắt đầu sai, đó là một dự án sở thích và số lượng công việc có thể quá lớn so với số lượng thiết bị có thể sẽ được kích hoạt (tôi mong đợi 0).

+0

Bạn có thể truy vấn thiết bị Android của bạn trong mã Java sử dụng: int [] max = new int [1]; GLES20.glGetIntegerv (GLES20.GL_MAX_TEXTURE_SIZE, max, 0); – Antinous

Trả lời

6

1024x1024 là an toàn nhất mà bạn có thể truy cập trên mọi thiết bị, đặc biệt là trên thiết bị cũ hơn. Các thiết bị mới hơn không có bất kỳ vấn đề nào, mặc dù tôi đã nhìn thấy các thiết bị gần đây (tôi nhớ lại Galaxy Nexus, bản cập nhật ICS mới nhất đã được khắc phục) khiến các quad trắng có kích thước họa tiết có kích thước 2048x1024.

Nếu bạn đang nhắm mục tiêu thiết bị mới và muốn giữ các thiết bị cũ tương thích, không nên làm hỏng việc chia các ô của bạn. Sau khi tất cả, bạn không có khả năng làm quá nhiều thiết bị chuyển ngữ cảnh nếu bạn sử dụng hai hoặc ba spritesheets cho nền, v.v.

+0

Vấn đề là tôi đã thiết kế nhiều cấp độ sử dụng định dạng tệp TMX và sử dụng bảng tính này. Phá vỡ nó lên để phù hợp với 1024 sẽ phá vỡ cũng tất cả các cấp. Tôi có thể có thể viết một kịch bản để renumber các gạch trong bản đồ, nhưng lớp bản đồ được lưu ở định dạng nén bên trong XML. Dài câu chuyện ngắn, tôi sẽ làm điều đó nếu tôi tìm ra nó phá vỡ các trò chơi cho nhiều điện thoại. Nếu không tôi sẽ vượt qua và chỉ nhớ nó cho các dự án nghiêm trọng hơn. – sm4

+1

Có một thứ khác bạn có thể làm ... trước khi tải một texture vào OpenGL bạn cần tải nó như một bitmap, bạn có thể chia texture thành bốn (tạo bốn bitmap), tải tất cả các phần vào các texture khác nhau bên trong opengl và sau đó lưu lại các con trỏ kết cấu trong một đại diện duy nhất của Sprite. Sau đó, bạn có thể ánh xạ tọa độ UV từ một phần tư đến một bitmap đầy đủ và gắn kết kết cấu cụ thể mà bạn cần. Nó sẽ tải chậm hơn, nhưng có thể nó chấp nhận được cho bạn. Chúc may mắn! – RedOrav

+2

Tôi nghĩ câu hỏi của tôi không thực sự yêu cầu những gì tôi cần.Tuy nhiên bạn đã trả lời chính xác nhất. Cảm ơn. – sm4

1

Nếu bạn vẫn có các tệp hình ảnh riêng lẻ, hãy chia nhỏ chúng thành Atlases nhỏ hoặc cỡ tùy chỉnh dễ dàng nếu bạn sử dụng công cụ TexturePacker2 từ thư viện LibGdx.

Tôi không biết giới hạn chính xác của thiết bị, nhưng tốt hơn hết nên xem xét phần cuối của thiết bị bạn muốn hỗ trợ và xây dựng trở lên từ đó. Sử dụng công cụ LibGdx, bạn có thể dễ dàng thay đổi ý định sau đó, vì vậy đó là giải pháp linh hoạt nhất.

Nhìn vào: LibGdx TexturePacker

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