Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.05.2017
Сообщений: 47
1

C++ обертка для OpenGL?

28.08.2017, 00:04. Показов 2920. Ответов 45

Author24 — интернет-сервис помощи студентам
Здраствуйте. Почему для OpenGL до сих пор нету хорошей обертки для языка C++? Который одновременно являлся низкоуровненным как OpenGL и одновременно соблюдал главную парадигму C++ (и самого API тоже)? Сколько я искал оберток, пока ни одна и ни у кого не получилась простой и лаконичной.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2017, 00:04
Ответы с готовыми решениями:

Обертка для list
Есть следующая иерархия классов: class A {}; class B : public A {}; class C : public A {};...

Обертка для PDO
Нашел на http://phpfaq.ru/pdo/pdo_wrapper простую обертку. Но не совсем понял, как она работает. ...

Обертка для rsync
написал вот такую обертку для rsync в личных целях #! /usr/bin/python3 import subprocess...

Обёртка для колбеков
Доброго времени суток, уважаемое сообщество. Сразу к делу. Есть код который выглядит примерно...

45
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
Цитата Сообщение от capitalknew Посмотреть сообщение
Если пробросить API (функции OpenGL) через C++ классы, нумерации и т.д. то это тоже движок?
Ты имеешь в виду что бы были классы по типу renderer, renderObj и тд?
По сути это все равно графический движ (хоть возможно и не до конца доделанный).
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
28.08.2017, 03:17 7
Цитата Сообщение от capitalknew Посмотреть сообщение
Почему для OpenGL до сих пор нету хорошей обертки для языка C++?
Есть. Только она сменила название. Vulcan ни что иное как OpenGL 5.0
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
3419 / 1606 / 236
Регистрация: 26.02.2009
Сообщений: 7,854
Записей в блоге: 5
28.08.2017, 12:40 10
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Есть. Только она сменила название. Vulcan ни что иное как OpenGL 5.0
Обёртка подразумевает некое упрощенное использование. А Vulkan относительно OpenGL более низкоуровневый и сложность использования Vulkan'a выше.
Отсюда следует что скорее OpenGL будет обёрткой над Vulkan чем наоборот.

Цитата Сообщение от capitalknew Посмотреть сообщение
У меня если что есть своя обертка
Эта обёртка начинает только мешать как только Вы пытаетесь сделать что-то сложнее чем тутариал.
Я сам когда-то делал подобные обёртки над 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
Цитата Сообщение от capitalknew Посмотреть сообщение
Просто
Просто зачем? Какой реальный профит от этого?

Добавлено через 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
Цитата Сообщение от capitalknew Посмотреть сообщение
В моем случае оправдано multi-bind'ом, созданием одновременно нескольких буферов в одну комманду,
В одну команду для вашей обертки? Это излишнее усложнение кода, на много лучше создать функцию, которая обрабатывает вектор таких буферов, и программисту проще и понятнее.
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 минуты
Цитата Сообщение от capitalknew Посмотреть сообщение
Жаль я в KhronosGroup не могу протолкать.
Цитата Сообщение от capitalknew Посмотреть сообщение
я подумал свою клепать несколько дней назад.
Шутка удалась)

Добавлено через 23 секунды
0
28.08.2017, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2017, 14:24
Помогаю со студенческими работами здесь

Обертка для изображений
Подскажите, пожалуйста, как можно сделать подобную обертку для изображений (изображения будут...

C++ обертка для dll C
Как написать C++ обертку для динамической библиотеки C?

Обертка для ультралайта
здравствуйте кто-то встречал, как заставить работать с Си#?, спс

Обёртка для padding
1)Друзья, напомните, как обрезать паддинги обёрткой.То есть если нужно сделать внутренние отступы в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru