2010-05-24 42 views
10

Tôi đang sử dụng OpenGL để hiển thị chế độ xem trò chơi trong ứng dụng Android của mình. Trò chơi được bật và tôi muốn thêm một số nút vào giao diện. Tôi muốn sử dụng các widget Android chuẩn, được cấu trúc trong một bố cục được tạo XML (hoặc, nếu tôi phải, một bố cục được mã hóa cứng) và đặt chế độ xem OpenGL trong cửa sổ riêng của nó như là một phần của bố cục đó.OpenGL và bố cục

Vì vậy, liên quan đến điều này, tôi có 3 câu hỏi:

1: Điều đó có thể xảy ra không? Tôi đã làm một vài cố gắng nửa vời, nhưng đã không có may mắn cho đến nay.

2: Điều đó có được khuyến khích không? Liệu nó có mang một hình phạt hiệu suất đáng kể, ví dụ, qua việc sử dụng widget Homebrew dựa trên homebrew?

3: Có thể chuyển đối số cụ thể cho các cá thể được tạo trong bố cục XML không? Ví dụ, chế độ xem OpenGL hiện tại của tôi có ba đối số trong hàm tạo của nó; là nó bằng cách nào đó có thể cho tôi để gọi rằng constructor cụ thể với các thông số cụ thể khi nó là một phần của một bố trí?

Trả lời

14

Không chỉ những thứ này có thể, chúng là phổ biến! OpenView SurfaceView chỉ là một Chế độ xem khác trong Android và bạn có thể xếp bất kỳ thứ gì bạn muốn lên trên nó. Trong ứng dụng mà tôi đang xây dựng, chúng tôi sử dụng OpenGL để hiển thị hình nền thú vị trong khi lớp toàn bộ menu trên đó. Không có mối quan tâm hiệu suất đáng kể hơn mà bạn sẽ có với OpenGL của chính nó. Bạn có thể sử dụng bố cục xml hoặc tạo tất cả các phần tử ui của bạn theo lập trình hoặc thực hiện một số kết hợp của hai yếu tố đó. Thậm chí nếu bạn muốn sử dụng xml để khởi tạo ui của bạn, bạn có thể truy cập vào các phần tử và thao tác chúng dựa trên trạng thái.

+0

Allright, cảm ơn. Tôi đã không thể tìm thấy bất kỳ ví dụ về điều này cho đến nay, nhưng tôi sẽ nhìn chăm chỉ hơn bây giờ mà tôi biết rằng nó không phải là một kết thúc chết. – Hnefi

+0

@CaseyB: tôi muốn sử dụng Bố cục trong ứng dụng LiveWallpaper của tôi với OpenGL vì vậy có thể không? –

+0

Tôi chưa bao giờ tạo hình nền động nhưng tôi tin rằng nó sử dụng một hệ thống khác và bạn cần mã hóa nó bằng cách sử dụng RenderScript. – CaseyB

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