Risposte:
OpenTK è un miglioramento rispetto all'API Tao, poiché utilizza lo stile C # idiomatico con sovraccarico, enumerazioni fortemente tipizzate, eccezioni e tipi .NET standard:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
al contrario di Tao che rispecchia semplicemente l'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
Questo rende il porting più difficile ma è incredibilmente piacevole da usare.
Come bonus fornisce rendering dei caratteri, caricamento delle texture, gestione degli input, audio, matematica ...
Aggiornamento 18 gennaio 2016 : oggi il manutentore di OpenTK si è allontanato dal progetto , lasciando il suo futuro incerto. I forum sono pieni di spam. Il manutentore consiglia di passare a MonoGame o SDL2 #.
Aggiornamento 30 giugno 2020 : OpenTK ha nuovi manutentori da un po 'di tempo e ha una comunità attiva di discord. Quindi la precedente raccomandazione di utilizzare un'altra libreria non è necessariamente vera.
Penso che il significato di @korona fosse dato che è solo un'API C, puoi consumarlo direttamente da C # con un sacco di digitazione in questo modo:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Sfortunatamente dovresti farlo per ogni singola funzione OpenGL che chiami, ed è fondamentalmente ciò che Tao ha fatto per te.
Tao dovrebbe essere un bel quadro.
Dal loro sito:
Tao Framework per .NET è una raccolta di associazioni per facilitare lo sviluppo di applicazioni multimediali multipiattaforma utilizzando le piattaforme .NET e Mono.
SharpGL è un progetto che ti consente di utilizzare OpenGL nelle tue applicazioni Windows Form o WPF.
Puoi OpenGL senza un wrapper e usarlo in modo nativo in C #. Proprio come ha detto Jeff Mc, dovresti importare tutte le funzioni di cui hai bisogno con DllImport.
Quello che ha escluso è dover creare il contesto prima di poter utilizzare una qualsiasi delle funzioni OpenGL. Non è difficile, ma ci sono poche altre DllImport non così intuitive che devono essere eseguite.
Ho creato un progetto C # di esempio in VS2012 con quasi il minimo necessario per far funzionare OpenGL su Windows. Dipinge solo la finestra di blu, ma dovrebbe essere sufficiente per iniziare. L'esempio può essere trovato su http://www.glinos-labs.org/?q=programming-opengl-csharp . Cerca l' esempio No wrapper in basso.
Consiglierei anche il Tao Framework . Ma una nota in più:
Dai un'occhiata a questi tutorial: http://www.taumuon.co.uk/jabuka/
Cosa vorresti che facessero queste librerie di supporto? Il solo utilizzo di OpenGL da C # è abbastanza semplice e non richiede alcuna libreria aggiuntiva afaik.
Per quanto riguarda la (un po 'fuori tema, lo so ma poiché è stata sollevata in precedenza) XNA vs OpenGL, potrebbe essere vantaggioso in diversi casi utilizzare OpenGL invece di XNA (e in altri XNA invece di OpenGL ...).
Se hai intenzione di eseguire le applicazioni su Linux o Mac usando Mono, potrebbe essere una buona scelta andare con OpenGL. Inoltre, cosa che non è così ampiamente conosciuta penso, se hai clienti che eseguiranno le tue applicazioni in un ambiente Citrix, DirectX / Direct3D / XNA non sarà una scelta economica come OpenGL. La ragione di ciò è che le applicazioni OpenGL possono essere co-ospitate su un numero inferiore di server (a causa di problemi di prestazioni un singolo server non può ospitare un numero infinito di istanze dell'applicazione) rispetto alle applicazioni DirectX / XNA che richiedono server virtuali dedicati per l'esecuzione in hardware modalità accelerata. Esistono altri requisiti come le schede grafiche supportate ecc., Ma mi atterrò al problema XNA vs OpenGL. Come architetto IT, sviluppatore di software ecc., Questo dovrà essere considerato prima di scegliere tra OpenGL e DirectX / XNA ...
Una nota a margine è che WebGL è basato su OpenGL ES3 afaik ...
Come ulteriore nota, queste non sono le uniche considerazioni, ma potrebbero rendere più facile la scelta per alcuni ...
XNA 2.0 richiede almeno una scheda shader 1.1. Sebbene sia vecchia tecnologia, non tutti ne hanno una. Alcuni laptop più recenti (nella nostra esperienza tablet Toshiba con grafica Intel) non supportano lo shader 1.1. XNA semplicemente non funzionerà su queste macchine.
Questo è un problema significativo per noi e siamo passati a Tao e OpenGL. Inoltre con Tao abbiamo associazioni per il supporto audio e Lua.