Câu trả lời:
OpenTK là một cải tiến so với API Tao, vì nó sử dụng kiểu C # thành ngữ với tính năng nạp chồng, enum được gõ mạnh, ngoại lệ và kiểu .NET tiêu chuẩn:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
trái ngược với Tao chỉ phản ánh API C:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
Điều này làm cho việc chuyển khó khăn hơn nhưng cực kỳ dễ sử dụng.
Như một phần thưởng, nó cung cấp kết xuất phông chữ, tải kết cấu, xử lý đầu vào, âm thanh, toán học ...
Cập nhật ngày 18 tháng 1 năm 2016 : Hôm nay, người bảo trì OpenTK đã rời khỏi dự án , khiến tương lai của nó không chắc chắn. Các diễn đàn chứa đầy thư rác. Người bảo trì khuyên bạn nên chuyển sang MonoGame hoặc SDL2 #.
Cập nhật ngày 30 tháng 6 năm 2020 : OpenTK đã có những người bảo trì mới được một thời gian và có một cộng đồng bất hòa đang hoạt động. Vì vậy, khuyến nghị trước đây về việc sử dụng một thư viện khác không nhất thiết phải đúng.
Tôi nghĩ ý nghĩa của @korona là vì nó chỉ là một API C, bạn có thể sử dụng nó trực tiếp từ C # với rất nhiều lần gõ như thế này:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Thật không may, bạn sẽ cần phải làm điều này cho mỗi hàm OpenGL mà bạn gọi, và về cơ bản đó là những gì Tao đã làm cho bạn.
Tao được cho là một khuôn khổ đẹp.
Từ trang web của họ:
Tao Framework cho .NET là một tập hợp các ràng buộc để tạo điều kiện phát triển ứng dụng đa nền tảng bằng cách sử dụng các nền tảng .NET và Mono.
SharpGL là một dự án cho phép bạn sử dụng OpenGL trong các ứng dụng Windows Forms hoặc WPF của mình.
Bạn có thể OpenGL mà không cần trình bao bọc và sử dụng nó nguyên bản trong C #. Như Jeff Mc đã nói, bạn sẽ phải nhập tất cả các chức năng bạn cần với DllImport.
Những gì anh ấy bỏ qua là phải tạo ngữ cảnh trước khi bạn có thể sử dụng bất kỳ hàm OpenGL nào. Nó không khó, nhưng có một số DllImports không trực quan khác cần được thực hiện.
Tôi đã tạo một dự án C # mẫu trong VS2012 với gần như mức tối thiểu cần thiết để OpenGL chạy trên hộp Windows. Nó chỉ sơn cửa sổ màu xanh lam, nhưng nó sẽ đủ để bạn bắt đầu. Ví dụ có thể được tìm thấy tại http://www.glinos-labs.org/?q=programming-opengl-csharp . Tìm ví dụ No Wrapper ở dưới cùng.
Tôi cũng muốn giới thiệu Khung Tao . Nhưng một lưu ý bổ sung:
Hãy xem các hướng dẫn sau: http://www.taumuon.co.uk/jabuka/
Bạn muốn các thư viện hỗ trợ này làm gì? Chỉ cần sử dụng OpenGL từ C # là đủ đơn giản và không yêu cầu bất kỳ thư viện bổ sung nào.
Liên quan đến (hơi lạc đề mà tôi biết nhưng vì nó đã được đưa ra trước đó) lựa chọn XNA và OpenGL, có thể có lợi trong một số trường hợp nếu sử dụng OpenGL thay vì XNA (và trong XNA khác thay vì OpenGL ...).
Nếu bạn định chạy các ứng dụng trên Linux hoặc Mac bằng Mono, thì đó có thể là một lựa chọn tốt để sử dụng OpenGL. Ngoài ra, tôi nghĩ rằng điều này không được biết đến rộng rãi, nếu bạn có khách hàng sẽ chạy các ứng dụng của bạn trong môi trường Citrix, thì DirectX / Direct3D / XNA sẽ không phải là lựa chọn kinh tế như OpenGL. Lý do cho điều này là các ứng dụng OpenGL có thể được đồng lưu trữ trên số lượng máy chủ ít hơn (do các vấn đề về hiệu suất, một máy chủ duy nhất không thể lưu trữ vô số phiên bản ứng dụng) so với các ứng dụng DirectX / XNA yêu cầu máy chủ ảo chuyên dụng chạy trong phần cứng chế độ tăng tốc. Các yêu cầu khác tồn tại như cạc đồ họa được hỗ trợ, v.v. nhưng tôi sẽ giữ nguyên vấn đề XNA vs OpenGL. Là một Kiến trúc sư CNTT, Nhà phát triển phần mềm, v.v., bạn sẽ phải cân nhắc trước khi lựa chọn giữa OpenGL và DirectX / XNA ...
Một lưu ý nhỏ là WebGL dựa trên OpenGL ES3 afaik ...
Lưu ý thêm, đây không phải là những cân nhắc duy nhất, nhưng chúng có thể giúp lựa chọn dễ dàng hơn đối với một số ...
XNA 2.0 yêu cầu tối thiểu một thẻ shader 1.1. Trong khi công nghệ cũ, không phải ai cũng có. Một số máy tính xách tay mới hơn (theo kinh nghiệm của chúng tôi là máy tính bảng Toshiba với đồ họa Intel) không hỗ trợ shader 1.1. XNA đơn giản là sẽ không chạy trên những máy này.
Đây là một vấn đề quan trọng đối với chúng tôi và chúng tôi đã chuyển sang Tao và OpenGL. Ngoài ra với Tao, chúng tôi có các ràng buộc để hỗ trợ âm thanh và Lua.