2012-04-25 16 views
7

Tôi quen thuộc với những khác biệt cơ bản giữa OpenGL và OpenGL ES, ví dụ: không có glBegin, glEnd, không có quad và vv. Do đó, câu hỏi của tôi không phải về sự khác biệt giữa hai API mà về viết mã thực sự có thể hoạt động trên cả API và các triển khai khác nhau của chúng, đặc biệt là ES, nơi triển khai dường như thay đổi nhiều hơn.Hướng dẫn viết mã OpenGL và OpenGL ES tương thích?

Đương nhiên, điều đó có nghĩa là tuân thủ các tính năng hiện diện trong hai API và cú pháp giống nhau, không có gì quá lạ mắt và cắt cạnh, với OpenGL ES 2 là mẫu số chung thấp nhất.

+0

Bạn có thể tìm thấy tài liệu đọc [MaliOpenGLESEmulator] (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0511c/BABBIBEA.html) thú vị. Đó là trình giả lập OpenGL ES (dành cho MAC/PC) chuyển đổi cuộc gọi từ OpenGL ES sang OpenGL. Họ liệt kê một số chi tiết về sự khác biệt giữa GL 2.0 và GLES 2.0. Giống như thiếu (rõ ràng) của dữ liệu điểm cố định trong GL, các đặc tả chính xác của trình đổ bóng kiến ​​một số thứ nhỏ khác. – kerim

Trả lời

2

Theo Khronos OpenGL ES là một tập con của OpenGL trên máy tính để bàn, do đó, để viết mã tương thích, bạn chỉ cần sử dụng tài liệu OpenGL ES.

Một trích dẫn từ http://www.khronos.org/opengles/

OpenGL ES là một tiền bản quyền miễn phí, đa nền tảng API cho đầy đủ tính năng đồ họa 2D và 3D trên các hệ thống nhúng - bao gồm console, điện thoại, thiết bị và phương tiện. Nó bao gồm các tập hợp con được xác định rõ của máy tính để bàn OpenGL

EDIT: Như Justin Meiners đã chỉ ra trong các nhận xét thực sự có một số khác biệt khi nói đến các chi tiết đẹp. Câu trả lời của David C. Bishop có thêm thông tin về điều này.

+0

Điều này không đúng. Trong khi phần lớn mã sẽ chuyển không thay đổi thì đó là vấn đề tương thích. –

+0

@JustinMeiners: Tôi tò mò là những khác biệt hoặc lỗi trong tài liệu được triển khai? Tôi đã không tìm thấy bất kỳ vấn đề tương thích nào và tài liệu khronos vẫn sử dụng từ "tập con". Nếu nó không thực sự là một tập hợp con nghiêm ngặt, tôi muốn cập nhật câu trả lời của mình. –

+0

Một số ví dụ về sự khác biệt sẽ là vòng loại chính xác của người đổ bóng, sự khác biệt về kích thước được đảm bảo. Nếu bạn nhìn vào tài liệu ARB_ES2_compatibility trong câu trả lời khác, nó mô tả tất cả các thay đổi mà chúng phải thực hiện để thực sự tương thích. –

2

Bạn có thể quan tâm đến mới mở rộng OpenGL ES tương thích ARB_ES2_compatibility (thêm vào cốt lõi trong OpenGL 4.1)

Tất nhiên thực tế sử dụng phần mở rộng yêu cầu hỗ trợ mới hơn OpenGL 4.1 desktop nhưng bạn có thể đọc qua chúng và xem những gì đã được yêu cầu để nhận hỗ trợ ES trên máy tính để bàn và tránh điều đó trong mã ES của bạn càng nhiều càng tốt. Có thể có một số thứ không tương thích với các phiên bản OpenGL cũ hơn trên máy tính để bàn, mặc dù chủ yếu là một số công cụ đổ bóng như độ chính xác của dấu chấm động.

Ngoài ra còn có ARB_ES3_compatibility (lõi trong OpenGL 4.3), nhưng có thể an toàn để bỏ qua vì nó dành cho OpenGL ES 3.0).