Opentk c: Introduction — OpenTK
01) Установка OpenTK — Разные уроки по Программированию
Установка
OpenTK 1.0 распространяется в двух вариантах: установщик Windows, и простой архиве ZIP.
В Windows, просто выполните программу установки и следуйте инструкциям на экране. Программа установки не требует прав администратора, если вы выберете для установки драйверов OpenAL или плагин для GLSL Visual Studio Professional. После того, как установка будет завершена, вы сможете выбрать OpenTK в ваших ссылках проекта (дважды щелкните «Ссылки» в панели раствора, выберите вкладку «.Net», найдите и нажмите OpenTK добавить).
На Linux и Mac OS X, извлечь из архива почтовый в папку по вашему выбору и добавить OpenTK.dll для вашей ссылки проекта. Вы можете найти этот файл в Binaries / OpenTK / Release. Кроме того, вы должны добавить OpenTK.dll.config к вашему проекту и поручить ваш IDE скопировать этот файл в выходной каталог. Это необходимо для вашего проекта, чтобы функционировать под Linux и Mac OS X.
Строить
Вы можете построить OpenTK через командную строку или через IDE:
- Для командной строки сборки, вы должны либо MSBuild (.Net) или xbuild (моно). Для MSBuild, открыть «командную строку Visual Studio», перейдите к папке OpenTK и типа:
MSBuild OpenTK.sln / р: Конфигурация = релиз
Для xbuild, убедитесь, что инструмент находится в вашем пути и типа:
xbuild OpenTK.sln / р: Конфигурация = релиз
- Для IDE телосложения, вам нужно либо Visual Studio 2010 Express Edition (или выше) или MonoDevelop 2.4. Просто откройте OpenTK.sln и нажмите «Build».
OpenTK могут быть построены в четырех различных конфигурациях: «Освобождение» (показано выше), «Отладка», «НСИ» и «Документация». Чтобы построить другую конфигурацию, использовать менеджер конфигурации IDE или изменить командную строку вызова вроде этого:
MSBuild OpenTK.sln / р: Конфигурация = Документация
Важное примечание: MonoDevelop до версии 2.6 не загрузку и построить OpenTK непосредственно из системы управления версиями. Обойти это просто: открыт OpenTK.sln, щелкните правой кнопкой мыши проект «Build.UpdateVersion» и выберите «Run». Теперь вы можете построить OpenTK как обычно.
Зависимости
OpenTK 1.0 требуется компилятор C # 2.0 и следующие библиотеки .Net 2.0:
- Система
- System.Data
- System.Drawing
- System.Windows.Forms
- System.Xml
Кроме того, связыв
GLGDI+ или «переходим с GDI+ на OpenTK» / Хабр
Думаю, многим приходилось сталкиваться с проблемой, что GDI+ тормозит, а тормозит, потому что не ускоряется железом.
Вот и я как-то писал редактор уровней
и понял, что GDI+ мне больше не хватает, нужно переходить на что-то ускоренное, причем за минимальное время. Немного погуглив, я решил остановить свой выбор на библиотеке OpenTK.
OpenTK (Open Toolkit) — это низкоуровневая библиотека, которая является враппером для OpenGL, OpenGL ES, OpenCL и OpenAL. Данная библиотека предназначена для игр, научных приложений, а также для любых других приложений, которым требуется 3D-графика, аудио и вычислительная функциональность. OpenTK является кроссплатформенной библиотекой и работает как на Mono, так и на .NET.
Почему выбор пал именно на OpenTK? Во-первых, OpenTK предоставляет класс GLControl (является прямым наследником UserControl), который позволяет упростить переход на данную библиотеку. Во-вторых, в комплекте идет класс TextPrinter, который позволяет довольно просто выводить текст на экран. В-третьих во время гугления я нашел небольшой архив «Engine.zip» с набором классов для 2D-отрисовки, инициализации OpenGL и прочими приятностями.
Сначала я планировал описать какие подводные камни встретились мне при переходе на OpenTK, но, вспомнив, что вопрос перехода с GDI+ на что-то быстрое является довольно популярным, решил написать небольшую библиотеку, которая мимикрирует под GDI+ и выложить ее в открытом доступе. Назвал я ее GLGDI+. Помните, что это легковесная библиотека и содержит только самый необходимый минимум и не пытается полностью копировать API GDI+. Она содержит классы GLGraphics, GLImage и GLMultiImage. GLGraphics содержит следующие методы:
- DrawString — выводит текст
- DrawImage — рисует GLImage
- DrawLine — рисует линию
- DrawRectangle — рисует прямоугольник
- FillRectangle — рисует закрашенный прямоугольник
- DrawPoint — рисует точку
- DrawPoints — рисует несколько точек
- DrawMultiImage — рисует GLMultiImage (для отрисовки нескольких одинаковых изображений разом — это гораздо быстрее, нежели рисовать по одному, если таких изображений много)
Некоторые моменты
Я все же опишу некоторые моменты, с которыми мне пришлось столкнуться при использовании OpenTK. На сайте OpenTK есть хорошие туториалы, которые я, конечно же, не читал, ознакомься я с ними, и парой проблем было бы меньше. Но, что было, то было:
- Первое с чем я столкнулся: контрол вообще не перерисовывался при запуске, решилось просто, нужно не забыть вызвать метод SwapBuffers в конце OnPaint, GLControl уже имеет встроенную функциональность DoubleBuffer, нужно только переключить буфер
- Следующий момент, о который я споткнулся — это черные прямоугольники вместо изображений. Решалось вызовом image.SetBlending() перед отрисовкой, сейчас в библиотеке все изображения рисуются с блендингом, поэтому с этим проблем быть не должно
- Когда я второй контрол перевел на рельсы OpenTK, то оказалось, что первый контрол после этого перестал выполнять свои функции, решилось вызовом метода MakeCurrent в OnPaint перед отрисовкой элементов
- TextPrinter (основа для DrawString) иногда падает при выводе текста, тут ничего не поделаешь — класс глючный и на определенных сочетаниях качества отрисовки, шрифта и размера шрифта он падает, пришлось подбирать шрифт и размер
- Еще нужно отслеживать, что контрол загрузился и только после этого работать с OpenTK/GLGraphics, а также проверять, что контрол не в режиме дизайнера форм
- При изменении размеров контрола нужно не забыть вызвать GLGraphics.Resize(Width, Height)
Заключение
Библиотека лежит на GoogleCode, под BSD лицензией. Если кому понадобится — пользуйтесь на здоровье. Чтобы понять как работать с библиотекой — посмотрите исходный текст сэмпла, который идет в комплекте, он очень простой:
Все описанные выше «моменты» в нем учтены.
Данную библиотеку я пока не рекомендовал бы использовать для продуктов, нацеленных на массового пользователя — она слишком молода для этого, но в утилитах вполне пригодна к использованию.
На данный момент планов по развитию библиотеки у меня нет — мне ее функционала хватает. Но багфиксы и патчи приветствуются 🙂
Судя по тому, что я прочитал на OpenTK форуме, TextPrinter (используется для вывода текста) в будущем будет исключен из библиотеки, но, возможно, в отдельный проект. Так что его судьба пока что туманна. Сейчас он в состоянии Deprecated, поэтому дает warnings при компиляции библиотеки.
Вот теперь редактор карт работает значительно быстрее и ничего не тормозит, чего и вам желаю!
UPD: забыл указать ссылку на сайт OpenTK
UPD2: исправил баг с путями в исходниках сэмпла (как в архиве, так и в SVN)
02) Математические функции OpenTK — Разные уроки по Программированию
Чтобы помочь вам написать чистый код, OpenTK определяет обычно используется векторы, кватернионов и матриц, чтобы расширить стандартные скалярные типы. Они, как правило, лучше, чем обрабатывать массивы, которые ожидает C API.
Например: OpenTK позволяет установить параметры GL . Color ( )
различными способами, цвет голубой используется в этом случае.
GL.Color( 0.0f, 1.0f, 1.0f ); Vector3 MyColor = new Vector3( 0.0f, 1.0f, 1.0f ); GL.Color( MyColor ); // requires the System.Drawing library GL.Color( Color.Cyan );Функциональные перегрузки, как это может быть найдено по всему OpenTK.Graphics и OpenTK.Audio, где это применимо.
Обзор
Все перечисленные ниже типобезопасным, код, используя эти типы будут работать во всех поддерживаемых платформах.Векторы
- Половина точности с плавающей запятой
Half
— новый скалярный тип с 16 бит точности. Более подробную информацию можно найти здесь .Vector2h
— 2-компонентный вектор типаHalf
.Vector3h
— 3-компонентный вектор типаHalf
.Vector4h
— 4-компонентный вектор типаHalf
.- Одинарной точности с плавающей запятой
Single
— стандартный скалярный тип с 32 бит точности.Vector2
— 2-компонентный вектор типаSingle
.Vector3
— 3-компонентный вектор типаSingle
.Vector4
— 4-компонентный вектор типаSingle
.- Двойной точности с плавающей запятой
Double
— стандартный скалярный тип с 64 бит точности.Vector2d
— 2-компонентный вектор типаDouble
.Vector3d
— 3-компонентный вектор типаDouble
.Vector4d
— 4-компонентный вектор типаDouble
.
Кватернион
Quaternion
— одинарной точности с плавающей точкой Кватернион с помощью 4 компонентов.Quaterniond
— двойной точности с плавающей точкой Кватернион с помощью 4 компонентов.
Row-майор Матрицы
Matrix3d
- 3×3 двойной точности Матрица.Matrix4
— 4×4 одинарной точно
Новые вопросы с меткой [opentk]
Stack Overflow на русском
Loading…
-
0
-
+0
-
-
Тур
Начните с этой страницы, чтобы быстро ознакомиться с сайтом
-
Справка
Подробные ответы на любые возможные вопросы
-
Мета
Обсудить принципы работы и политику сайта
-
О нас
Узнать больше о компании Stack Overflow
-
Бизнес
Узнать больше о поиске разработчиков или рекламе на сайте
LearnOpenTK | devvoid, команда OpenTK | 3.0.1 | Учебник | Код официальных руководств на https://opentk.net/ | |
Генод | SirusDoma | > = 2,0 | > = 3,0 | Библиотека | |
Cgen.Audio | SirusDoma | Библиотека | |||
ObjectTK (ранее DerpGL) | Ленивец | Библиотека | |||
Ленгин | croman102 | Двигатель | |||
| Семь | Двигатель (устаревший) | |||
Балочный станок | james_lohr | Игра | Завершен.https://www.youtube.com/watch?v=hl-7sTqCvGY | ||
Игровой движок Fimbulvetr | гринбоксал | Двигатель | |||
L-Systems Viewer | lexa | Библиотека | Альтернативная ссылка: lexa.tatalata.com/tag/l-system/ | ||
QuickFont | Джеймс Лор | Библиотека | |||
Рабочая панель L-System | Элаверик | пр. | |||
Spacewar Arena | код | пр. | Незавершенный проект | ||
JigLibOpenTK | код | пр. | Авторская личная рамка для незавершенной игры | ||
CgNet | смайлик 8o | пр. | |||
КРИ Двигатель | кварк | 3.0 | пр. | [старая версия] Современный движок OpenGL-3 | |
Meshomatic | Icefox | Библиотека | Коллекция классов загрузчика с открытым исходным кодом для 3D-моделей (.obj | ||
Демонстрация Open Toolkit | Скрипач | пр. | Поставляется вместе с Opentk | ||
Виджет GTKSharp OpenGL | JTalton | пр. | Распространяется с OpenTK | ||
Dungeon Eye | ильяк | пр. | Ремейк Глаз смотрящего 2.https://www.gamedev.net/forums/topic/597127-dungeon-eye-eye-of-the-beholder-ii-remake/. http://www.dungeoneye.net/ | ||
Icarus Scene Engine | emacinnes | пр. | |||
Редактор 3D-моделей голема | JTalton | пр. | |||
OOGL | Камуджин | пр. | OOGL — это набор простых оболочек объектов C # для обработки OpenGL | ||
WPF OpenGL | Стив Хароз | пр. | OpenTK заявляет о поддержке WPF в ядре | ||
Простые двухмерные часы в WinForms | Кишорд Гупта | <3.0 | Учебник | Устаревшее руководство | |
OpenTK Tutorial | Нео Кабуто | > 2,0 | > 3,0 | Учебник |
.
Галерея NuGet | OpenTK 3.2.0
Open Toolkit — это набор быстрых низкоуровневых привязок C # для OpenGL, OpenGL ES и OpenAL. Он работает на всех основных платформах и поддерживает сотни приложений, игр и научных исследований.
OpenTK предоставляет несколько служебных библиотек, включая пакет математической / линейной алгебры, систему управления окнами и обработку ввода.
Доступна более новая предварительная версия этого пакета.
Подробнее см. В списке версий ниже.
Установочный пакет OpenTK - версия 3.2.0
dotnet add package OpenTK - версия 3.2.0
Для проектов, поддерживающих PackageReference, скопируйте этот узел XML в файл проекта, чтобы ссылаться на пакет.
пакет добавить OpenTK - версия 3.2.0
Команда NuGet не предоставляет поддержку для этого клиента. Пожалуйста, свяжитесь с сопровождающими для получения поддержки.
Примечания к выпуску
Исправить сбой ввода, если> 64 кнопок.(Спасибо @tyronx)
Добавьте временные привязки dx_interop для использования в GLWPFControl.
Этот пакет не имеет зависимостей.
Репозитории GitHub (43)
Показаны 5 самых популярных репозиториев GitHub, зависящих от OpenTK:
Репозиторий | звёзд |
---|---|
xamarin / Xamarin.Формы Официальный сайт Xamarin.Forms | 4,9 тыс. |
Perfare / AssetStudio AssetStudio — это инструмент для исследования, извлечения и экспорта активов и наборов активов. | 4,7 тыс. |
dotnet / maui .NET MAUI — это пользовательский интерфейс многоплатформенного приложения .NET, платформа для создания собственных приложений для устройств, охватывающих мобильные устройства, планшеты и настольные компьютеры. | 4,7 тыс. |
моно / SkiaSharp SkiaSharp — это кроссплатформенный API для 2D-графики.NET на основе графической библиотеки Google Skia. Он предоставляет комплексный 2D-API, который можно использовать в мобильных, серверных и настольных моделях для рендеринга изображений. | 1,9 тыс. |
TASVideos / BizHawk BizHawk — это мультисистемный эмулятор, написанный на C #.BizHawk предоставляет удобные функции для случайных геймеров, такие как полноэкранный режим и поддержка джойстика, в дополнение к полным инструментам перезаписи и отладки для всех ядер системы. | 1,0 тыс. |
Версия | Загрузки | Последнее обновление | ||
---|---|---|---|---|
4.0,0-до 9,8 | 0 | 29.09.2020 | ||
4.0,0-до 9,7 | 243 | 20.09.2020 | ||
4.0,0-до9,6 | 172 | 14.09.2020 | ||
4.0,0-до 9,4 | 475 | 30.08.2020 | ||
4.0,0-до9,3 | 253 | 21.08.2020 | ||
4.0,0-до9,2 | 483 | 28.07.2020 | ||
4.0,0-до9,1 | 3 411 | 24.04.2020 | ||
4.0,0-до 9 | 411 | 19.04.2020 | ||
4.0,0-пре8 | 206 | 18.04.2020 | ||
4.0,0-до 7 | 285 | 13.04.2020 | ||
4.0,0-до6 | 261 | 10.04.2020 | ||
4.0,0-до 5 | 233 | 09.04.2020 | ||
4.0,0-пре4 | 287 | 06.04.2020 | ||
4.0,0-пре3 | 523 | 19.03.2020 | ||
4.0,0-пре2 | 146 | 19.03.2020 | ||
4.0,0-пре | 189 | 19.03.2020 | ||
3.2.0 | 30 730 | 06.04.2020 | ||
3.1.0 | 101 016 | 04.08.2019 | ||
3.0,1 | 280 611 | 06.07.2018 | ||
3.0,0 | 27 879 | 01.05.2018 | ||
3.0,0-пре | 17 512 | 08.05.2017 | ||
2.0,0 | 186 831 | 23.09.2016 | ||
1.1.2349.61993 | 47 299 | 07.06.2016 | ||
1.1,2225 | 123 389 | 04.02.2016 | ||
1.1.1589.5942 | 80 377 | 18.07.2014 | ||
1.1.1589.5941 | 51 597 | 09.05.2014 | ||
1.1.1579.5793 | 1,188 | 29.04.2014 | ||
1.1.1508.5724 | 4 003 | 17.02.2014 | ||
1.1.1456.5398 | 2 816 | 27.12.2013 | ||
1.1.1161.61462 | 2,225 | 28.08.2013 | ||
1.1.1160.61462 | 3 067 | 07.03.2013 |
Показывай меньше
.
Страница не найдена · GitHub Pages
Страница не найдена · GitHub Pages
Файл не найден
Сайт, настроенный по этому адресу, не
содержать запрошенный файл.
Если это ваш сайт, убедитесь, что регистр имени файла соответствует URL-адресу.
Для корневых URL (например, http://example.com/
) вы должны предоставить
index.html
файл.
Прочтите полную документацию
для получения дополнительной информации об использовании GitHub Pages .
.