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 есть хорошие туториалы, которые я, конечно же, не читал, ознакомься я с ними, и парой проблем было бы меньше. Но, что было, то было:
  1. Первое с чем я столкнулся: контрол вообще не перерисовывался при запуске, решилось просто, нужно не забыть вызвать метод SwapBuffers в конце OnPaint, GLControl уже имеет встроенную функциональность DoubleBuffer, нужно только переключить буфер
  2. Следующий момент, о который я споткнулся — это черные прямоугольники вместо изображений. Решалось вызовом image.SetBlending() перед отрисовкой, сейчас в библиотеке все изображения рисуются с блендингом, поэтому с этим проблем быть не должно
  3. Когда я второй контрол перевел на рельсы OpenTK, то оказалось, что первый контрол после этого перестал выполнять свои функции, решилось вызовом метода MakeCurrent в OnPaint перед отрисовкой элементов
  4. TextPrinter (основа для DrawString) иногда падает при выводе текста, тут ничего не поделаешь — класс глючный и на определенных сочетаниях качества отрисовки, шрифта и размера шрифта он падает, пришлось подбирать шрифт и размер
  5. Еще нужно отслеживать, что контрол загрузился и только после этого работать с OpenTK/GLGraphics, а также проверять, что контрол не в режиме дизайнера форм
  6. При изменении размеров контрола нужно не забыть вызвать 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…

  1. 0
  2. +0
    • Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом
    • Справка Подробные ответы на любые возможные вопросы
    • Мета Обсудить принципы работы и политику сайта
    • О нас Узнать больше о компании Stack Overflow
    • Бизнес Узнать больше о поиске разработчиков или рекламе на сайте

Проекты с использованием OpenTK — OpenTK

LearnOpenTK devvoid, команда OpenTK 3.0.1 Учебник Код официальных руководств на https://opentk.net/
Генод SirusDoma > = 2,0 > = 3,0 Библиотека
Cgen.Audio SirusDoma Библиотека
ObjectTK (ранее DerpGL) Ленивец Библиотека
Ленгин croman102 Двигатель
SevenEngine Семь Двигатель (устаревший)
Балочный станок 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 предоставляет несколько служебных библиотек, включая пакет математической / линейной алгебры, систему управления окнами и обработку ввода.