C #에서 OpenGl을 사용하십니까? [닫은]


118

C # 용 무료 OpenGL 지원 라이브러리가 있습니까? 그렇다면 어떤 것을 사용하고 샘플 프로젝트를 어디에서 찾을 수 있습니까?

C #은 OpenGL 용 클래스를 제공합니까?


나는 이것이 매우 오래된 스레드 알지만, 유니티는 사용자가 관심을 가질 수
clabe45

답변:


129

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는 한동안 새로운 관리자를 보유하고 있으며 활발한 불화 커뮤니티를 보유하고 있습니다. 따라서 다른 라이브러리를 사용하라는 이전 권장 사항이 반드시 사실은 아닙니다.


5
이러한 기능은 모두 사용되지 않고 OpenGl 코어 프로필에서 제거 되었기 때문에 그다지 대표적이라고 생각하지 않습니다.
Arne

6
사실, 이러한 기능은 코어 프로필에서 제거됩니다. 그러나 주장은 여전히 ​​유효합니다. "이, 과부하로 강력한 형식의 열거, 예외 및 표준 .NET 형식을 관용적 C 번호 스타일을 사용하기 때문에 OpenTK은 타오 API를 통해 개선이다"
Syaiful 니잠 야야

1
링크 된 웹 사이트는 현재이 게시물에 유효하지 않습니다.
Sonny Childs

16

@korona가 의미하는 바는 C API이기 때문에 다음과 같이 많은 타이핑으로 C #에서 직접 사용할 수 있습니다.

[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);

불행히도 호출하는 모든 OpenGL 함수에 대해이 작업을 수행해야하며 기본적으로 Tao가 수행 한 작업입니다.


Linux (mono 사용)에서는 어떻게 하시겠습니까?
deceleratedcaviar

기본적으로 똑같습니다. mono-project.com/Interop_with_Native_Libraries
Jeff Mc

15

Tao 는 좋은 프레임 워크 여야합니다.

그들의 사이트에서 :

.NET 용 Tao 프레임 워크는 .NET 및 Mono 플랫폼을 활용하는 크로스 플랫폼 미디어 애플리케이션 개발을 용이하게하는 바인딩 모음입니다.


1
Tao의 새 웹 사이트 : Tao Framework
Thymine 2011 년

9

SharpGL 은 Windows Forms 또는 WPF 애플리케이션에서 OpenGL을 사용할 수있는 프로젝트입니다.


7

래퍼없이 OpenGL을 사용할 수 있으며 기본적으로 C #에서 사용할 수 있습니다. Jeff Mc가 말했듯이 DllImport로 필요한 모든 기능을 가져와야합니다.

그가 생략 한 것은 OpenGL 함수를 사용하기 전에 컨텍스트를 만들어야한다는 것입니다. 어렵지는 않지만 수행해야 할 직관적이지 않은 DllImport는 거의 없습니다.

Windows 상자에서 OpenGL을 실행하는 데 필요한 최소한의 최소한으로 VS2012에서 예제 C # 프로젝트를 만들었습니다. 창을 파란색으로 만 칠하지만 시작하기에 충분합니다. 예제는 http://www.glinos-labs.org/?q=programming-opengl-csharp 에서 찾을 수 있습니다 . 하단에서 No Wrapper 예제를 찾으십시오 .


5
링크가 끊어졌습니다. 프로젝트를 공유 할 수 있습니다. 감사.
dangerousdave

7

또한 Tao Framework를 추천합니다 . 그러나 추가 참고 사항 :

다음 자습서를 살펴보십시오 : http://www.taumuon.co.uk/jabuka/


꽤 오래 전에 페이지가 내려 갔을 때 타오에게 무슨 일이 일어 났는지 모르겠습니다.
Dominic K

Tao의 새 웹 사이트 : Tao Framework
Thymine 2011 년

1
타오는 움직이는 표적 인 것 같습니다. 링크를 업데이트했는데 이제 모노에서 소스 포지로 옮겨졌습니다.
Oliver

와우, 2005 년 11 월 ... OpenGL은 많이 변하지 않습니까?
jocull 2012

1
그래 @JonHarrop 보이는 그들은 이제 github의 페이지를 사용하여이 리디렉션을 설정하지 않은 것처럼 opentk.github.io
꿈의 감시자

4

이 지원 라이브러리에서 무엇을 하시겠습니까? C #에서 OpenGL을 사용하는 것만으로도 간단하며 추가 라이브러리가 필요하지 않습니다.


이러한 클래스는 어떤 네임 스페이스에서 찾을 수 있습니까?
MegaByte

4
OpenGL은 버전 4.0에서 .NET의 일부가 아닙니다
mafu

3
@MegaByte 플랫폼 호출을 통해 액세스해야합니다.
제한된 속죄

2

(내가 아는 주제에서 다소 벗어 났지만 이전에 언급 되었기 때문에) 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을 기반으로합니다.

추가로, 이것들이 유일한 고려 사항은 아니지만 일부 사람들에게는 선택을 더 쉽게 만들 수 있습니다.


1

XNA 2.0에는 최소 셰이더 1.1 카드가 필요합니다. 오래된 기술이지만 모든 사람이 하나를 가지고있는 것은 아닙니다. 일부 최신 노트북 (Intel 그래픽이 탑재 된 Toshiba 태블릿의 경험에서)은 셰이더 1.1을 지원하지 않습니다. XNA는 이러한 컴퓨터에서 실행되지 않습니다.

이것은 우리에게 중요한 문제이며 Tao 및 OpenGL로 전환했습니다. 또한 Tao에는 오디오 및 Lua 지원을위한 바인딩이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.