2010-07-13 29 views
5

Tôi đang tạo một ứng dụng dựa trên OpenGL phổ quát nên hoạt động trên ipod/iphone 2G/3G/3GS/4 và iPad.Làm thế nào để phát hiện độ phân giải kết cấu tối đa trên iPhone?

Để cung cấp đồ họa tốt nhất có thể, tôi cần phải chuyển đổi giữa các độ phân giải kết cấu khác nhau dựa trên thiết bị đang chạy nó.

Ví dụ: iPhone 2G cần kết cấu không lớn hơn 1024x1024, trong khi iPhone 3GS có thể xử lý hoạ tiết lớn hơn.

Vì vậy, trên iPhone 3GS, tôi muốn tải bản đồ họa tiết kết cấu là 2048x2048, trong khi iPhone 2G sẽ nhận được bản đồ kết cấu có kích thước 1024x1024.

Có cách nào đơn giản và an toàn để phát hiện độ phân giải kết cấu tối đa có sẵn cho OpenGL trên bất kỳ thiết bị nào đã nói không?

Trả lời

9

Có, sử dụng glGetIntegerv như:

int maxTextureSize; 
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); 

Sau đó, bạn có thể sử dụng tối đa một maxTextureSize x maxTextureSize kết cấu.

+0

Cảm ơn, hoạt động như một nét duyên dáng :) – sinsro

+0

Điều này không hiệu quả đối với tôi. glGetIntegerv không sửa đổi giá trị của maxTextureSize, glError đang trả về 0. Tôi có thiếu gì đó không? – louissmr

+0

@louissmr bạn cần đặt eaglContext: [EAGLContext setCurrentContext: [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]]; –

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