Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
XRuZzz
Антикодер
1683 / 786 / 46
Регистрация: 15.09.2012
Сообщений: 2,898
1

Сложности с формированием массива с нормалями

12.07.2019, 03:42. Просмотров 1574. Ответов 58

Всем привет!

Возникли сложности с формированием буфера, в котором будут нормали.
Делаю по уроку:
https://habr.com/ru/post/333932/
Ссылка на исходник в статье:
https://learnopengl.com/code_viewer....ghting_diffuse
В этом исходнике не используются индексы для отрисовки модели в OpenGL. То есть циклически повторяются чередующееся координаты вершин и нормалей.
Я же читаю координаты нормалей, индексы вершин и нормалей из файла obj. Соответственно и буфер должен опираться, каким то образом, на индексы нормалей.
Каким образом мне загрузить данные в буфер, чтобы координаты вершин не повторялись в буфере?
Нужно ли мне индексы нормалей и текстурных координат отправлять в IBO(EBO)?
То есть к какому виду мне привести эти массивы для отправки их буфера?
Может есть примерчик с правильной укладкой этих данных?

Добавлено через 12 минут
Правда, тут есть алгоритм, как это делается:
Tutorial 9 : VBO Indexing (Filling the index buffer)
но я не уверен, что я его правильно понимаю.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2019, 03:42
Ответы с готовыми решениями:

Ошибка с формированием двумерного массива
Помогите

Манипуляция нормалями в блендере
создал mesh составлен из разных деталей, на плоских поверхностях текстура материала отображается...

TOpenGLControl. Косяк с нормалями?
При отображении фигур (куб, треугольники) с использованием компонента TOpenGLControl происходит...

Неполадки с точечным светом/нормалями
Добрый день всем! У меня проблема с реализацией точечного освещения в DX11, может я не очень хорошо...

Особенности настройки освещения при работе с нормалями
Вектор нормали к плоскости может иметь 2 направления и из-за этого портится освещение. Подскажите,...

58
XRuZzz
Антикодер
1683 / 786 / 46
Регистрация: 15.09.2012
Сообщений: 2,898
17.07.2019, 09:14  [ТС] 21
Сейчас для файла .obj
Кликните здесь для просмотра всего текста
Код
# cube.obj
#

o cube

v -0.500000 -0.500000 0.500000
v 0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 0.500000 -0.500000
v 0.500000 0.500000 -0.500000
v -0.500000 -0.500000 -0.500000
v 0.500000 -0.500000 -0.500000


vn 0.000000 0.000000 1.000000
vn 0.000000 1.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -1.000000 0.000000
vn 1.000000 0.000000 0.000000
vn -1.000000 0.000000 0.000000

s 1
f 1//1 2//1 3//1
f 3//1 2//1 4//1
s 2
f 3//2 4//2 5//2
f 5//2 4//2 6//2
s 3
f 5//3 6//3 7//3
f 7//3 6//3 8//3
s 4
f 7//4 8//4 1//4
f 1//4 8//4 2//4
s 5
f 2//5 8//5 4//5
f 4//5 8//5 6//5
s 6
f 7//6 1//6 5//6
f 5//6 1//6 3//6


Мой алгоритм выдаёт такие данные
- для VBO:
Кликните здесь для просмотра всего текста

Код
 -0.5, -0.5,  0.5,  0.0,  0.0,  1.0,
  0.5, -0.5,  0.5,  0.0,  0.0,  1.0,
 -0.5,  0.5,  0.5,  0.0,  0.0,  1.0,
  0.5,  0.5,  0.5,  0.0,  0.0,  1.0,
 -0.5,  0.5,  0.5,  0.0,  1.0,  0.0,
  0.5,  0.5,  0.5,  0.0,  1.0,  0.0,
 -0.5,  0.5, -0.5,  0.0,  1.0,  0.0,
  0.5,  0.5, -0.5,  0.0,  1.0,  0.0,
 -0.5,  0.5, -0.5,  0.0,  0.0, -1.0,
  0.5,  0.5, -0.5,  0.0,  0.0, -1.0,
 -0.5, -0.5, -0.5,  0.0,  0.0, -1.0,
  0.5, -0.5, -0.5,  0.0,  0.0, -1.0,
 -0.5, -0.5, -0.5,  0.0, -1.0,  0.0,
  0.5, -0.5, -0.5,  0.0, -1.0,  0.0,
 -0.5, -0.5,  0.5,  0.0, -1.0,  0.0,
  0.5, -0.5,  0.5,  0.0, -1.0,  0.0,
  0.5, -0.5,  0.5,  1.0,  0.0,  0.0,
  0.5, -0.5, -0.5,  1.0,  0.0,  0.0,
  0.5,  0.5,  0.5,  1.0,  0.0,  0.0,
  0.5,  0.5, -0.5,  1.0,  0.0,  0.0,
 -0.5, -0.5, -0.5, -1.0,  0.0,  0.0,
 -0.5, -0.5,  0.5, -1.0,  0.0,  0.0,
 -0.5,  0.5, -0.5, -1.0,  0.0,  0.0,
 -0.5,  0.5,  0.5, -1.0,  0.0,  0.0

- для EBO(IBO):
Кликните здесь для просмотра всего текста
Код
[0,1,2,2,1,3,0,1,2,2,1,3,4,5,6,6,5,7,0,1,2,2,1,3,4,5,6,6,5,7,8,9,10,10,9,11,0,1,2,2,1,3,4,5,6,6,5,7,8,9,10,10,9,11,12,13,14,14,13,15,0,1,2,2,1,3,4,5,6,6,5,7,8,9,10,10,9,11,12,13,14,14,13,15,16,17,18,18,17,19,0,1,2,2,1,3,4,5,6,6,5,7,8,9,10,10,9,11,12,13,14,14,13,15,16,17,18,18,17,19,20,21,22,22,21,23]

Вроде неплохо(половина куба "под землём"), но диффузная часть освещения пока странно работает. Высвечивается треугольник, который находится внутри одного из треугольного полигона:
0
Миниатюры
Сложности с формированием массива с нормалями  
XRuZzz
Антикодер
1683 / 786 / 46
Регистрация: 15.09.2012
Сообщений: 2,898
17.07.2019, 09:22  [ТС] 22
Шейдеры такие же как в уроке, буду проверять и сравнивать остальной код...
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
17.07.2019, 09:30 23
XRuZzz, вы рисовали когда-нибудь кубик без загрузки его в из .obj файла? Если да, то можете показать данные для VBO и данные для EBO, которые вы задали из кода?
1
XRuZzz
Антикодер
1683 / 786 / 46
Регистрация: 15.09.2012
Сообщений: 2,898
17.07.2019, 11:45  [ТС] 24
Всем спасибо, я доделал диффузное освещение.

Послесловие: Сложнее всего было придумать алгоритм загрузки из obj, который я выше описал.
0
Миниатюры
Сложности с формированием массива с нормалями  
17.07.2019, 11:45
XRuZzz
Антикодер
1683 / 786 / 46
Регистрация: 15.09.2012
Сообщений: 2,898
17.07.2019, 13:23  [ТС] 25
Осталось только всё заново переписать
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
17.07.2019, 14:08 26
Цитата Сообщение от XRuZzz Посмотреть сообщение
Послесловие: Сложнее всего было придумать алгоритм загрузки из obj, который я выше описал.
Всё равно у меня есть ощущения, что вы не до конца поняли, что у вертекса (который определяется индексами в EBO) может быть только по одному атрибуту:
  • Атрибут "координата"
  • Атрибут "цвет"
  • Атрибут "нормаль"
  • Атрибут "текстурная координата"
Если с помощью атрибутов определить только 8 вершин, то не получится покрасить грани кубика в разные цвета и задать нормали. Если определить 24 вертекса через индексы, то не получится покрасить треугольники граней в разные цвета.

Я покрасил кубик в Blender'е таким образом, как на скриншоте ниже, и загрузил своим загрузчиком на C# в WinForms и нарисовал с помощью OpenTK OpenGL 3.1

Попробуйте загрузить мой кубик Cube.zip с помощью своего загрузчика. Покажите на скриншоте, что у вас получилось. Я ещё нашёл пример, как можно вращать камеру с помощью мыши вокруг объекта, изменяя внутренние члены матрицы вида, используя косинусы и синусы. Очень полезная штука во время разработки, чтобы посмотреть модель с разных сторон, что нигде не возникло проблем. Я взял данный алгоритм из бесплатной онлайн книге по компоютерной графике, из этого параграфа: 7.1.5 Rotation by Mouse. Я записал Gif-анимацию, чтобы продемонстрировать поворот камеры вокруг объекта с помощью мыши.





Название: Cube.gif
Просмотров: 37

Размер: 740.4 Кб
0
Antikl
с++
378 / 354 / 170
Регистрация: 15.07.2015
Сообщений: 1,861
Завершенные тесты: 6
17.07.2019, 21:11 27
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А если он действительно создаёт сам в памяти видеокарты дополнительно 12 вертексов, то по какому алгоритму он это делает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
std::vector<unsigned int>  out_indices; //тут храниться сами индексы 36
std::vector<vec3f>  out_vertices;//тут хранятся сами вершины их 24
std::vector<vec3f>  vb;//сюда записываеться финальный результат
for(unsigned int i = 0; i < out_indices.size(); i++)
{
      vb.push_back(out_vertices[out_indices[i]]);
}
 
после этого vb попадает в шейдер
 
vec4f screen_coords[3];
//таким примерно отрисовываеться
   for(unsigned int i = 0; i < vb.size(); i+=3)
    {
        for(int j = 0; j < 3; j++)
        {
            screen_coords[j] = shader.vertex(i, j);
        }
       //функция отрисовки одного треугольника, принимает массив вершин, шейдер тут для передачи результата фрагментного шейдера
        triangle(screen_coords, shader);
    }
результат на картинке,
0
Миниатюры
Сложности с формированием массива с нормалями  
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
17.07.2019, 23:23 28
Antikl,
Цитата Сообщение от Antikl Посмотреть сообщение
std::vector<unsigned int> *out_indices; //тут храниться сами индексы 36
std::vector<vec3f> *out_vertices;//тут хранятся сами вершины их 24
Мой вопрос касался "out_indices". Как OpenGL создаст дополнительно 12 индексов? В коде же мы определили 24 индекса.
0
Antikl
с++
378 / 354 / 170
Регистрация: 15.07.2015
Сообщений: 1,861
Завершенные тесты: 6
17.07.2019, 23:41 29
Цитата Сообщение от 8Observer8 Посмотреть сообщение
В коде же мы определили 24 индекса.
нет индексов 36 то вершин 24
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
17.07.2019, 23:52 30
Цитата Сообщение от Antikl Посмотреть сообщение
нет индексов 36 то вершин 24
У меня вопрос был, что в коде у меня 24 индекса, поэтому я и спросил, как станет 36

Добавлено через 4 минуты
Я имеею ввиду, код из этого сообщения.
0
Antikl
с++
378 / 354 / 170
Регистрация: 15.07.2015
Сообщений: 1,861
Завершенные тесты: 6
17.07.2019, 23:57 31
Цитата Сообщение от 8Observer8 Посмотреть сообщение
У меня вопрос был, что в коде у меня 24 индекса, поэтому я и спросил, как станет 36
я не видел что у вас 24 индекса, я сам генерировал своим загрузчиком, так же я использовал asimp то для обычного куба было 36 индексов
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
18.07.2019, 00:03 32
Цитата Сообщение от Antikl Посмотреть сообщение
я не видел что у вас 24 индекса, я сам генерировал своим загрузчиком, так же я использовал asimp то для обычного куба было 36 индексов
Вы написали:
но модель все равно будет 36 верши
На что я ответил здесь:

Вот этот момент я не понял. Почему всё равно будет 36 вершин? Что имеется ввиду? Вот, например, кубик с цветными гранями на WebGL и TypeScript в песочнице. Здесь в массиве координат вершин определено 24 вершины:
Там в сообщении я скопировал часть своего кода, чтобы показать, что у меня задано 24 индекса для описания вертексов. Поэтому я и стал выяснять, что у меня 24 вертекса, а вы писали, что эти 24 вертекса будут преобразованы в 36.

Вот так я задаю 24 вертекса:

Javascript
1
2
3
4
5
6
7
8
       let indices = new Uint8Array([ // Indices of the vertices
            0, 1, 2, 0, 2, 3,       // front
            4, 5, 6, 4, 6, 7,       // right
            8, 9, 10, 8, 10, 11,    // up
            12, 13, 14, 12, 14, 15, // left
            16, 17, 18, 16, 18, 19, // down
            20, 21, 22, 20, 22, 23  // back
        ]);
Поэтому мне стало интересно, как OpenGL создасть ещё 12 вертексов к моим 24.
0
Antikl
с++
378 / 354 / 170
Регистрация: 15.07.2015
Сообщений: 1,861
Завершенные тесты: 6
18.07.2019, 10:31 33
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Поэтому мне стало интересно, как OpenGL создасть ещё 12 вертексов к моим 24.
ну тут ответ очевиден для одной плоскости из 2-х треугольника это 6 вершин, 2 вершины в верхнем и 2 в нижнем углу одинаковы рис 1, теперь
вы рисовали через функцию glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, 0); указывая 36 индексов, если указать как есть на самом деле 24 индекса то не отрисуеться задняя часть и нижняя часть рис 2, указав 36 индексов то мы говорим opengl что нужно дорисовать 12 вершин которые не имеют 4 совпадения указано на рис 2
1
Миниатюры
Сложности с формированием массива с нормалями   Сложности с формированием массива с нормалями  
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
20.07.2019, 11:18 34
XRuZzz, попробуйте найти аналог Assimp на Haskel. Готовый загрузчик помогает писать свой загрузчик. Например, помогает выбрать структуру данных. А ещё помогает разбираться, как хранятся данные модели. Наверняка вы скоро заходите импортировать в свою программу анимации из Blender. Например, анимацию на костях. ОBJ-файл не умеет хранить анимации. Нужно разбираться, например, с форматом Collada (.dae). Опять же, готовый загрузчик должен сильно помочь в написании своего загрузчика из .dae

Я лет 5-7 назад пробовал подключать Assimp к C++ проекту. По-моему, тогда я промучился, у меня вроде не получалось собрать его из исходников. Либо я тогда не мог подключить к VS или к Qt. Тогда я плохо умел собирать из исходников и подключать к VS. Но сейчас я использую C#. Разработчики Assimp сделали версию для .NET, называется Assimp.NET. Для установки и подключения библиотеки нужно в NuGet (это установщик пакетов встроенный в VS) набрать: assimpnet и нажать кнопку Install.

Что интересно, Assimp считает фейсы с одинаковыми материалами, как отдельные меши. Я вчера пол дня потратил, чтобы понять, почему у меня модель распадается на отдельные меши. Мне помогло понять эту проблему это видео: Using Assimp in C++ - Basic Loading (geometry and materials)

Моё сегодняшнее достижение, к которому я шёл долгие годы. Покрасил фейсы в Blender'е. Написал вращение камеры вокруг объекта с помощью мыши:

Название: PlaneWithAssimp.gif
Просмотров: 29

Размер: 315.5 Кб

Если вам интересно, как рассчитать новое положение камеры на основе MouseMove и сгенерировать новую матрицу вида, то пишите вопросы, я разобрался. Вот часть кода:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Метод getViewMatrix возвращает новую матрица вида, которая определяет
        // положение камеры
        public Matrix4 GetViewMatrix()
        {
            float cosX = (float)Math.Cos(_rotateX / 180f * (float)Math.PI);
            float sinX = (float)Math.Sin(_rotateX / 180f * (float)Math.PI);
            float cosY = (float)Math.Cos(_rotateY / 180f * (float)Math.PI);
            float sinY = (float)Math.Sin(_rotateY / 180f * (float)Math.PI);
 
            Matrix4 matrix = new Matrix4();
 
            matrix.Column0 = new Vector4(cosY, 0, sinY, 0f);
            matrix.Column1 = new Vector4(sinX * sinY, cosX, -sinX * cosY, 0f);
            matrix.Column2 = new Vector4(-cosX * sinY, sinX, cosX * cosY, -_viewDistance);
            matrix.Column3 = new Vector4(0f, 0f, 0f, 1f);
 
            return matrix;
        }
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
20.07.2019, 12:02 35
XRuZzz, если в интернет поисковике набрать: haskell assimp, то выдаёт ссылки на GitHub с портами. Может есть достойный порт на Haskell.

Я покрасил в Blender'е фейсы кубика в разные цвета. AssimpNet загрузил без проблем. Это мой первый кубик загруженный с помощью AssimpNet.

Название: CubeWithFaceColors.gif
Просмотров: 30

Размер: 566.4 Кб
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
20.07.2019, 12:15 36
XRuZzz, у меня вопрос к вам немного не по теме. Вы умеете на Haskell создавать исполняемые файлы для Windows? Не могли бы вы собрать ваше приложение в EXE и прикрепить в видео архива? Мне очень интересно будет запустить, посмотреть как работает, сколько весит EXE и дополнительные библиотеки, насколько легко демонстрировать результат работы в виде исполняемых файлов.

Я собрал C# приложение с кубиком в Release для Windows x86, .NET 4.0: CubeWithAssimp.zip
0
XRuZzz
Антикодер
1683 / 786 / 46
Регистрация: 15.09.2012
Сообщений: 2,898
21.07.2019, 11:42  [ТС] 37
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Вы умеете на Haskell создавать исполняемые файлы для Windows? Не могли бы вы собрать ваше приложение в EXE и прикрепить в видео архива?
Я не любитель Windows-а.
А исходники пока не удаётся опубликовать...
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
21.07.2019, 14:15 38
Цитата Сообщение от XRuZzz Посмотреть сообщение
Я не любитель Windows-а.
А что вы используете? Mac или Linux? А если виртуалку поставить и собрать исполняемый файл? Я не настаиваю, просто интересно было бы запустить у себя ваше творение.

Цитата Сообщение от XRuZzz Посмотреть сообщение
А исходники пока не удаётся опубликовать...
Меня лично очень мотивирует именно свои или чужие исполняемые приложения. Это как промежуточный итог продукта, который может запустить каждый. Можно своему другу скинуть, чтобы он заценил. А вдруг у него Mac или Linux? Я в этом смысле провёл небольшое интеллектуальное исследование. Сейчас очень многие пользователи, особенно в США и Европе перешли или переходят на Mac. А вот что делать, если хочется сделать 3D приложение, которое будет доступно пользователям всех ОС?

Я лично решил этот вопрос для себя - я в основном налегаю на WebGL и TypeScript. Такое приложение запускается везде, где есть браузер в один клик без необходимости скачивать архив. Некоторые браузеры блокируют скачку Exe, выдавая предупреждение, которое, я думаю, боятся многие пользователи.

Можете попробовать запустить две моих простых игрушки на WebGL и TypeScript в своей ОС:
Но не все 3D приложения можно расположить в виде веб-приложения, потому что браузер имеет ограничения на возможности OpenGL. Для некоторых приложений нужна бОльшее быстродействие, а браузер пока не поддерживает такие шейдеры, как: compute и geometry. Для этого случая я использую OpenTK, который обеспечивает доступ к OpenGL 4. К тому же OpenTK - это кроссплатформенная библиотека, которая позволяет писать на C# и OpenGL даже для мобильных платформ: Android и iOS засчёт того, что OpenTK встроена в бесплатный Xamarin от компании Microsoft.
0
Antikl
с++
378 / 354 / 170
Регистрация: 15.07.2015
Сообщений: 1,861
Завершенные тесты: 6
21.07.2019, 20:48 39
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А вот что делать, если хочется сделать 3D приложение, которое будет доступно пользователям всех ОС?
просто собрать для всех OC, а пользователю дать выбор к примеру на сайте для какой ОС ты хочешь установить приложение, и так делают game dev тоисть игровая индустрия итд, но это не значит что вам нужно с Web переходит, он все-таки развивается
0
8Observer8
3374 / 1816 / 314
Регистрация: 05.10.2013
Сообщений: 5,538
Записей в блоге: 136
21.07.2019, 22:29 40
Цитата Сообщение от Antikl Посмотреть сообщение
просто собрать для всех OC
WebGL достаточно хорошо уже развился, чтобы делать 3D приложения и 2D/3D игры довольно широкого круга. Я до того как перешёл на C# и Web занимался Qt и OpenGL. Сейчас я умею собирать из Unity под 4 основные платформы: Windows, Linux, Mac, Android. Под iOS к сожалению не умею собирать. Если брать OpenGL и C# для я пока умею собирать только под Windows, но OpenTK позволяет собирать под все 5 основных платформ. Я сравниваю по времени, сколько нужно этого времени, чтобы научиться собирать под 5 платформ и чтобы, умея это делать, сравнить сколько времени это занимает. Я предполагаю, что потребуется немало времени, чтобы собирать из OpenTK C# на Mac, Android и iOS. Я просто сравниваю, сколько нужно времени, чтобы собрать под Web. По моим примерным прикидкам по логике выходит, что под Web собирать гораздо быстрее, если нужно чтобы заработало под 5 основных платформ.

Цитата Сообщение от Antikl Посмотреть сообщение
и так делают game dev тоисть игровая индустрия итд
Я немного работал в игровой индустрии в конторе, которая делала игры на Unity в основном для Android и iOS. Вы имеете ввиду движки типа Godot или Unity? Или вы имеете ввиду OpenGL? Сколько времени у вас займёт сборка под все 5 основных платформ: Windows, Linux, Mac, Android и iOS. Я пробовал собирать из Unity под все платформы кроме iOS. Занимает примерно по 30 секунд на Windows, Linux, Mac, а вот под Android собирает примерно 3-5 минут.

Цитата Сообщение от Antikl Посмотреть сообщение
просто собрать для всех OC, а пользователю дать выбор к примеру на сайте для какой ОС ты хочешь установить приложение
Это просто звучит. К примеру, вы и я написали змейку. Вы использовали OpenGL C++, а я использовал WebGL и TypeScript, кому будет проще сделать так, чтобы пользователи всех 5 осноных платформ могли поиграть в игру? Этот вопрос можно разбить на вопросы:
  • Кому проще и быстрее будет научиться развёртывать игру? Я имею ввиду время на установку виртуальных машин и выяснения какие библиотеки нужно поставлять в релизе
  • Когда этап обучения развёртывания прошёл, то кому будет быстрее развёртывать игры на 5 основных платформ?
  • Кому дешевле это будет сделать. Я имею ввиду, не нужно ли будет покупать Mac. Подозреваю, что уже есть способы установки Mac на виртуальную машину

Цитата Сообщение от Antikl Посмотреть сообщение
просто собрать для всех OC, а пользователю дать выбор к примеру на сайте для какой ОС ты хочешь установить приложение
А вы уже пробовали собрать под все основные 5 платформ? Ни с одной из них не возникло сложностей. Как я написал выше я не смог, потому что не смог собрать под iOS, а смог только под 4 платформы. Есть такая страничка у вас, где есть ссылки на "hello, world" приложение для 5 платформ? В теории звучит просто, что вот Qt умеет собирать, а когда доходит дело до практики и просишь человека собрать под все 5 платформ, то тут то выясняется, что всё не так и просто. Поэтому я для многих видов графических приложений и игр выбрал WebGL и TypeScript.

Добавлено через 10 минут
Цитата Сообщение от Antikl Посмотреть сообщение
и так делают game dev тоисть игровая индустрия итд,
Я понимаю о чём вы говорите, что для Desktop и затратных игр очень глупо брать OpenGL. Очевидно, что если человек идёт работать в игровую индустрию, то есть: в контору, в команду, в большой проект, то он ему нужен Unity или Godot, которые позволяют собирать в пару кликов под все основные платформы. В моём городе, наверное, нет команды которые пишут игры на OpenGL. Я знаю, по крайней мере, 3 игровые студии в Саратове, которые пишут игры на Unity. Но если человек хочет изучать GLSL, то я бы всем рекомендовал начинать с WebGL и TypeScript, потому что в этом случае очень просто делиться результатами своего труда для всех платформ в том числе и Android и iOS. Все начинают писать игры с Крестиков-ноликов с одного компьютера, Змейки, Арканойда, Тетриса, Сапёра и т.д. На веб легко развернуть и быстро показать. Если у меня Windows, а у друга Mac, то мне не нужно устанавливать виртуальную машину или покупать Mac, я могу просто отправить ему ссылку, а ему не нужно даже: скачивать, искать куда скачался файл, копировать в директорию с игрой, разархивировать, устанавливать, искать ярлык с игрой, тыкать по нему два раза. А ему нужно только кликнуть по ссылке и змейка на WebGL работает
0
21.07.2019, 22:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2019, 22:29

Matrix3, сложности с генерацией массива
Matrix3. Даны целые положительные числа M, N и набор из M чисел. Сформировать матрицу размера M ×...

Затруднение в повышенной сложности одномерного массива
народ подскажите как делать :Дан линейный массив из 20 элементов, заполнен случайным образом из ...

Сортировка массива с ограничением по сложности алгоритма
Отсортировать массив содержащий положительные целые числа не превышающих 100000 за O(N)O(N)O(N).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.