2009-04-01 39 views
23

Tôi hiện đang cố gắng để OpenVG hoạt động trên máy tính để bàn của mình. Vấn đề xuất hiện ở đây: Tôi đang/sẽ phát triển một ứng dụng cho thiết bị Windows CE (với .NET compact framework), có OpenGL ES 2.0 tăng tốc phần cứng và OpenVG 1.0.1 (dựa trên TI OMAP35x, nếu bạn quan tâm). Ứng dụng này chắc chắn sẽ sử dụng OpenVG để vẽ và có khả năng OpenGL cho một số hiệu ứng nếu OpenVG không cung cấp cho chúng (tức là mờ).Triển khai OpenVG được tăng tốc phần cứng trên Desktop dựa trên OpenGL ES

Bây giờ tôi muốn phát triển trên màn hình của mình mà không có trình mô phỏng (xem this question). Vì vậy, tôi nghĩ rằng tôi chỉ cần nhập OpenVG với P/Invoke, điều này khá dễ dàng, vì người OpenVG đã tạo các hằng số của họ thành các enums thực, và mặc dù một API C thủ tục, nó đã dịch rất tốt thành một dạng hướng đối tượng (với một lớp Graphics) cho các đối tượng vẽ và Path, Paint, Stroke và Image). Tôi cũng đã xoay xở để tiếp tục với differently named DLLs and entry points. Ồ, và tôi đã nhập EGL 1.3, cũng khá dễ dàng để dịch sang một API hướng đối tượng.

Cho đến thời điểm này, nó có vẻ khá tốt. Tôi nghĩ rằng tôi chỉ muốn sử dụng thực hiện tham khảo OpenVG từ Khronos, nhưng nó là chậm. Thực sự chậm. Bạn biết đấy, chẳng hạn như xóa bề mặt theo nghĩa đen là giây thứ hai! Vì vậy, tôi nghĩ, tốt, OpenVG là một tiêu chuẩn, tôi sẽ chỉ thực hiện một trong những triển khai khác. Hầu hết chúng dựa trên OpenGL, đó là những gì tôi muốn. Hay phải không?

Không, không phải. Tạo một bề mặt OpenGL ES 2.0 với EGL 1.3 (được cung cấp với PowerVR Windows Emulation SDK cho OpenGL ES 2.0) không tương thích với bất kỳ triển khai OpenVG nào mà tôi đã thử. Một số người trong số họ yêu cầu OpenGL truyền thống (AmanithVG GLE), phiên bản EGL được cung cấp bởi PowerVR không hỗ trợ OpenVG. Hầu hết các triển khai thậm chí không có EGL và sử dụng một số hàm kỳ lạ để khởi tạo ngữ cảnh - tất cả đều cho rằng ngữ cảnh OpenGL đã được tạo. OpenGL, không phải OpenGL ES. Thở dài.

Người duy nhất tôi có thể làm việc là AmanithVG SRE, rất nhanh để thực hiện phần mềm và không phụ thuộc vào OpenGL hoặc EGL. Nó hoạt động, nhưng nó vẫn còn quá chậm cho hình ảnh động thời gian thực.

Tôi không thể tin rằng những điều này cảm thấy sai. Tôi thực sự muốn sử dụng WindowsMobile.DirectX.Direct3D, trong đó PowerVR cung cấp một lớp mô phỏng cho Desktop Windows, với hy vọng rằng Gói hỗ trợ hội đồng quản trị cuối cùng sẽ cung cấp Direct3D như một trình bao bọc OpenGL ES, giống như nó có vẻ trên nhiều thiết bị.

Vì vậy, câu hỏi cuối cùng:

Có triển khai OpenVG nào cho các hệ thống Windows Desktop hoạt động với OpenGL ES 2.0 không? Điểm thưởng nếu nó hoạt động trơn tru với mô phỏng OpenGL ES 2.0 của PowerVR và EGL 1.3 được cung cấp.

Hoặc tôi có nên thử sử dụng triển khai OpenGL 2.0 truyền thống trên Máy tính để bàn không? Nhưng chúng thường không cung cấp EGL. Tôi không muốn có hai lớp khởi tạo (EGL và WGL). Hay tôi nên?

Lưu ý: đây không phải là câu hỏi .NET vì vấn đề là rất giống nhau mà không có .NET.

Trả lời

1

Tôi tìm thấy một nguồn đóng OpenGL ES giả lập cho OpenGLES 2.0 và các phiên bản khác từ trang web này trong khi tìm kiếm một giải pháp cho một vấn đề tôi đã:

http://www.malideveloper.com/developer-resources/tools/opengl-es-20-emulator.php

nó đóng nguồn nhưng nó xuất hiện bạn có thể sử dụng nó cho mục đích phát triển của bạn.

Sau đó, bạn có thể viết lớp trừu tượng của riêng bạn có thể chuyển đổi giữa OpenGL và OpenGL ES - Tôi không thể tìm thấy một từ tìm kiếm của mình. Nếu bạn tìm thấy một, hãy cho tôi biết vì đó là những gì tôi đang cố gắng làm.

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