Yanıtlar:
OpenTK , aşırı yükleme, kesin olarak yazılmış numaralandırmalar, istisnalar ve standart .NET türleriyle deyimsel C # stilini kullandığından, Tao API'ye göre bir gelişmedir:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
yalnızca C API'sini yansıtan Tao'nun aksine:
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
Bu, taşımayı zorlaştırır ancak kullanımı inanılmaz derecede güzel.
Bonus olarak yazı tipi oluşturma, doku yükleme, giriş işleme, ses, matematik ...
Güncelleme 18 Ocak 2016 : Bugün OpenTK geliştiricisi projeden uzaklaştı ve geleceğini belirsiz bıraktı. Forumlar spam ile dolu. Bakımcı, MonoGame veya SDL2 # sürümüne geçmenizi önerir.
30 Haziran 2020 Güncellemesi : OpenTK bir süredir yeni bakımcılara sahip ve aktif bir uyumsuzluk topluluğuna sahip. Bu nedenle, başka bir kitaplık kullanmanın önceki önerisi mutlaka doğru değildir.
Sanırım @korona'nın kastettiği, sadece bir C API olduğu için, bunu C # 'dan, böyle bir çok yazımla doğrudan tüketebilirsiniz:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Ne yazık ki bunu aradığınız her bir OpenGL işlevi için yapmanız gerekecek ve temelde Tao'nun sizin için yaptığı şey bu.
Tao'nun güzel bir çerçeve olması gerekiyor.
Kendi sitelerinden:
.NET için Tao Framework, .NET ve Mono platformlarını kullanarak platformlar arası medya uygulaması geliştirmeyi kolaylaştırmak için bir bağlama koleksiyonudur.
SharpGL , Windows Forms veya WPF uygulamalarınızda OpenGL kullanmanıza izin veren bir projedir.
Bir sarmalayıcı olmadan OpenGL'yi C # ile yerel olarak kullanabilirsiniz. Jeff Mc'nin dediği gibi, ihtiyacınız olan tüm işlevleri DllImport ile içe aktarmanız gerekir.
Açıkladığı şey, OpenGL işlevlerinden herhangi birini kullanabilmeniz için önce bağlam oluşturmak zorunda kalmasıdır. Zor değil, ancak yapılması gereken sezgisel olmayan birkaç DllImports var.
VS2012'de OpenGL'nin Windows kutusunda çalıştırılması için gereken minimum minimum değere sahip bir C # projesi oluşturdum. Yalnızca pencereyi maviye boyar, ancak başlamanız için yeterli olmalıdır. Örnek, http://www.glinos-labs.org/?q=programming-opengl-csharp adresinde bulunabilir . En alttaki Sarıcı Yok örneğini arayın .
Tao Çerçevesini de tavsiye ederim . Ancak ek bir not:
Bu eğiticilere bir göz atın: http://www.taumuon.co.uk/jabuka/
Bu destek kitaplıklarının ne yapmasını istersiniz? Sadece C # 'dan OpenGL kullanmak yeterince basittir ve herhangi bir ek kitaplık gerektirmez.
(Biraz konu dışı olduğunu biliyorum ama daha önce gündeme geldiğinden beri) XNA ve OpenGL seçimi ile ilgili olarak, birçok durumda XNA yerine OpenGL ile gitmek faydalı olabilir (ve OpenGL yerine başka XNA ...).
Uygulamaları Linux veya Mac'te Mono kullanarak çalıştıracaksanız, OpenGL ile gitmek iyi bir seçim olabilir. Ayrıca, çok yaygın olarak bilinmeyen, uygulamalarınızı Citrix ortamında çalıştıracak müşterileriniz varsa, DirectX / Direct3D / XNA, OpenGL kadar ekonomik bir seçim olmayacaktır. Bunun nedeni, OpenGL uygulamalarının donanımda çalışması için özel sanal sunucular gerektiren DirectX / XNA uygulamalarına göre daha az sayıda sunucuda (performans sorunları nedeniyle tek bir sunucu sonsuz sayıda uygulama örneğini barındıramaz) birlikte barındırılabilmesidir. hızlandırılmış mod. Desteklenen grafik kartları vb. Gibi diğer gereksinimler de vardır ancak XNA ve OpenGL sorununu devam ettireceğim. Bir BT Mimarı, Yazılım geliştiricisi vb. Olarak, OpenGL ve DirectX / XNA arasında seçim yapmadan önce bunun dikkate alınması gerekecektir ...
Bir yan not, WebGL'nin OpenGL ES3 afaik'e dayandığıdır ...
Bir başka not olarak, bunlar tek husus değildir, ancak seçimi bazıları için kolaylaştırabilir ...
XNA 2.0, minimum bir gölgelendirici 1.1 kartı gerektirir. Eski teknolojiye rağmen, herkesin bir tane yoktur. Bazı yeni dizüstü bilgisayarlar (bizim deneyimlerimize göre Intel grafikli Toshiba tabletler) shader 1.1 desteğine sahip değildir. XNA bu makinelerde çalışmayacaktır.
Bu bizim için önemli bir konu ve biz Tao ve OpenGL'ye geçtik. Ayrıca Tao ile ses ve Lua desteği için bağlantılarımız var.