Примеры могут быть на любом языке программирования, но главное, чтобы они были на шейдерном OpenGL или WebGL, а не на deprecated/legacy OpenGL версии 1 из 90-х.
Я использую два языка: C# и TypeScript. Для C# я выбрал библиотеку OpenTK для доступа к OpenGL, как самую популярную, на данный момент, и самую живую. Устанавливается эта библиотека через NuGet. Здесь туториал, как создать первое окно с помощью OpenTK из консольного проекта: https://opentk.net/learn/chapter1/1-creating-a-window.html Порт уроков из learnopengl.com на OpenTK на официальном сайте: https://opentk.net/learn/index.html
С помощью OpenTK можно создавать приложения c 2D и 3D графикой для: Windows, Linux, macOS, Android и iOS. Компания Microsoft сделала Fork библиотеки OpenTK и встроила её в платформу Xamarin. Здесь хороший туториал, как начать использовать OpenGL на Xamarin: Creating Cross Platform Games with Xamarin Первые 3 урока бесплатные, а остальные можно бесплатно скачать за триал-период с сайта Packtpub по этой ссылке.
OpenTK имеет контролл OpenTK.GLControl, который можно строить в WPF и WinForms приложение, чтобы в одном окне можно было расположить 2D/3D графику и стандартнрое GUI. Устанавливается через NuGet. Я сделаю примеры с рисованием 2D/3D графиков на WPF и WinForms с помощью шейдерного OpenGL версии 3.
Failed to compile the VertexShader shader. Message: ERROR: 0:1: '' : version '130' is not supported
Failed to compile the FragmentShaderArb shader. Message: ERROR: 0:1: '' : version '130' is not supported
А я думал, что наоборот, что d3.js проще. Просто на шейдерах очень много кода получается: матрицы трансформаций, матриц вида, матрица проекции. Очень важно на графике выводить текст, а на WebGL нет вывода текста по умолчанию, поэтому нужно шрифты загружать, например, после обработки BMFont. Нужно организовать переключение шейдерных программ с цветной на текстурированную, чтобы график рисовать в цвете, а буквы выводить в виде текстур. Файл с шрифтом нужно распарсить. Сделать заданную толщину у графика на WebGL - непростая задача, потому что WebGL и шейдерный OpenGL не умею рисовать линии с заданной толщиной, поэтому нужно уметь рисовать с помощью треугольников. Например, линия рисуется в виде прямоугольника, который состоит из двух треугольников. Рисовать графики на D3 намного проще, чем на WebGL. Но шейдеры дают больше возможностей и позволяют строить графики в 3D, то есть, например, можно построить 3D диаграммы в виде цилиндров и вывести текст внутри 3D пространства.
Это вообще извращение - Visual Studio for Mac
Я подозревал, что будут ошибки )
Но скомпилировалось без особых проблем, а при запуске черное окно и эти сообщения в консоли.
А точнее, он проще с точки зрения быстрого старта. Но когда серьёзно нацелен изучать WebGL и OpenGL, то проще на шейдерах, потому что идёт тренировка при рисовании разной 2D/3D графики на шейдерах. Получается, уже проще с языка на язык переносить, накапливаются наработки, знания, навыки. Не нужно переключаться с разных библиотека, потому что OpenGL и WebGL выглядит одинаково. А ещё идёт чистая математика в компьютерной графике, появляется полная свобода. Тут ещё кому что ближе, то и выбирают. Я любые типы графиков буду строить на WebGL и OpenGL - даже отрезок буду нарисовать с текстом по осям. Сейчас WebGL 1.0 поддерживается на всех платформах. Проще то, чем давно занимаешься.
Меня удивляет, что выдало именно такой тип ошибки при запуске на macOS. У меня же подключение идёт OpenTK.dll, то есть “.dll” - это же библиотека для Windows, а на macOS должны быть другой формат динамической библиотеки. А на macOS можно посмотреть какая используется версию OpenGL? Я могу добавить вывод версии OpenGL.
Я просто шейдеры немного поменял. Изменил версию с “130” на “110”. Заменил “in” на “attribute”, убрал строку “out vec4 fragColor;” и заменил “fragColor” на “gl_FragColor”
@BlackFregat, спасибо! Для меня большая радость узнать, что проект созданный в VS на Windows запускается на VS на Mac. Я думаю, что в MonoDevelop на Linux тоже должен проект открыться и запуститься.