답변:
OpenTK 는 오버로딩, 강력한 형식의 열거 형, 예외 및 표준 .NET 형식과 함께 관용적 C # 스타일을 사용하므로 Tao API보다 개선 된 것입니다.
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
단순히 C API를 미러링하는 Tao와는 달리 :
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
이것은 포팅을 어렵게 만들지 만 사용하기 매우 좋습니다.
보너스로 글꼴 렌더링, 텍스처 로딩, 입력 처리, 오디오, 수학 ...
2016 년 1 월 18 일 업데이트 : 오늘 OpenTK 메인테이너는 프로젝트에서 물러나 미래가 불확실합니다. 포럼은 스팸으로 가득 차 있습니다. 관리자는 MonoGame 또는 SDL2 #로 이동할 것을 권장합니다.
2020 년 6 월 30 일 업데이트 : OpenTK는 한동안 새로운 관리자를 보유하고 있으며 활발한 불화 커뮤니티를 보유하고 있습니다. 따라서 다른 라이브러리를 사용하라는 이전 권장 사항이 반드시 사실은 아닙니다.
@korona가 의미하는 바는 C API이기 때문에 다음과 같이 많은 타이핑으로 C #에서 직접 사용할 수 있습니다.
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
불행히도 호출하는 모든 OpenGL 함수에 대해이 작업을 수행해야하며 기본적으로 Tao가 수행 한 작업입니다.
Tao 는 좋은 프레임 워크 여야합니다.
그들의 사이트에서 :
.NET 용 Tao 프레임 워크는 .NET 및 Mono 플랫폼을 활용하는 크로스 플랫폼 미디어 애플리케이션 개발을 용이하게하는 바인딩 모음입니다.
SharpGL 은 Windows Forms 또는 WPF 애플리케이션에서 OpenGL을 사용할 수있는 프로젝트입니다.
래퍼없이 OpenGL을 사용할 수 있으며 기본적으로 C #에서 사용할 수 있습니다. Jeff Mc가 말했듯이 DllImport로 필요한 모든 기능을 가져와야합니다.
그가 생략 한 것은 OpenGL 함수를 사용하기 전에 컨텍스트를 만들어야한다는 것입니다. 어렵지는 않지만 수행해야 할 직관적이지 않은 DllImport는 거의 없습니다.
Windows 상자에서 OpenGL을 실행하는 데 필요한 최소한의 최소한으로 VS2012에서 예제 C # 프로젝트를 만들었습니다. 창을 파란색으로 만 칠하지만 시작하기에 충분합니다. 예제는 http://www.glinos-labs.org/?q=programming-opengl-csharp 에서 찾을 수 있습니다 . 하단에서 No Wrapper 예제를 찾으십시오 .
또한 Tao Framework를 추천합니다 . 그러나 추가 참고 사항 :
다음 자습서를 살펴보십시오 : http://www.taumuon.co.uk/jabuka/
(내가 아는 주제에서 다소 벗어 났지만 이전에 언급 되었기 때문에) XNA 대 OpenGL 선택과 관련하여 여러 경우에 XNA 대신 OpenGL을 사용하는 것이 유용 할 수 있습니다 (그리고 OpenGL 대신 다른 XNA에서 ...).
Mono를 사용하여 Linux 또는 Mac에서 응용 프로그램을 실행하려는 경우 OpenGL을 사용하는 것이 좋습니다. 또한 그렇게 널리 알려져 있지는 않지만 Citrix 환경에서 응용 프로그램을 실행하려는 고객이 있다면 DirectX / Direct3D / XNA가 OpenGL만큼 경제적이지 않을 것입니다. 그 이유는 OpenGL 응용 프로그램은 하드웨어에서 실행하기 위해 전용 가상 서버를 요구하는 DirectX / XNA 응용 프로그램보다 적은 수의 서버에서 공동 호스팅 할 수 있기 때문입니다 (성능 문제로 인해 단일 서버가 무한한 수의 응용 프로그램 인스턴스를 호스팅 할 수 없음). 가속 모드. 지원되는 그래픽 카드 등과 같은 다른 요구 사항이 있지만 XNA 대 OpenGL 문제는 계속 유지합니다. IT 설계자, 소프트웨어 개발자 등으로서 OpenGL과 DirectX / XNA 중에서 선택하기 전에이 점을 고려해야합니다.
참고로 WebGL은 OpenGL ES3 afaik을 기반으로합니다.
추가로, 이것들이 유일한 고려 사항은 아니지만 일부 사람들에게는 선택을 더 쉽게 만들 수 있습니다.