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 тоже должен проект открыться и запуститься.
Определяется установленными драйверами для видео карты. К примеру, у меня две видео карты на ноутбуке: интегрированная (встроенная, Intel HD Graphics 3000) и дискретная (отдельная, Nvidia Geforce GT 540M (1 GB)). По умолчанию почти все приложения запускаются, используя интегированную видео карту. Я максимально могу обновить драйвер на интегрированной до поддержки OpenGL версии 3.1. Поэтому я обычно в шейдерах использую OpenGL версии 3.0. Да, я могу выбирать, какую версию OpenGL использовать, указав версию в шейдерах. Какая версия GLSL соответствует какой версии OpenGL можно посмотреть в таблице в начале этой страницы: https://en.wikipedia.org/wiki/OpenGL_Shading_Language Дискретная карта у меня поддерживает OpenGL версии 4.6. В этой версии много разных полезных фишек накопилось, которые я ещё не изучал, и которые пока мне не нужны. Можно ограничиться просто минимальной версией в шейдерах (выбирается строкой в начале шейдера #version 110 - это соответствует OpenGL версии 2.0). Но в OpenGL 3.0 есть такая удобная штука, как VAO, её нет в OpenGL 2.0. Честно говоря, я впервые сталкиваюсь, что у кого-то отсутствует обнова для драйвера, чтобы поддерживало хотя бы OpenGL 3.0. Я думаю, либо иногда писать на OpenGL 2.0, а иногда выводить сообщение, что нужно обновить драйвера для графической карты и что требуется OpenGL версии 3.0
Мне такая мысль пришла, что эту тему лучше сделать для любителей рисовать графики на OpenGL/GLSL, чистого WebGL/GLSL. Что OpenGL, что WebGL - разницы в коде нет, весь код получится однотипный. Просто если использовать библиотеки, которые используют OpenGL на разных языка, то получится мешанина. Допустим, один человек использует библиотеку Qwt (Qt+C++), которая тоже внутри себя может использует OpenGL (а может не использует). Получится, что он будет на Qwt выкладывать. В общем, на каждом языке есть множество различных библиотек. А вот если писать на чистом OpenGL/WebGL, то код на всех языках будет одним и тем же, поэтому легко можно переписать с языка на язык. Поэтому я обращаю внимание, что впредь нужно выкладывать код в этой теме только на чистом шейдерном OpenGL/WebGL, а по различным библиотекам для графиков создавать отдельные темы.