OpenGL Wrapper в.Net
Этот вопрос похож на тот, что здесь. Но я чувствую, что рекомендуемые ответы (такие как Tao и OpenTK) не достаточно хороши, потому что это просто прямой порт от OpenGL, без дизайна ООП и сложный в использовании.
Мне нужна оболочка.Net OpenGL, написанная на понятных принципах ООП, простая в использовании (легкая в применении, текстовая и световая, легкая в отладке и т. Д.), Способная вращать трехмерную диаграмму с помощью мыши (функция, которая критически отсутствует в OpenGL и TAO) и возможность экспорта в другие форматы файлов (такие как dwg или dxf или формат файла Google Map).
Любое предложение? Подойдут как открытые, так и коммерческие компоненты.
5 ответов
Хотя вы правы в том, что оболочка ООП возможна, на самом деле вам нужно сначала понять, как работает OpenGL (это верно для любого API-оболочки, и вдвойне так для OpenGL). Поскольку вы находите API OpenGL сложным в использовании, вы, вероятно, недостаточно хорошо понимаете рендеринг, чтобы использовать любой API-оболочку.
Большинство оболочек избегают использования сложных классов классов, поскольку сохранение состояния с каждым объектом и отправка его в графический процессор для каждого объекта очень неэффективно и может снизить частоту кадров. Вы, программист, должны знать об этих болевых точках, а не пытаться скрыть их за абстрактным слоем обертки. Библиотекарь не может решить их за вас.
Большая проблема заключается в том, что OpenGL - это не OOP-фреймворк, а конечный автомат ( http://en.wikipedia.org/wiki/Finite-state_machine), поэтому любой перевод в библиотеку OOP добавит много сложностей, которые замедлит вашу программу. Так что либо используйте его как конечный автомат, либо посмотрите на библиотеку ООП, такую как OGRE. Но для многих вещей OGRE будет слишком ограничительным.
Когда дело доходит до этого, зачем вам ООП с OpenGL? Есть причина, по которой библиотека была написана так, как она была, и это потому, что она очень четко отображается на оборудовании под ней. В ООП видеокарта не думает, это конечный автомат, и библиотека, используемая для ее программирования, отражает это.
Может быть, слишком высокомерно, но я пишу свою собственную абстракцию. Он работает в большинстве случаев, но находится в состоянии планирования, но дает представление о том, как реализовать абстракцию ООП "OpenGL".
Посмотрите на SVN: http://sourceforge.net/projects/genomalib/develop
Конечно, это не решение для производственного кода, но оно с открытым исходным кодом и легко расширяется, как только вы получаете дизайн. В последнее время я добавил "устаревший" API, так как он изначально был написан для рендеринга только с шейдерами (в действительности он все еще не поддерживает "старое" оборудование); но, конечно, у меня есть средства для оказания...
ShapGL является лучшим и простым в использовании с Winforms и WPF. https://github.com/dwmkerr/sharpgl