2010-04-27 6 views
2

이 질문은 the one here과 유사합니다. 그러나 OX 디자인이 없으며 사용하기 어려운 OpenGL의 직접 포트이기 때문에 Tao 및 OpenTK와 같은 권장 답변이 충분하지 않다고 생각합니다.닷넷의 OpenGL 래퍼

내가 찾고있는 것은 마우스로 3D 다이어그램을 회전시킬 수있는 명확한 OOP 원칙, 사용하기 쉽고 (텍스트 및 조명 적용, 디버그 등) 용이하게 작성된 .Net OpenGL 래퍼입니다 OpenGL 및 TAO에서 빠져있는 기능) 및 다른 파일 형식 (예 : dwg 또는 dxf 또는 Google Map 파일 형식)으로 내보낼 수있는 기능을 제공합니다.

의견이 있으십니까? 오픈 소스 또는 상업용 구성 요소 모두 가능합니다.

+0

시각화 라이브러리 (http://www.visualizationlibrary.com/)와 같은 사운드는 사용자의 요구에 맞을 것입니다. 안타깝게도 .Net이 아닙니다. SWIG (http://www.swig.org/)를 사용하여 래퍼를 생성하려고 할 수 있습니다. 아마 어떤 일이 걸릴 것입니다 ... – kloffy

+0

글쎄, OpenGL은 OOP 원칙에 따라 빌드되지 않으므로 OOP 래퍼를 사용할 수 없습니다. – nothrow

+0

@ Yossarian, 비록 'A'가 OOP에 내장되어 있지 않지만 래퍼는 OOP 일 수 있습니다. 제가 제공 할 수있는 한 가지 예가 Symfony입니다. Symfony는 PHP를 기반으로하는 OOP 프레임 워크로, 절차 적으로 얻을 수 있습니다. – Graviton

답변

4

당신이 OOP 래퍼 할 수 있다는 것을 올바른 동안 한 번 봐, 진실은 OpenGL을 먼저 어떻게 작동하는지 이해 필요가있다 (이것은 모든 래퍼 API에 해당하며 OpenGL에 대해서도 마찬가지입니다. OpenGL API를 사용하기가 어렵 기 때문에 래퍼 API를 사용하기에 충분히 잘 렌더링되지 않을 수도 있습니다.

대부분의 래퍼는 각 개체의 상태를 저장하고 각 개체의 GPU로 보내기 때문에 매우 비효율적이며 프레임 속도가 저하 될 수 있기 때문에 무거운 클래스 프레임 워크를 피할 수 있습니다. 프로그래머 여러분은 추상 래퍼 레이어 뒤에 숨기려하지 말고 이러한 문제점을 인식해야합니다. 도서관 설계자는이를 해결할 수 없습니다.

2

큰 문제는 OpenGL이 OOP 프레임 워크가 아니라는 것입니다. OOP 라이브러리에 대한 모든 번역이 프로그램 속도를 늦추는 복잡성을 추가하기 때문에 상태 머신 (http://en.wikipedia.org/wiki/Finite-state_machine)입니다. 따라서 이것을 상태 머신으로 사용하거나 OGRE와 같은 OOP 라이브러리를 살펴보십시오. 그러나 많은 것들을 위해서 OGRE는 너무 제한적입니다.

이 문제가 발생하면 왜 OpenGL과 함께 OOP가 필요합니까? 라이브러리가 원래대로 작성된 이유는 바로 그 라이브러리가 그 아래의 하드웨어에 매우 명확하게 매핑되기 때문입니다. 그래픽 카드는 OOP에서 생각하지 않습니다, 그것은 상태 머신이고, 그것을 프로그래밍하는 데 사용 된 라이브러리는 그것을 반영합니다.

1

어쩌면 너무 거만하지만 내 자신의 추상화를 쓰고 있습니다. 대부분의 경우 작동하지만 계획 상태에 있지만 "OpenGL"OOP 추상화를 구현하는 방법을 알려줍니다. SVN의에서

봐 : http://sourceforge.net/projects/genomalib/develop

은 확실히 그것은 생산 코드에 대한 해결책이 아니다, 그러나 당신이 디자인을 일단이 범위에 오픈 소스와 쉽습니다. Recntly 쉐이더만으로 렌더링하기 위해 처음 작성 되었기 때문에 "deprecated"API를 추가했습니다 (사실 "이전"하드웨어에 대한 지원이 아직 없습니다). 하지만 확실하게 렌더링을위한 자금을 가지고 있습니다 ...

+0

+1 시도 중 – Graviton