2010-08-02 26 views
11

Tôi hiện đang phát xung quanh với đồ họa 2D trong Android và đã sử dụng SurfaceView cũ để vẽ Drawables và Bitmap cho màn hình. Điều này đã được làm việc alright, nhưng có một chút nói lắp trong phong trào sprite, và tôi tự hỏi tính khả thi để làm một trò chơi thời gian thực (nhưng không khủng khiếp nhanh) với điều này.Sự khác biệt và lợi thế của SurfaceView so với GLSurfaceView trên Android?

Tôi biết GLSurfaceView tồn tại sử dụng OpenGL, nhưng tôi tò mò về mức độ tạo nên sự khác biệt này. Phần cứng SurfaceView đơn giản có tăng tốc hay tôi cần sử dụng OpenGL không? Tôi có thể mong đợi sự khác biệt về tốc độ nào khi chuyển sang OpenGL, và cần phải thay đổi bao nhiêu mã (logic trò chơi là tất cả trong một đối tượng riêng biệt cung cấp một mảng có thể rút ra được cho SurfaceView)?

Trả lời

2

Theo như tôi có thể nói, bạn phải sử dụng OpenGL để tăng tốc HW. Nhưng đừng coi như đã được cấp phép và chờ các câu trả lời khác ^^

Nếu đúng như vậy, việc tăng tốc sẽ khá quan trọng. Bất kỳ ứng dụng 2D nào cũng hoạt động ở mức tối thiểu 20 khung hình/giây (thường ít đa giác hơn ứng dụng 3D)

nó sẽ mất một lượng lớn mã, nhưng 1) là lần đầu tiên bạn có thể thử chỉ với 1 VBO vuông và thay đổi ma trận mỗi lần và 2) kết xuất của bạn dường như đã được đóng gói hoàn toàn nên nó sẽ đơn giản hóa mọi thứ rất nhiều.

+1

Có. GLSurfaceView là HW tăng tốc, trong khi SurfaceView không (như Android 4.3). – pierrotlefou

0

Chế độ xem bề mặt không được tăng tốc phần cứng theo mặc định. nếu bạn muốn tăng tốc HW hãy sử dụng GLSurfaceView, sử dụng opengl và phần cứng được tăng tốc.

-1

Tăng tốc phần cứng có thể cho SurfaceView thông thường kể từ 3.0.

http://developer.android.com/guide/topics/graphics/hardware-accel.html

+0

Điều này là sai. "Bắt đầu từ Android 3.0 (API cấp 11), đường dẫn dựng hình 2D của Android hỗ trợ tăng tốc phần cứng, có nghĩa là tất cả các thao tác vẽ được thực hiện trên canvas của Chế độ xem đều sử dụng GPU". Có, nhưng KHÔNG cho SurfaceView. –

+0

Ngoại trừ API23 + trong đó có phương pháp mới này: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas() –

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