2012-06-14 40 views
10

Bất cứ ai có thể cho tôi biết sự khác biệt cơ bản giữa SurfaceView và GLSurfaceView là gì. Khi nào nên sử dụng SurfaceView và khi nào nên sử dụng GLSurfaceView?Sự khác biệt giữa SurfaceView và GLSurfaceView trong Android

Tôi đã đọc một số câu hỏi đã được trả lời trong ngăn xếp nhưng không đáp ứng các truy vấn của tôi.

Mọi trợ giúp sẽ được đánh giá cao.

+0

hãy nhìn vào liên kết này: http://pierrchen.blogspot.jp/2014/04/android-ui-internal-glsurfaceview.html – pierrotlefou

Trả lời

24

A GLSurfaceViewSurfaceView mà bạn có thể kết xuất bằng OpenGL. Lựa chọn giữa họ rất đơn giản:

  • Nếu bạn đã quen thuộc với OpenGL và cần những gì nó cung cấp, sử dụng một GLSurfaceView.
  • Nếu không, hãy sử dụng SurfaceView.

OpenGL ở cấp độ thấp. Nếu bạn chưa quen với nó, đó là một cam kết để học hỏi. Nếu bạn chỉ cần bản vẽ 2D, SurfaceView sử dụng hiệu suất cao, hợp lý cao Canvas. Nó rất dễ dàng để làm việc với.

Trừ khi bạn có lý do chính đáng để sử dụng số GLSurfaceView, bạn nên sử dụng số SurfaceView thông thường. Tôi sẽ đề nghị rằng nếu bạn chưa biết rằng bạn cần GL, thì có thể bạn không biết.

+0

Cảm ơn bạn đã trả lời. Tôi có một câu hỏi ... cho Camera, cái nào sẽ tốt hơn? – AndroDev

+2

@AndroDev Bạn sẽ phải cụ thể hơn rất nhiều. Mặc dù lấy một đâm vào những gì bạn có nghĩa là: nếu bạn muốn hiển thị một bản xem trước của hình ảnh trực tiếp từ máy ảnh, bạn chỉ cần một 'SurfaceView': http://developer.android.com/guide/topics/media/camera.html # custom-camera –

+1

Lưu ý rằng có thể sử dụng OpenGL với 'SurfaceView'. Nó ít phức tạp hơn khi thực hiện nó với 'GLSurfaceView'. Xem [Tài liệu kiến ​​trúc đồ họa] (http://source.android.com/devices/graphics/architecture.html#glsurfaceview). – Lii

5

SurfaceView

AFAIK Canvas là đơn giản để thực hiện và hiệu quả trong bản vẽ 2D nhưng vẽ 3D không hỗ trợ nó

GLSurfaceView

Nếu bạn muốn thiết kế một số trò chơi 3D sau đó bạn đã đồng ý với GLSurfaceView và OGLES

Trải nghiệm của tôi là nếu bạn chỉ muốn thực hiện quá trình 2D sau đó chọn Canvas vì dễ triển khai hơn và so sánh hiệu quả với GLSurfaceView.

+0

Trong trường hợp của Xử lý 2D, tại sao Canvas lại hiệu quả? – AndroDev

+0

Lưu ý rằng có thể sử dụng OpenGL với 'SurfaceView'. Nó ít phức tạp hơn khi thực hiện nó với 'GLSurfaceView'. Xem [Tài liệu kiến ​​trúc đồ họa] (http://source.android.com/devices/graphics/architecture.html#glsurfaceview). – Lii

6

GLSurfaceView là khối xây dựng chính cho ứng dụng 3D vì Chế độ xem là dành cho các ứng dụng 2D. Nó được sử dụng rộng rãi không chỉ trong các trò chơi 3D mà còn các ứng dụng đa phương tiện như máy ảnh để tạo ra hiệu ứng xem trước đặc biệt.

GLSurfaceView mở rộng SurfaceView và bổ sung sở hữu chuỗi hiển thị và đối tượng hiển thị do khách hàng đặt. Chuỗi hiển thị tiếp tục chạy, liên tục hoặc theo yêu cầu và đại biểu cho đối tượng hiển thị để vẽ khung bằng API OpenGL. Đối với cả SurfaceView và GLSurfaceView, hiển thị đang hoạt động trong một chuỗi riêng biệt ngoài chuỗi chính. Sự khác biệt là với SurfaceView, chuỗi kết xuất được tạo bởi máy khách trong khi với GLSurfaceView nó được tạo bởi hệ thống. Hơn nữa, GLSurfaceView sẽ xử lý nội bộ việc đồng bộ hóa giữa chủ đề chính và chuỗi kết xuất.

Để biết thêm, hãy kiểm tra thisthis

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