0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
1 | |
C++ обертка для OpenGL?28.08.2017, 00:04. Показов 2920. Ответов 45
Здраствуйте. Почему для OpenGL до сих пор нету хорошей обертки для языка C++? Который одновременно являлся низкоуровненным как OpenGL и одновременно соблюдал главную парадигму C++ (и самого API тоже)? Сколько я искал оберток, пока ни одна и ни у кого не получилась простой и лаконичной.
0
|
28.08.2017, 00:04 | |
Ответы с готовыми решениями:
45
Обертка для list Обертка для PDO Обертка для rsync Обёртка для колбеков |
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 00:32 | 2 |
Такая обертка называется движок.
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 00:33 [ТС] | 3 |
Движок движком, а имеется ввиду чтобы OpenGL был именно OpenGL'ем а не кем иным (правда со вкусом C++).
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 00:40 | 4 |
capitalknew, вы хотите совместить несовместимое.
Вы либо юзаете сам опенгл и имеете все свободу действий, либо принимаете систему ограничений более выскоуровневой системы.
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 00:45 [ТС] | 5 |
Если пробросить API (функции OpenGL) через C++ классы, нумерации и т.д. то это тоже движок?
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 01:37 | 6 |
Ты имеешь в виду что бы были классы по типу renderer, renderObj и тд?
По сути это все равно графический движ (хоть возможно и не до конца доделанный).
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
28.08.2017, 03:17 | 7 |
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 10:45 [ТС] | 8 |
У меня если что есть своя обертка
https://github.com/AwokenGraphics/diamond-gl Жаль я в KhronosGroup не могу протолкать.
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 11:33 | 9 |
capitalknew, не шутите так.
Вы так уверены что предусмотрели все? И для всех?
0
|
28.08.2017, 12:40 | 10 |
Обёртка подразумевает некое упрощенное использование. А Vulkan относительно OpenGL более низкоуровневый и сложность использования Vulkan'a выше.
Отсюда следует что скорее OpenGL будет обёрткой над Vulkan чем наоборот. Эта обёртка начинает только мешать как только Вы пытаетесь сделать что-то сложнее чем тутариал. Я сам когда-то делал подобные обёртки над OpenGL только под Delphi. Да, для простых примеров они хорошо подходили. Но вот, например, возьмём объект-текстуру. Я не смотрел ваш код, но вангую что вы реализовали только для 2D случая. Хотя в общем случае это не правильно и рано или поздно потребуются другие типы текстур. В итоге вместе с красивым простым обёрточным кодом появляются "низкоуровневые" ф-ии ДЖиэЛя. Или ещё пример: Изменение параметра OpenGL-объекта обычно требуется сначала забиндить этот объект, а потом уже применять изменения. Но что если последовательно идёт изменение N параметров? Будет N биндов? Зачем? Да в OpenGL 4.5 появились DirectStateAccess, но что писать в этом случае для тех у кого OpenGL ниже 4.5 уровня и расширение такое не поддерживается? Вообщем правильная обёртка должна быть на столько тонка, что возникает вопрос: а зачем она такая нужна, если тебе и так приходится в ручную заполнять 90% параметров? ИМХО гораздо правильнее делать более высокоуровневые обёртки, чем повторять OpenGL в ООП-стиле.
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 12:43 [ТС] | 11 |
Просто C++ позволяет не нарушать особо принцип "не повторяй себя". Сейчас я застрял над тем как создать кортеж из буферов по <void, void> с glCreateBuffers(N, ptr).
Код
// only voids support template<class T...> static std::tuple<void_buffer<T>...> create() { GLuint * objects = new GLuint[n]; std::tuple<void_buffer<T>...> tuples = make_tuple<T...>(objects); return tuples; }
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 12:52 | 12 |
Просто зачем? Какой реальный профит от этого?
Добавлено через 1 минуту Просто излишнее усложнение.
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 12:52 [ТС] | 13 |
Просто будет меньше низкоуровненного мусора и лишнего кода. Та же функция получения шейдерного лога упрощена до 3 строк.
0
|
vindast
|
28.08.2017, 12:54
#14
|
Не по теме:
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 12:55 [ТС] | 15 |
В моем случае оправдано multi-bind'ом, созданием одновременно нескольких буферов в одну комманду, и не перегружаясь векторами.
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 13:14 | 16 |
В одну команду для вашей обертки? Это излишнее усложнение кода, на много лучше создать функцию, которая обрабатывает вектор таких буферов, и программисту проще и понятнее.
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 14:15 [ТС] | 17 |
Так можно и остаться в доисторическом C++ веке. Пора переходить на кортежи, а мы все вектора.
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 14:19 | 18 |
capitalknew, зачем? kiss принцип, не?
Вы понимаете о чем речь началась? И Вы спрашиваете почему нет нормальных оберток?
0
|
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
|
|
28.08.2017, 14:21 [ТС] | 19 |
Ну да спрашивал. Ладно, я отдельно задам про C++.
Так толком ответа на вопрос не получил, я подумал свою клепать несколько дней назад.
0
|
61 / 58 / 11
Регистрация: 25.04.2017
Сообщений: 509
|
|
28.08.2017, 14:24 | 20 |
эти кортежи появились 6 лет назад, и за шесть лет никому не упали.
Смысла в них нет. Никакого, только в университете лабу сдать. В реальности вы только себе хуже сделаете. Или тем кто этот код рефакторить будет. Добавлено через 2 минуты Шутка удалась) Добавлено через 23 секунды
0
|
28.08.2017, 14:24 | |
28.08.2017, 14:24 | |
Помогаю со студенческими работами здесь
20
Обертка для изображений C++ обертка для dll C Обертка для ультралайта Обёртка для padding Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |