ao contrário do Tao, que simplesmente espelha a API C:
Gl.glBegin(Gl.GL_POINTS);// double "gl" prefixGl.glColor3ub(255,255,0);// have to pass RGB values as separate argsGl.glVertex3f(0,1,0);// explicit "f" qualifier
Isso torna a portabilidade mais difícil, mas é incrivelmente agradável de usar.
Como bônus, ele fornece renderização de fontes, carregamento de textura, tratamento de entrada, áudio, matemática ...
Atualização de 18 de janeiro de 2016 : Hoje o mantenedor do OpenTK se afastou do projeto , deixando seu futuro incerto. Os fóruns estão cheios de spam. O mantenedor recomenda mover para MonoGame ou SDL2 #.
Atualização 30 de junho de 2020 : OpenTK teve novos mantenedores por um tempo agora e tem uma comunidade de discórdia ativa. Portanto, a recomendação anterior de usar outra biblioteca não é necessariamente verdadeira.
Não acho que essas funções sejam muito representativas, porque todas foram descontinuadas e removidas do perfil principal do OpenGl.
Arne
6
É verdade que essas funções são removidas do perfil principal. Mas os argumentos ainda são válidos. "OpenTK é uma melhoria em relação à API Tao, pois usa o estilo C # idiomático com sobrecarga, enums fortemente tipados, exceções e tipos .NET padrão"
Syaiful Nizam Yahya
1
O site vinculado é inválido para esta postagem agora.
Sonny Childs
16
Acho que o que @korona quis dizer é que, visto que é apenas uma API C, você pode consumi-la diretamente do C # com muita digitação como esta:
O Tao Framework para .NET é uma coleção de associações para facilitar o desenvolvimento de aplicativos de mídia de plataforma cruzada utilizando as plataformas .NET e Mono.
Você pode OpenGL sem um wrapper e usá-lo nativamente em C #. Assim como Jeff Mc disse, você teria que importar todas as funções de que precisa com o DllImport.
O que ele deixou de fora é ter que criar um contexto antes de usar qualquer uma das funções do OpenGL. Não é difícil, mas existem algumas outras DllImports não tão intuitivas que precisam ser feitas.
Eu criei um exemplo de projeto C # no VS2012 com quase o mínimo necessário para obter o OpenGL em execução no Windows. Ele apenas pinta a janela de azul, mas deve ser o suficiente para você começar. O exemplo pode ser encontrado em http://www.glinos-labs.org/?q=programming-opengl-csharp . Procure o exemplo Sem Wrapper na parte inferior.
Em que namespace essas classes podem ser encontradas?
MegaByte de
4
OpenGL não faz parte do .NET, a partir da versão 4.0
mafu
3
@MegaByte Eles devem ser acessados por meio da chamada da plataforma.
Expiação limitada de
2
Com relação à escolha (um pouco fora do tópico, eu sei, mas já que foi mencionada anteriormente) XNA vs OpenGL, pode ser benéfico em vários casos ir com OpenGL em vez de XNA (e em outro XNA em vez de OpenGL ...).
Se você for executar os aplicativos no Linux ou Mac usando Mono, pode ser uma boa escolha usar o OpenGL. Além disso, o que eu acho que não é tão conhecido, se você tem clientes que irão executar seus aplicativos em um ambiente Citrix, então DirectX / Direct3D / XNA não será uma escolha tão econômica quanto OpenGL. A razão para isso é que os aplicativos OpenGL podem ser co-hospedados em um número menor de servidores (devido a problemas de desempenho, um único servidor não pode hospedar um número infinito de instâncias do aplicativo) do que os aplicativos DirectX / XNA que exigem servidores virtuais dedicados para rodar em hardware modo acelerado. Existem outros requisitos, como placas de vídeo compatíveis, etc., mas irei me limitar ao problema XNA vs OpenGL. Como arquiteto de TI, desenvolvedor de software, etc., isso terá que ser considerado antes de escolher entre OpenGL e DirectX / XNA ...
Uma observação lateral é que o WebGL é baseado no OpenGL ES3 afaik ...
Como uma observação adicional, essas não são as únicas considerações, mas podem tornar a escolha mais fácil para alguns ...
O XNA 2.0 requer no mínimo uma placa shader 1.1. Embora seja tecnologia antiga, nem todo mundo tem uma. Alguns laptops mais novos (em nossa experiência, tablets Toshiba com gráficos Intel) não têm suporte para shader 1.1. XNA simplesmente não funciona nessas máquinas.
Este é um problema significativo para nós e mudamos para Tao e OpenGL. Além disso, com o Tao, temos ligações para suporte de áudio e Lua.
Respostas:
OpenTK é uma melhoria em relação à API Tao, pois usa o estilo idiomático C # com sobrecarga, enums fortemente tipados, exceções e tipos .NET padrão:
ao contrário do Tao, que simplesmente espelha a API C:
Isso torna a portabilidade mais difícil, mas é incrivelmente agradável de usar.
Como bônus, ele fornece renderização de fontes, carregamento de textura, tratamento de entrada, áudio, matemática ...
Atualização de 18 de janeiro de 2016 : Hoje o mantenedor do OpenTK se afastou do projeto , deixando seu futuro incerto. Os fóruns estão cheios de spam. O mantenedor recomenda mover para MonoGame ou SDL2 #.
Atualização 30 de junho de 2020 : OpenTK teve novos mantenedores por um tempo agora e tem uma comunidade de discórdia ativa. Portanto, a recomendação anterior de usar outra biblioteca não é necessariamente verdadeira.
fonte
Acho que o que @korona quis dizer é que, visto que é apenas uma API C, você pode consumi-la diretamente do C # com muita digitação como esta:
Infelizmente, você precisaria fazer isso para cada função OpenGL que chamar, e é basicamente o que o Tao fez por você.
fonte
O Tao deve ser um bom framework.
Do site deles:
fonte
SharpGL é um projeto que permite usar OpenGL em seus aplicativos Windows Forms ou WPF.
fonte
Você pode OpenGL sem um wrapper e usá-lo nativamente em C #. Assim como Jeff Mc disse, você teria que importar todas as funções de que precisa com o DllImport.
O que ele deixou de fora é ter que criar um contexto antes de usar qualquer uma das funções do OpenGL. Não é difícil, mas existem algumas outras DllImports não tão intuitivas que precisam ser feitas.
Eu criei um exemplo de projeto C # no VS2012 com quase o mínimo necessário para obter o OpenGL em execução no Windows. Ele apenas pinta a janela de azul, mas deve ser o suficiente para você começar. O exemplo pode ser encontrado em http://www.glinos-labs.org/?q=programming-opengl-csharp . Procure o exemplo Sem Wrapper na parte inferior.
fonte
Eu também recomendaria o Tao Framework . Mas uma nota adicional:
Dê uma olhada nestes tutoriais: http://www.taumuon.co.uk/jabuka/
fonte
O que você gostaria que essas bibliotecas de suporte fizessem? Usar apenas OpenGL em C # é bastante simples e não requer nenhuma biblioteca adicional.
fonte
Com relação à escolha (um pouco fora do tópico, eu sei, mas já que foi mencionada anteriormente) XNA vs OpenGL, pode ser benéfico em vários casos ir com OpenGL em vez de XNA (e em outro XNA em vez de OpenGL ...).
Se você for executar os aplicativos no Linux ou Mac usando Mono, pode ser uma boa escolha usar o OpenGL. Além disso, o que eu acho que não é tão conhecido, se você tem clientes que irão executar seus aplicativos em um ambiente Citrix, então DirectX / Direct3D / XNA não será uma escolha tão econômica quanto OpenGL. A razão para isso é que os aplicativos OpenGL podem ser co-hospedados em um número menor de servidores (devido a problemas de desempenho, um único servidor não pode hospedar um número infinito de instâncias do aplicativo) do que os aplicativos DirectX / XNA que exigem servidores virtuais dedicados para rodar em hardware modo acelerado. Existem outros requisitos, como placas de vídeo compatíveis, etc., mas irei me limitar ao problema XNA vs OpenGL. Como arquiteto de TI, desenvolvedor de software, etc., isso terá que ser considerado antes de escolher entre OpenGL e DirectX / XNA ...
Uma observação lateral é que o WebGL é baseado no OpenGL ES3 afaik ...
Como uma observação adicional, essas não são as únicas considerações, mas podem tornar a escolha mais fácil para alguns ...
fonte
O XNA 2.0 requer no mínimo uma placa shader 1.1. Embora seja tecnologia antiga, nem todo mundo tem uma. Alguns laptops mais novos (em nossa experiência, tablets Toshiba com gráficos Intel) não têm suporte para shader 1.1. XNA simplesmente não funciona nessas máquinas.
Este é um problema significativo para nós e mudamos para Tao e OpenGL. Além disso, com o Tao, temos ligações para suporte de áudio e Lua.
fonte