Gamedev


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
1000 138 331

OpenGL thread 5 Аноним 29/03/17 Срд 08:20:24 3931681
.png (95Кб, 1296x758)
1296x758
Рисуй треугольник!
Треугольник сам себя не нарисует!

Спрашиваем, сами же решаем проблему, сами же отписываемся. Постим книжечки, гуглим, учим математику. Посылаем нахуй за легаси.
Читаем шапку перед тем как задать очередной тупорылый вопрос.

Добро пожаловать. Снова.

Шапка треда:
https://gist.github.com/2ch-gd-opengl/26b94fc6f16100af730d84a3d8bbd557

Аноним 29/03/17 Срд 08:27:45 3931712
diskete.gif (1790Кб, 386x250)
386x250
>>393168 (OP)
предыдущий тред не забудьте сархивировать
Аноним 29/03/17 Срд 08:28:45 3931723
>>393171
В конце шапки ссылки на прошлые треды.
Аноним 29/03/17 Срд 08:32:39 3931734
>>393165
> Так это всё равно интерпритатор в API вулкана, не нужно.
Так ты объясни что именно тебе надо.

> Или ты спрашиваешь зачем мне SDL если есть QT? В кт опенгл какой-то непонятный, почти нет документации. Ни асилил короче.
Делаешь привязку контекста к виджету и пишешь дополнительно пару функций типа обновление виджета и его очистка.
В том же Qt есть пример опенгла.
Аноним 29/03/17 Срд 09:31:27 3931785
>>393173
> Так ты объясни что именно тебе надо.
Да лично мне и SDL вполне хватает. Аноны в /pr/ писали что OpenGL старо и нинужно, типо щас вулкан модно.
Я и спрашивал здесь мнение, так оно или нет.
> виджеты
Ну, наверное можно и так, особенно для несложных игорей в 2д. Но опять же, по QGL почти нет документации, а учитья на двух примерах слишком тяжело для меня. По SDL по крайней мере есть и гуйды и доки.
Аноним 29/03/17 Срд 09:36:15 3931796
>>393178
>Аноны в /pr/ писали что OpenGL старо и нинужно, типо щас вулкан модно
как там вулкан на расбери паях?
Аноним 29/03/17 Срд 09:38:50 3931807
>>393179
А зачем вообще граффика на рпи?
Аноним 29/03/17 Срд 10:00:57 3931818
14621082451300.jpg (34Кб, 590x398)
590x398
>>393180
>А зачем вообще граффика
Аноним 29/03/17 Срд 10:15:31 3931829
>>393181
Ты не понимаешь. RPI - хоум сервера, которые держат файлопомйку, почтовый сервер, рсс фид. Больше ничего. Зачем там граффика?
Аноним 29/03/17 Срд 10:38:34 39318510
>>393168 (OP)
А в чём разница между DirectX-ом и OpenGL?
inb4:погугли.
Мне нужно именно твоё мнение, анон.
Аноним 29/03/17 Срд 10:40:57 39318711
>>393185
Моё мнение в том, что директ 3д сделан микрософтом, а опенгл нет.
Аноним 29/03/17 Срд 10:46:11 39318812
>>393187
И что же лучше выбрать?
Аноним 29/03/17 Срд 10:59:34 39319113
>>393188
Сам-то как думаешь?
Аноним 29/03/17 Срд 11:10:01 39319214
>>393188
Сам выбирай - only Windows или любой тостер
Аноним 29/03/17 Срд 11:32:11 39319315
hahahahaha.webm (1553Кб, 1317x746, 00:00:12)
1317x746
Аноним 29/03/17 Срд 11:34:45 39319416
>>393193
Ну конечно, тебе-то виднее, чем человеку который использует рпи.
Аноним 29/03/17 Срд 11:35:31 39319517
Безымянный.jpg (349Кб, 1920x1080)
1920x1080
Аноним 29/03/17 Срд 11:36:35 39319618
>>393168 (OP)
Смысл пилить свой двиг, когда местный Кирюха в готовых движках не может адекватные модели пилить.

Вообще я бы запретил 3D игры для индюков. Не ваш уровень, господа. Я не обсираю вас и не преуменьшаю скиллы, просто я видел ваше 3D.
Аноним 29/03/17 Срд 11:43:24 39319819
.jpg (61Кб, 640x733)
640x733
>>393196
> Вообще я бы запретил 3D игры для индюков. Не ваш уровень, господа. Я не обсираю вас и не преуменьшаю скиллы, просто я видел ваше 3D.

Вызов принят.
Аноним 29/03/17 Срд 11:48:11 39320020
blender.webm (5477Кб, 1280x720, 00:00:34)
1280x720
>>393196
>триде-модельшик бомбит в треде про OpenGL
Аноним 29/03/17 Срд 12:17:32 39320321
>>393194
Ну вот я лично использую малинку как видеоплеер и портативный эмулятор древних консолей(беру её с собой в поездки, всё умещается в карман рюкзака вместе с беспроводным геймпадом).
Какие будут твои оправдания?
Аноним 29/03/17 Срд 12:20:58 39320422
prrasp3.png (4503Кб, 2048x2048)
2048x2048
>>393203
Я вообще подрубаю планшет к ней и использую как графическую станцию
Аноним 29/03/17 Срд 12:25:52 39320723
>>393204
>>393203
А я на ней протеины считаю, отлично выходит. По мощности как два титана!
Аноним 29/03/17 Срд 12:31:08 39320824
Screenshot20170[...].png (295Кб, 839x434)
839x434
>>393207
если пользователей пишек так много может тогда стоит подать заявку о создании доски об одноплатных компах?
ЧТОБЫ НЕ ЗАСОРЯТЬ ТРЕД О ГРАФИЧЕСКОЙ БИБЛИОТЕКЕ
Аноним 29/03/17 Срд 13:25:12 39321625
>>393204
>4503Кб, 2048x2048
И распидор волшебным образом превращается в пнг-пидора!
Аноним 29/03/17 Срд 13:28:43 39321826
>>393207
Не понял, к чему сарказм?
Как видеоплеер пишка используется гораздо чаще, чем как сервер, если ты не знал.
Аноним 29/03/17 Срд 13:34:20 39322127
>>393179
>как там вулкан на расбери паях?
Нахуя там вулкан/OpenGL, если есть прямой доступ к QPU?
Аноним 29/03/17 Срд 13:34:45 39322228
>>393208
Всё хорошо на своём месте. Например, цветные кони хороши в /s/, аниме в /b/, а СоЦы в /gd.

>>393218
Не знал. Оно же дико неудобно при таком использовании. Ладно еще к телевизору прицепить, типа смарта, но переносной плеер...
Это и питание таскать надо отдельно, и монитор, и питание к нему. Бред.
Аноним 29/03/17 Срд 13:44:27 39322429
>>393222
Я про подключение к телевизору и говорил. Нахуя монитор-то?
Аноним 29/03/17 Срд 13:47:56 39322530
гарандюх.webm (915Кб, 1024x576, 00:00:04)
1024x576
>>393222
>Это и питание таскать надо отдельно, и монитор, и питание к нему. Бред.
На некоторых клонах к плате напрямую батарейку можно припаять. Дисплеи тоже не проблема. Крафтров всяких PiBoy или нетбуков - ютуб полон. Это просто тема не для всех.

Откатимся на несколько постов выше, и в пи-срач тред скатился после того как сюда пришли вулканофаги, у которых в /gd/ вроде свой личный тред есть
>>312089 (OP)
https://2ch.hk/gd/res/312089.html
Аноним 29/03/17 Срд 13:51:37 39322631
>>393224
> Ну вот я лично использую малинку как видеоплеер и портативный эмулятор древних консолей(беру её с собой в поездки, всё умещается в карман рюкзака вместе с беспроводным геймпадом).

А это что? Еще и телек с собой в поездки брать? Совсем ебанулись.
>>393225
Очень не для всех я бы сказал. Для кинца проще купить планшет - тот же гейпад вытягивает 9 часов, не думаю что малина на такое способна. А если вспомнить про отсутсвие хардварной поддержки h.264...
Аноним 29/03/17 Срд 13:57:29 39322832
leave.webm (1217Кб, 1280x720, 00:00:03)
1280x720
>>393226
>не думаю что малина на такое способна
10000mah батарея и повербанки запрещены?

тем более в поездках у белых людей всегда наверняка розетка, или ты вообразил себе обычный плацкарт-вагон РЖД?

Или тебе сознательно хочется сраться с энтузиастами пишек в треде про OpenGL?
Аноним 29/03/17 Срд 14:19:26 39323233
>>393226
>А это что? Еще и телек с собой в поездки брать? Совсем ебанулись.
Манька, во всех приличных гостиницах есть норм телеки с hdmi входом.
Аноним 29/03/17 Срд 14:34:38 39323434
>>393179
Там даже OpenGL работать не хочет, какой тебе вулкан.
Аноним 29/03/17 Срд 18:05:59 39325635
>>393221
>QPU
К чему? Гугл молчит.
Если GPU/CPU, то большие затраты времени на написание кода.
Аноним 30/03/17 Чтв 00:48:39 39333336
>>393192
Мне бы с точки зрения технического потенциала и качества 3д.
Аноним 30/03/17 Чтв 01:06:29 39333437
>>393187
>Моё мнение в том, что директ 3д сделан микрософтом, а опенгл нет.
микрософт активно срал в опенгл

насколько помню всякие фразы "в винде опенгл - это обёртка для директ3д"
Аноним 30/03/17 Чтв 01:19:51 39333538
>>393334
Частично. Но ICD никуда не делись.
Аноним 30/03/17 Чтв 01:32:18 39333939
>>393178
>особенно для несложных игорей в 2д
Если тебе sdl2 норм - пиши под sdl2. Только под апи с рендерером и текстурами.
Аноним 30/03/17 Чтв 01:55:10 39334640
>>393334
> в винде опенгл - это обёртка для директ3д
Насколько я себе представляю, это вульгарная полуправда. Имплементация апи опенгл - это часть драйвера видеокарты. Чтобы до драйвера видеокарты достучаться, opengl32.dll скорее всего действительно обращается к апи direct3d.
Аноним 30/03/17 Чтв 08:22:55 39335441
screenshot.jpg (282Кб, 1098x653)
1098x653
>>393346
Фнкции OpenGL API вплоть до OpenGL 1.2 вызываются из opengl32.dll, который провайдится виндой (wglGetProcAddress для этих функций вернет NULL, нужно напрямую подгружать их из opengl32.dll). 1.3+ вызываются из драйвера (у меня на радеоне это atio6axx.dll)
Аноним 30/03/17 Чтв 08:46:02 39335642
>>393354
Функции OpenGL все время, сколько существует OpenGL на Windows вызываются из ICD/OCD. Вот эти все atio6axx.dll, atiogl.dll, nvogl.dll - это и есть ICD (installable client driver). Он на самом деле не драйвер, просто юзермодная хуйня, предоставляющая интерфейс OpenGL. А внутри он может хоть ходить в драйвер, хоть программно эмулировать все, хоть через Direct3D.
Аноним 30/03/17 Чтв 09:03:33 39335743
Аноним 30/03/17 Чтв 10:55:37 39336144
>>393357
А я не надорвусь писать 900 строк кода только ради вывода треугольника?
Аноним 30/03/17 Чтв 11:13:37 39336445
>>393361
если тебя это не убъёт, ты станешь сильнее
Аноним 30/03/17 Чтв 11:28:47 39336646
>>393364
Это меня не убьёт, но я проебу своё время.
Аноним 30/03/17 Чтв 11:49:30 39336847
!14905368091320.png (684Кб, 774x575)
774x575
>>393366
у вулкана есть свой тред, то что вулканисты срут в opengl-треде - многое уже говорит

вулкан придумали, чтобы большерабочих мест создать
Аноним 30/03/17 Чтв 12:18:37 39337348
>>393368
>вулкан придумали, чтобы большерабочих мест создать
Для кого?
Для индусов?
Аноним 30/03/17 Чтв 12:37:35 39337749
Аноним 30/03/17 Чтв 12:48:25 39338350
>>393377
>возможностей больше
Каких возможностей конкретно тебе не хватает в opengl?
Аноним 30/03/17 Чтв 13:05:04 39339051
>>393383
>Каких возможностей конкретно тебе не хватает в opengl?
Полноценного доступа к железу. Так у тебя из шейдера прямой доступ к памяти есть, например.
Аноним 30/03/17 Чтв 13:15:18 39339152
>>393390
Тебе на ПеКа вот прямо жизненно необходим прямой доступ к видеопамяти? Ну так хули, пиши свой собственный видеодрайвер, в котором будет всё так, как тебе надо, никто ж не запрещает. Только учти, что у двух видеокарт на одном и том же чипсете от разных производителей память может быть организована по разному.
Аноним 30/03/17 Чтв 13:44:34 39339453
>>393391
Ты тред читаешь вообще? Мы о конкретном железе говорим, Rasperry Pi, которое специально предназначено для ковыряния в нем.
Аноним 30/03/17 Чтв 15:48:56 39342654
>>393391
>>393383

innuendo, , залогинься. Андрюша опять в попу не дал?
Аноним 31/03/17 Птн 05:38:07 39351155
>>393426
лол, сап комрад, я тоже с бб. если это ты. как поживаешь, давай свяжемся? dwnshft
Аноним 31/03/17 Птн 14:19:55 39359856
Анон, помоги! Какой самый просто способ нарисовать сетку поверх 3D фигуры?
Аноним 31/03/17 Птн 14:40:33 39360657
Аноним 31/03/17 Птн 14:50:24 39361058
>>393606
Это я видел, но мне нужно немного не то: во-первых, я хочу, чтобы под сеткой было видно отрендеренную раскрашенную фигуру, во-вторых, у самой фигуры слишком мелка сетка, в глазах рябит, а я хочу сделать крупную, просто для масштаба на самом деле я не хочу, но заказчик требует. Пробовал рисовать линии поверх фигуры (с теми же координатами) и отключать depth test, но тогда видно сетку с той стороны, с которой её быть видно не должно. Если его включить, то линии начинают рябить, потому что начинается z-buffer fight.
Аноним 31/03/17 Птн 15:44:12 39363359
Аноним 02/04/17 Вск 19:52:02 39418260
Безымянный.png (4Кб, 800x600)
800x600
Хелп аноны. Как работает постпроцессинг в opengl??? У меня получается какая-то хуйня. Вот например мне нужно размыть объект или bloom сделать. Я значит беру записываю видимую часть объекта в данный момент через stencil buffer, потом рисую сцену и накладываю эту текстуру с шейдером размытости или bloom. И получается вроде норм, но если объект перекрывает прозрачный объект то стенсил не пропускает. Как это делают?? Если стенсил для прозрачных отключить то будет рисоваться поверх, или сначала делать стенсил для прозрачных а потом еще чтобы наложить прозрачные. Нихуя не понимаю.
Аноним 02/04/17 Вск 20:22:34 39418761
Безымянный.png (4Кб, 800x600)
800x600
>>394182
Вот если записать в стенсил без прозрачных, а потом во второй стенсил вырезать из сцены этот объект с буффером глубины чтобы только прозрачный кусок что накладывается на модель остался, то получиться то что на пике. Осталась только размытая хуйня что поверх прозрачного рисуется. Или может это по другому делается??? А то я тут какую-то хуйню придумал, или не хуйню??? И как тогда сделать чтобы размытая хуйня перекрывалась прозрачным??
Аноним 02/04/17 Вск 21:01:15 39419862
Безымянный.png (19Кб, 800x600)
800x600
Еще одно придумал, результат уже лучше но все равно получается очень много операций и размытость остается где не должна быть. Нихуя найти не могу по этому поводу, хуета какая-то, как же она меня бесит. Как делают нормальные люди? Я такого случая не могу нагуглить что-то.
Аноним 02/04/17 Вск 21:50:09 39420363
>>394198
Делай блюр в отдельном буфере, потом его накладывай.
Аноним 02/04/17 Вск 22:13:56 39420864
>>394203
Так я его в отдельный буфер и записываю, ничего не получается с полупрозрачными объектами.

Аноним 02/04/17 Вск 22:35:21 39421865
>>394208
Рисуй сперва непрозрачные объекты, потом поверх них - прозрачные, в порядке от дальнего к ближнему.
Аноним 02/04/17 Вск 22:59:58 39422966
>>394218
Дак это понятно, дело в размытии. Чтобы размыть нужно отрендерить объект в текстуру, размыть ее и наложить на уже отредеренную сцену. После этого уже не поставшь прозрачные объекты, потому что рамытая текстура уже в 2д.
Аноним 02/04/17 Вск 23:42:11 39424867
>>394229
Ну не делай в 2д. Когда рендеришь в текстуру, пиши и в z-буфер тоже.
Аноним 03/04/17 Пнд 09:25:16 39430168
>>394248
Да точно, спасибо, я дебил. Так лучше намного.
Аноним 04/04/17 Втр 19:05:32 39460669
brick.png (1753Кб, 1257x857)
1257x857
Как оно, а?
Аноним 04/04/17 Втр 19:09:37 39460770
wallpap0.jpg (642Кб, 2560x2048)
2560x2048
>>394606
запили вебм с анимацией вращения, анон, мы не /td/ чтобы на статические скрины кубов дрочить
Аноним 04/04/17 Втр 19:12:14 39461071
>>394606
как говно

мимо-из-/td/
Аноним 04/04/17 Втр 22:16:36 39464572
>>394606
У тебя текстурная матрица похоже неправильно считается - выпуклоси/вдавленности на разных гранях по разному выглядят. А так круто, конечно, но бессмысленно. ИРЛ использовать не будешь - артефакты на швах и производительность не оче.
Аноним 05/04/17 Срд 06:27:16 39468773
>>394645
Не думаю, там, кажется, просто негде ошибаться, я просто выдавливаю по нормали и вариант с нормалью в не ту сторону отдельно рассмотрен. Разные стороны могут выглядеть по разному из-за нормал-мэппинга.
Ну у меня эта штука прикручена к генератору карт нормалей и карт высот.
Аноним 05/04/17 Срд 15:33:55 39472874
>>394687
У кирпичной стены ирл обычно кирпичи выступают наружу, а шов вдавлен. У тебя же наоборот.
Аноним 05/04/17 Срд 18:17:38 39476375
>>394728
Ну так я генерирую карту высот только по картинке, так уж получилось
Аноним 05/04/17 Срд 19:12:07 39477976
>>394763
Сделай флаг, чтобы можно было генерировать наоборот.
Аноним 05/04/17 Срд 19:24:50 39478577
brick2.png (42Кб, 1578x799)
1578x799
>>394779
Это, конечно, имеет смысл но не сильно.
В случае этих же кирпичиков часть шва всё же вдавливается, переверну - эта часть станет торчать наружу. Генерировать height map по картинке - просто плохая идея. В планах чтобы юзер мог с, интерфейсом аля очень обрезанный 3дэсмакс поперетаскивать вершинки и на основе этого переделывать мэпу
Аноним 05/04/17 Срд 19:30:33 39478778
brick2.png (42Кб, 1578x799)
1578x799
>>394785
Надеюсь, сейчас не отвалится
Аноним 06/04/17 Чтв 00:51:44 39485179
sw-glitch.webm (7138Кб, 1280x720, 00:00:22)
1280x720
В защиту кирпичиков
Аноним 06/04/17 Чтв 21:37:23 39508880
Многие в интернете пишут, что OpenGL не особо отличается от DirecxtX-а, только гораздо проще и легче + мультиплатформенность.
Собственно, вопрос - почему сейчас никто из разработчиков более-мене серьёзных игр его не используют?
Аноним 06/04/17 Чтв 23:17:03 39513081
Аноним 06/04/17 Чтв 23:27:07 39513182
>>395088
кармак в своё время обосрал директикс
Аноним 07/04/17 Птн 00:05:05 39515083
>>395130
эпик геймс наверное дураки совсем, ага
07/04/17 Птн 00:09:11 39515284
>>395130
А есть подобный список, но в котором OpenGL-only игры? А то в этом полно тех, которые оба API умеют.

>>395150
> эпик геймс наверное дураки совсем, ага
И правда, зачем они поддержку DirectX городили?
Аноним 07/04/17 Птн 00:48:22 39516185
>>395152
> OpenGL-only игры
> А то в этом полно тех, которые оба API умеют.
А какая разница? Задача заработать денег, а не дебам с гд угождать.
Аноним 07/04/17 Птн 13:39:06 39523286
>>395088
>почему сейчас никто из разработчиков более-мене серьёзных игр его не используют?
Сейчас все местные разработчики более-мене серьёзных игр соберутся и тебе ответят.
Аноним 07/04/17 Птн 14:02:44 39523387
>>395232
А ответ на этот вопрос знают только они?

>>395131
Майки в своё время унизили ОпенГл.
Аноним 07/04/17 Птн 14:25:55 39523488
ПРИШЛО ВРЕМЯ ПЕ[...].webm (3254Кб, 640x360, 00:01:10)
640x360
>>395233
>Майки в своё время унизили ОпенГл
уже писалось выше в треде вроде
Аноним 07/04/17 Птн 14:30:47 39523789
>>395234
Ну, это толсто.
Переустанавливать шиндовс чаще, чем раз в 5-10 лет, будет только быдло с компьютерной неграмотностью.
Аноним 07/04/17 Птн 21:23:59 39530690
>>395233
>А ответ на этот вопрос знают только они?
У них свои резоны использовать DirectX, завязанные на экономику серьезных игр, с качеством самих API связанные опосредованно.
Аноним 08/04/17 Суб 23:46:56 39552291
>>395152
Ты долбаеб?
А впрочем, зачем я спрашиваю это у человека, который задаёт вопрос в тематике с сажей.
Аноним 13/04/17 Чтв 21:15:02 39617492
yuyu.png (271Кб, 788x594)
788x594
Пишу тут свой рендерер pmx моделей, и внезапно упёрся в рендер контуров. Всё, что ни придумаю или украду даёт результаты, близкие к говну.
Вроде как это давно решенная задача же, куча игр(да и тех же ммд программ) с хорошими рендерами контуров вокруг, а нормально описанного решения нагуглить не могу.
Ткните меня решение, если знаете, где прочитать можно, пожалуйста.
Аноним 14/04/17 Птн 07:50:08 39623493
>>396174
Опиши нормально свою проблему. Что за рендерер? Пишешь свой софтверный рендерер или что? Или ты с помощью OpenGL пытаешься какую-то необычную хуйню в шейдерах сделать?
Что это за контуры вообще? Откуда они взялись? Как ты их делаешь?
На пикче я вижу какую-то NPR дрисню. Какой именно алгоритм ты используешь? Есть какой-то источник/статья?
Аноним 14/04/17 Птн 08:33:28 39623794
>>396174
>Ткните меня решение, если знаете, где прочитать можно, пожалуйста.
Смотришь дельты по буфферу глубины (и по буфферу нормалей)

Если без шейдеров - то как вариант - вытянуть модель за нормали (сделать пожирнее) и рисовать сплошным чёрным цветом с каким-нибудь трюком.
Аноним 14/04/17 Птн 17:02:48 39635595
Untitled-1.png (57Кб, 806x626)
806x626
>>396234
>>396237
Я думал, что очевидно, что я на OpenGL пишу, раз в тематическом треде спрашиваю. Пишу рендер на шейдерах, контуры пытался сначала рендерить по карте нормалей через собел(https://en.wikipedia.org/wiki/Sobel_operator), но говно получалось.
Долго гуглил, нихуя толкового не нашёл в итоге, в итоге навелосипедил дальше собственный алгоритм на карте высот и нормалей, уже лучше, но всё равно мне результат не нравится, явно лучше можно сделать.
Аноним 14/04/17 Птн 19:22:27 39637796
>>396355
ты уже почти сделал всё, пиздато выглядит, добавь антиалиасинг и подкрашивай эджи под цвет кожи и можешь со спокойной душой расшарить шейдер с аноном
Аноним 14/04/17 Птн 20:16:33 39638297
Пиздец вы тут велосипеды изобретаете. Мда хех
Аноним 14/04/17 Птн 20:45:50 39638398
bicycle.webm (37711Кб, 1280x720, 00:04:53)
1280x720
>>396382
>Пиздец вы тут велосипеды изобретаете
Аноним 15/04/17 Суб 13:19:29 39647899
Как начать? Где шапка с нубовопросами?
Аноним 15/04/17 Суб 15:12:45 396488100
>>396478
>Как начать? Где шапка с нубовопросами?
Лишняя хромосома - это навсегда.
Аноним 15/04/17 Суб 15:20:14 396490101
>>396355
Я так делал в свое время:
1. Ставишь glPolygonOffset в сторону от камеры, чтобы полигоны чуть дальше рисовались.
2. Включаешь wireframe с толщиной линий 2 (или больше для жирных линий) и рендеришь сетку цветом линий.
3. Убираешь оффсет и линии, ренедришь свои полигоны поверх.
Дешево и сердито, правда с GLES/WebGL не будет работать, поскольку там glPolygoneMode нету.
Аноним 15/04/17 Суб 16:18:38 396493102
>>396490
Не, это просто обводка по контуру всего меша будет. Мне же нужно выступающие детали выделять.
Аноним 15/04/17 Суб 16:19:10 396494103
>>396488
Весеннее обострение скорее.
Аноним 15/04/17 Суб 18:08:14 396512104
>>396493
>Не, это просто обводка по контуру всего меша будет
Не только, z-буфер-то включен, вокруг выступающих деталей тоже линии будут.
Аноним 15/04/17 Суб 18:18:41 396513105
>>396512
не будет если это полигоны того же меша
Аноним 15/04/17 Суб 18:40:51 396514106
goblin-s.png (40Кб, 140x195)
140x195
>>396355
>>396493
есть мысля что нужно короче взять градиент без направления с з-буфера и записать в сурфейс, затем этот сурфейс нормализировать под [0..1], затем возвести в степень ниже единицы или поделить на экспоненту дабы получить картину линий с фейк-антиалиасом и класть с наложением multiply поверх.

как вариант потом можно заблюрить оригинальное изображение и класть обычным наложением поверх картинки, а сурфейс линий использовать в качестве маски прозрачности. тогда линии будут ещё и цветные. но это экспериментально, я плохо представляю как оно будет выглядеть в цвете.

но тут проблема - либо шейдор будет класться на финальное изображение сцены и быть поц-эффектом, что накладывает очевидные ограничения, либо на обжекте не будет аутлайнов и будут только внутренние линии
Аноним 16/04/17 Вск 00:23:15 396541107
>>396514
По твоему методу шум будет просто пиздецовый. Два часа будешь его тюнить, чтобы линии вокруг случайных полигонов не выскакивали, и всё равно до конца не оттюнишь.
Аноним 16/04/17 Вск 01:04:42 396548108
>>396513
>не будет если это полигоны того же меша
У меня все работало. Это было стоковый алгоритм 15 лет назад, все так делали.
Аноним 16/04/17 Вск 01:14:00 396550109
>>396548
Хотя хули я тут спорю с юнити-дебсами.
Аноним 16/04/17 Вск 02:14:24 396559110
Аноним 16/04/17 Вск 02:49:30 396561111
wtf.png (44Кб, 799x599)
799x599
>>396550
>OpenGL тред
>юнити
Туда ли ты зашёл, петушок?

Между тем, glPolygonOffset на современных видеокарточках стал, похоже, "implementation specific", то есть нихуя не работает по спецификации. У меня он ВНЕЗАПНО создаёт оффсет не глубины, а координат вершин, приходящих в шейдер. Похоже, оно не предназначено для работы с шейдерами.
Аноним 16/04/17 Вск 03:08:30 396563112
>ВНЕЗАПНО создаёт оффсет не глубины, а координат вершин
Так он вроде это и должен делать. Что ты представляешь под оффсетом глубины и глубины чего тогда?
Но тот анон всё-равно пиздит. С помощью этой штуки можно выделить только контуры модели, так как все полигоны просто сдвинутся от камеры вперед и будут видны только самые края.
Аноним 16/04/17 Вск 03:08:53 396564113
Аноним 16/04/17 Вск 03:15:31 396565114
>>396563
Под оффсетом глубины я представляю оффсет буффера глубины, очевидно. Оффсет модели мне глубоко прохладен как бы, так как она вертится на семи хуях трансформаций и проекций. Я такой оффсет и в шейдере могу задать с тем же успехом и с тем же результатом.
Аноним 16/04/17 Вск 03:29:42 396566115
ololo.png (64Кб, 818x653)
818x653
>>396565
>Я такой оффсет и в шейдере могу задать
И тут до меня дошло...
Аноним 16/04/17 Вск 04:46:04 396567116
goblin-8.png (134Кб, 264x264)
264x264
>>396566
а всё равно убогая пикселизация, пиксельарт кокойта. ну кому такое понравится, a

попробуй короче через проекцию нормалей на камеру зделать. чтобы а-ля френель. из плюсов: будет пиздато работать в сочетании с картами нормалей
Аноним 16/04/17 Вск 10:38:58 396574117
5UdPWKyM2q8.jpg (230Кб, 800x600)
800x600
Учусь по learnopengl.com, но только на обычных сях.

glGenerateMipmap(GL_TEXTURE_2D) позволяет безошибочно вызвать "segmentation fault (core dumped)". А без этой функции текстурирования не происходит. Как решить эту проблему?

Линукс.
Видимокарта Штеуд(р) HD Graphics 4000 (в процессоре Core i5-3230M).
Вывод glxinfo | grep "OpenGL": https://pastebin.com/7WCW43aK

Пока гуглил натыкался на то, что функции из OpenGL >=3.0 в Mesa драйверах не поддерживаются и даже на то, что они вообще никогда не будут поддерживаться. А glGenerateMipmap как раз из 3.3. Bumblebee и primusrun для нвидии (если дело в видеокарте) заводить не хочу, хочу пока на интеле сидеть. И вообще пока слабо понимаю что происходит.

Мне теперь бросить learnopengl.com и изучать OpenGL по туториалам для версии 3.0?
Аноним 16/04/17 Вск 12:19:25 396576118
>>396574
> А без этой функции текстурирования не происходит
Без неё всё будет работать.
Просто результат будет не красивый.
Лучше ты код покажи, может там есть какой косяк?

> Мне теперь бросить learnopengl.com и изучать OpenGL по туториалам для версии 3.0?
Как вариант можешь загружать текстуру уже с мипмапами (заранее сгенерированными). Теже DDS текстуры, gimp вроде как может мипмапы сделать.
Аноним 16/04/17 Вск 12:45:26 396577119
>>396576
> OpenGL
> Просить посмотреть код
http://dropmefiles.com/1LUA1
https://wdfiles.ru/5220
https://ru.files.fm/u/9bye4jnq
http://hdd.tomsk.ru/file/qywiemsd
Залил сразу на несколько файлообменников архив со всем кодом и не только.
Он разделён на несколько файлов. Вынес зря занимающую место в мэйне рутину в отдельный functions.c и вызываю оттуда. Шейдеры в отдельной папке. То, что менял с предыдущего урока вроде бы всё в мэйне только.
Ещё на пастбин код залил.
main.c - https://pastebin.com/uMt4rWaX
functions.c - https://pastebin.com/2xEhw62u
шейдеры - https://pastebin.com/kRZvGw3U

main.c, строка 51 - та самая функция.

Я сначала подумал, что текстуру какую-то неправильную по размеру выбрал, потом взял то что в самом уроке рекомендуется и всё равно чёрный треугольник.
Сомневаюсь, что кто-то в этом говнокоде станет рыться, но раз уж спросили.
Аноним 16/04/17 Вск 13:03:09 396578120
>>396577
Попробуй создавать контекст ( 57 строка main.c ) до загрузки текстур и шейдеров.
Переставь её на 20 строку например.
Аноним 16/04/17 Вск 13:08:36 396579121
3KUbDzS.png (161Кб, 800x600)
800x600
>>396578

Ого! У меня всё получилось! И на мипмапинге не отваливается! Большое спасибо тебе, анон!
Аноним 16/04/17 Вск 13:11:42 396580122
>>396579
Бывало сталкивался с подобным когда писал в конструкторах какие-то функции, а программа отваливалась.
Они вызывались ещё до создания контекста т.е. ещё до подгрузки новых функции gl'a.
Аноним 20/04/17 Чтв 17:30:26 397310123
Аноним 22/04/17 Суб 13:37:24 397641124
Возможно платина, извиняюсь заранее.
Как я могу делать тридэ без OpenGL Mathematics библиотеки], которую используют во всех тьюториалах? Дело в том, что во-первых я использую си, а во-вторых мне интересно какая матрица получается на выходе функции glm::perspective. И вообще хочу сам свои матрицы создавать! Всё-таки игродела из меня не получится, а применять бесполезные знания, полученные в школе и на первом-втором курсе универа, оказывается есть где и это очень интересно!
Я пытался разобраться с четвёртым параметром вектора gl_Position, кое-что получилось, но я так и не понял что происходит.
Пытался понять что делает функция glm::perspective, но она оказалась состоящей только из хидеров. Как такое возможно для меня тоже загадка.
Короче, подскажите, аноны, какую-нибудь альтернативу glm или лучше расскажите, что делает четвертый параметр вектора gl_Position и как с ним правильно обращаться, мне кажется именно он "делает весь трюк" с перспективой.
Аноним 22/04/17 Суб 14:03:25 397645125
>>397641
>что делает функция glm::perspective
Очевидно что конструирует матрицу перспективной проекции.
>четвёртым параметром вектора gl_Position
Обычно он никому не нужен. Ставишь его 1.0 всегда и этого хватит для всего, что ты делаешь. Это вроде множитель смещения по осям, то есть если он 2.0, то при попытке сдвинуть точку на 1 ты сдвинешь ее на 2 единицы по любой оси.
Аноним 22/04/17 Суб 14:22:40 397648126
affine.jpg (34Кб, 482x481)
482x481
>>397645
Если его (назовём его w-координата) просто поставить в единицу, то вид получается ортографический, а не перспектива. Если в w-координату подавать z-координату точки, то получается неплохая перспектива, но тогда я не вкуриваю как изметь угол обзора. Получалось угол обзора увеличить, если подавать координату точки zn в w-координату, чем больше n, тем больше FOV. Пробовал так же забить хуй на w-координату, как ты и сказал, оставив её со значением 1.0f и через отношения с помощью теоремы подобных треугольников самому строить проекцию на экран, но тогда текстуры трнсформируются в параллелепипед вместо трапеции, как на пикрилейтед.

Всё это заговор. А w-координата - это панацея трёхмерности.
Аноним 22/04/17 Суб 14:29:52 397649127
>>397645
Ах, да, ещё сказать, что я хочу досканально знать, как он строит матрицу перспективной проекции на основе переданных ему аргументов - это ничего не сказать.
Аноним 22/04/17 Суб 15:02:42 397650128
>>397649
Векеторная алгебра и геометрия, 7-9 класс
Аноним 22/04/17 Суб 15:36:15 397655129
wSineOfTime.webm (1682Кб, 800x600, 00:01:43)
800x600
>>397650
Векторная алгебра и геометрия - это хорошо, я бы её с удовольствием использовал. Только я понять не могу некоторые особенности OpenGL. В частности не до конца понимаю как работает вышеописанная w-координата вектора gl_Position в вертекс-шейдере. Если бы я знал, что творится в функции glm::perspective, то это, я думаю, приблизило бы меня к пониманию.

Вот вебм-ку снаял про эту несчатную w-координату. Подал на неё z-координату точки, возведённую в степень (sin(glfwGetTime()/5)+0.5)/0.5. Как видно отрисовка есть только при значении этой самой степени строго больше единицы. В остальных случаях отрисовка пропадает.
Аноним 22/04/17 Суб 15:46:29 397656130
>>397648
>>397655
>вид получается ортографический
>Всё это заговор.
>w-координата - это панацея трёхмерности
Ты какой-то странный. Я в свое писал на чистом Си под OpenGL без использования glm, написал свой велосипед для матриц и все работало. w-координата всегда должна быть 1.0. Ты, видимо, просто что-то не так делаешь. Иди кури маны по проецированию 3-х мерного пространства на плоскость.
Аноним 22/04/17 Суб 16:14:24 397660131
>>397656
>w-координата всегда должна быть 1.0
Ну дык после умножения матриц в ней и оказывается z-координата точки с какими-нибудь ещё синусами от матрицы поворота.
Ты молодец, что свой велосипед написал, а у меня пока не получается.
Ни один из мануалов не поясняет за w-координату. Даже документация. Поэтому-то я сюда и пришёл.
Аноним 22/04/17 Суб 21:29:54 397710132
Аноним 23/04/17 Вск 01:03:59 397750133
>>397641
Рекомендуется ньюфагам, прогуливавшим математику: "3D Math Primer for Graphics and Game Development" (лучше второе издание).
Аноним 23/04/17 Вск 14:39:05 397795134
Здрасьте. Тупые вопросы снова:
1) Скажем есть много линий разной толщины (точнее 3 группы по толщине). Пока что делаю посредством glLineWidth после glUseProgram, юзая разные VBO. Получается рвано. Как посредством одного шейдера можно нарисовать линии разной толщины, передавая с вершинами аттрибут-толщину? Смотрел что можно геометрическим, но не нашел внятного объяснения (придумал еще костыль делать вместо линии длинный прямоугольник из двух треугольников, но хз как тогда их через матрицы транф. прогнать).
2) Есть ли в OGL нормальная работа со шрифтами? Юзаю битмапы, но хотелось бы как на Директе: через глифы и проч. FreeType / FTGL это оно? Все равно же смысл в том, что в конце оно все в текстуру пакует. Векторные шрифты нужны крч.
3) Как заставить работать OGL-приложение на удаленном рабочем столе? Или если драйвера шалят, то без вариантов?
4) Есть ли библиотеки, реализующие рисование OGL через DirX? Т.е. используются функции OGL-a, а физически рисуется через Директ, драйвером.
Может кто такие вопросы когда-то решал?
Аноним 24/04/17 Пнд 14:19:41 397879135
Аноним 24/04/17 Пнд 19:01:58 397908136
>>397795
1. Рисуй прямоугольники. Опционально, вершины можно создавать геометрическим шейдером. В гугле полно статей.
2. Нахуя тебе векторные шрифты? Пакуешь буквы в текстуру, из текста создаёшь массив вершин. Посмотри как в SFML сделан sf::Text.
Аноним 25/04/17 Втр 17:08:36 398034137
Аноним 02/05/17 Втр 12:16:09 398867138
1493204338216.jpg (32Кб, 606x630)
606x630
Хочу сделать себе выдвигающуюся сверху консоль, в которую можно вводить команды, как в q3.
Как это лучше всего реализовать?
Пока что я представляю это, как отрисовка просто темного прямоугольника отдельным шейдером и отрисовка на нём текста. А тест хранить просто в std::vector<std::string>, где каждый элемент - написанная мной команда.
Может кто-то делал такую штуку?
Аноним 02/05/17 Втр 12:33:11 398870139
Аноним 17/05/17 Срд 00:14:34 401746140
map.png (0Кб, 64x32)
64x32
Анончик, есть одна текстура. На ней нарисован ромбик пикрелейтед.
Как мне раскрасить квадратик так, чтобы пиксели брались из ромбика, а не как обычно? Ромбик получается путем scale(1, 0.5, 1) + rotate(45)
Аноним 17/05/17 Срд 00:33:34 401750141
>>401746
координаты текстуры задай какие надо
Аноним 17/05/17 Срд 00:35:52 401751142
>>401750
Ну я взял матрицу, умножил координаты текстуры на неё. Получилась хуйня какая-то. Съезжает хуй пойми куда.
Аноним 17/05/17 Срд 08:44:49 401767143
>>401751
Умножь текстурные координаты на матрицу поворота на 45 градусов и на матрицу сдвига вверх на 0.5
Аноним 17/05/17 Срд 10:07:57 401771144
>>401767
Почему-то сдвиг вообще нихуя не делает.
Аноним 17/05/17 Срд 13:03:40 401815145
>>401767
Да, я объебался, >>401775 этот правду говорит.
Аноним 20/05/17 Суб 12:21:56 402214146
Поясните за mipmap. Что это, зачем и как.
Аноним 29/05/17 Пнд 00:20:19 403427147
вопрос.png (8Кб, 1091x77)
1091x77
Суп, анон. Хочу создать няшную обёрточку для шейдеров и в том числе glUniform. Не могу заделать массив функций, вылезает пикрил, в чём проблема? Строчкой ниже проверял создание массива для обычных функций
Аноним 29/05/17 Пнд 03:20:07 403436148
Аноним 29/05/17 Пнд 03:28:50 403437149
>>403427
Декларацию посмотри. Там и конвенция вызова и const у последнего аргумента, а у тебя нет. Декларируй как массив PFNGLUNIFORM1FVPROC, и похуй. Ну или добавь недостающее.
Аноним 29/05/17 Пнд 12:43:12 403456150
>>403436
Я учусь, в создании велосипедов пока весь смысл, но за ссылку спасибо.
>>403437
Спасибо!
Аноним 29/05/17 Пнд 13:24:42 403459151
А где взять gl.h, лол? А то всюду gl.h, да gl.h, а на офф-сайте я не могу его найти.
Аноним 29/05/17 Пнд 13:45:54 403462152
223021961197740[...].jpg (40Кб, 343x697)
343x697
>>403459
У тебя есть компилятор у него есть тулчейна со всякими /lib/ /include/ и там он обычно и валяется.

Настолько помню он "/GL/gl.h" а не прост "gl.h"

Произведи поиск по имени фаила.
Аноним 29/05/17 Пнд 13:48:26 403463153
>>403459
И стоит ли использовать glut? Я читая про него наткнулся на такую вещь, как glut.dll. Это мне придётся dll-ку таскать с собой? Это разве не просто обёртка кода?
>>403462
Да нету его, он в Windows SDK обнаружился только, который пришлось скачать и оттуда выдрать.
Аноним 29/05/17 Пнд 13:57:20 403466154
>>403463
Вроде у глута куча аналогов есть. Да и если ты используешь SDL то глут и не нужен вообще.
Аноним 29/05/17 Пнд 14:53:30 403469155
>>403463
> Да нету его, он в Windows SDK обнаружился только
А ты зачем пишешь под винду без стандартного набора библиотек под винду? Как ты раньше жил вообще? Обходился только libc?

>>403463
glut не обертка, glut либа для быстрого вкатывания в OpenGL, малоприменимая в приложениях крупнее хелловорлда (хотя линуксоиды умудряются на этом игры делать). Умеет создавать окно, передавать тебе события, и там даже менюшки были. Да, ее нужно будет таскать, или же с ней можно линковаться статически. Алсо, тебе нужен не glut, который уже умер, а хотя бы freeglut. Или сразу что-то более современное типа glfw. Или нет, потому что вкатываться в OpenGL гораздо приятнее через старые версии стандарта.
Аноним 29/05/17 Пнд 15:03:11 403471156
>>403469
>А ты зачем пишешь под винду без стандартного набора библиотек под винду?
На другом языке писал, на делфях.
>вкатываться в OpenGL гораздо приятнее через старые версии стандарта
Я лет шесть пишу под гл, с ним то проблем нет. Только с с++, как там в make-файлах подключить какие-то библиотеки, потому что без них функции из .h не работают. Идиотизм, вот этого я никогда не пойму, почему исходный код не определяет полностью работу программы, и в итоге что бы перенести с одной ide на другую код нужно не просто его скопировать, а ещё и переписать вот этот мусор, потому что в одной ide cmake, в другой qmake, а в третьей этого вообще нет. Почему в коде нельзя проставлять директивы оптимизации, и там же указывать какие библиотеки откуда и куда подключать. Разве это не логично?
Аноним 29/05/17 Пнд 15:30:55 403474157
>>403471
Можно компилировать из командной строки, и в подавляющем большинстве систем командой cc file.c file2.c file3.c lib1 lib2 lib3 все соберется (ну максимум в gcc либы через -lname принято указывать, а у майкрософта принято имена файлов пихать).

> Почему в коде нельзя проставлять директивы оптимизации
Потому что дохуя разных компиляторов с разными оптимизациями? Потому что разным пользователям нужны разные уровни оптимизации?

> и там же указывать какие библиотеки
Можно указывать в той же студии через #pragma comment(lib, "..."). Только хуйня все это. Понадобится с чем-то другим собрать (с дебажной версией либы, например или под другую архитектуру) - править исходник? Нахуй-нахуй.
Аноним 30/05/17 Втр 16:27:04 403686158
>>403469
>вкатываться в OpenGL гораздо приятнее через старые версии стандарта
Ловите поехавшего легаси-дауна, пока он тут не насрал!
Аноним 30/05/17 Втр 16:37:16 403688159
>>403686
А в чём он не прав? Запустил - glBegin - сменить цвет -
нарисовать треугольник - glEnd. Ребёнку покажешь, он и то сразу поймёт как квадрат нарисовать. А тут массивы и буферы какие-то, и прочие сложности.
Аноним 30/05/17 Втр 17:08:10 403693160
>>403688
Угу, а потом хуяк - "А что такое шейдеры, что-то нихуя не пойму?"
Даже здесь такие вылезают иногда.
Технологию успешно похоронили и забыли как страшный сон, так что не нужно заниматься некрофилией. А то будете потом удивляться, почему легаси не работает на мобилках.
Аноним 30/05/17 Втр 17:13:41 403697161
>>403693
Но шейдеры в стиле glBegin как расширение очень просто подключаются. Собственно говоря я до сих пор очень часто подключаю гл так, что и glBegin работает, и все эти шейдеры. Намного удобнее на коленке что-то намутить и различий в быстродействии не наблюдается.
Аноним 30/05/17 Втр 17:22:44 403700162
>>403693
> Угу, а потом хуяк - "А что такое шейдеры, что-то нихуя не пойму?"
Во всех книжках про шейдеры рано или поздно рассказывают. Никаких проблем с их осознанием нет. Наоборот, охуенно, когда в какой-то из глав тебе показали фиксед пайплайн, который простой, а парой глав спустя, приобретя необходимые знания без анальной боли, ты уже реализуешь то же самое на шейдерах.

> Технологию успешно похоронили
И что, есть дрова (на десктопах), которые не могут в 2.1 контексты? Технология отличная, и все вменяемые люди понимают ее сферу применения - однократно визуализировать всякую ерунду буквально парой строк, без ебли с контекстами, буферами и шейдерами. График там построить или еще что-то процедурно-генерируемое. А будет ли такой режим в стандарте, или будет расширением, или вообще отдельной либой - похуй.
Аноним 30/05/17 Втр 18:36:09 403721163
>>403700
>И что, есть дрова , которые не могут в 2.1 контексты?
Есть, и это почти все дрова на мобилках. И не надо мне кукарекать про "мобилки не нужны". Про то, что мобилки не нужны, ты будешь объяснять своему шефу, когда он тебя спросит, почему на его айпадике не показывается твой процедурный график, которым ты "однократно визуализировал парой строк" скинутую тебе статистику.
Аноним 30/05/17 Втр 18:40:43 403724164
>>403700
Вменяемые люди понимают, что график построить проще и быстрее, нажав одну кнопку в экселе, а не путём написания легаси опенгл-кода. За легаси может топить только полностью поехавший.
30/05/17 Втр 19:01:08 403730165
>>403721
> Есть, и это почти все дрова на мобилках.
Ты учишься кодингу под OpenGL на мобилке? Я не утверждал, что нужно писать продакшн код на легаси OpenGL.

>>403724
> график
> в экселе
В голос просто. Если бы ты сказал про какую-нибудь специализированную либу, я бы может еще и согласился (если она не на JS, конечно). Даже если бы это был gnuplot, хуй с ним. Но Excel приспособлен только для круговых диаграмм с десятком сэмплов максимум.

> За легаси может топить только полностью поехавший.
Вот когда ты был маленьким, тебе на уроке информатики рассказывали про "черепашью графику", ну там черепашка, поднять хвостик, опустить хвостик, сменить цвет какашек, повернуться, проползти - вот это все. Потом, когда ты вырос, ты наверняка сталкивался с 2Д графикой в виде moveTo/lineTo/curveTo/backColor/foreColor. Очевидно, что рисовать этим всю графику в приложении - идиотизм, есть нормальные векторные библиотеки, которые умеют в батчи. Однако, если ты нихуя про вектор не знаешь - это самый простой и понятный для ньюфага способ вкатиться.

То же и с легаси OpenGL, это те же самые moveTo и lineTo по сути. glBegin интуитивно понятны, позволяют познакомить со всеми концепциями не вводя непонятных сущностей или кучи теориии без практики. А вот если тебе будут преподавать в стиле: "ну мы кароч напишем вот это заклинание, оно называется шейдор, вы пока скопипастите бездумно, мы вам потом расскажем, что это", "ну мы кароч тут выделили буфер, заполнили его непонятными циферками, потом расскажем что это" и т. д., то твое обучение затянется, а четкого понимания происходящего ты можешь вообще не достичь.
Аноним 30/05/17 Втр 22:39:59 403759166
>>403730
Ещё и сажепидор. Ну точно поехавший(впрочем, это сразу понятно было). Алсо, твои знания об экселе застряли в 97м году, как и знания опенгл, похоже.
Аноним 01/06/17 Чтв 17:11:23 404089167
>>403730
>есть нормальные векторные библиотеки, которые умеют в батчи
OpenGL легаси код батчит покруче любой библиотеки. Причем реально постараться надо, чтобы твой велосипедный батчинг обогнал glBegin/glEnd.
>что рисовать этим всю графику в приложении - идиотизм
Нахуя прикручивать стороннюю либу, чтобы нарисовать пару линий для дебага?
01/06/17 Чтв 17:58:44 404092168
>>404089
Про батчи и либы было написано про двадэ векторную графику, а не про OpenGL.
> обогнал glBegin/glEnd
Обогнать glBegin/glEnd можно, например, с помощью display lists, но речь была не об этом.
Аноним 02/06/17 Птн 20:25:23 404287169
Почему в 4.5 OpenGL треугольник можно нарисовать без шейдеров? Это меня пиздец запутало. У меня видимо шейдеры с ошибками были, но всё и без них работало, а я дебажу себе, дебажу. Убрал "glUseProgram(sp);" из кода -- всё равно всё работает. Говорили же, что без шейдеров нельзя ничего отрисовать. Объясните.
Аноним 02/06/17 Птн 23:18:50 404309170
pipeline4.png (50Кб, 723x810)
723x810
>>404287
Вместо твоего кастомного шейдера драйвер подсунул стандартный. Вот посмотри на пайплайн. Ты же не пишешь каждый раз геометрический и тесселяционный шейдер. Это не у всех вендоров так.
Аноним 03/06/17 Суб 19:53:25 404439171
Сниdfggмок.JPG (86Кб, 721x705)
721x705
Правильно я понимаю, что таким макаром можно сэкономить видеопамять? Допустим, случай, если на видюхе всего 2 гига памяти, а VBO-шки суммарно целые весят на 3гига, получается можно сделать половинчатый VBO на 1.5 гига и два раза вызывать drawarrays, сперва первую половину сцены, а затем вторую?
(Кстати, сильно ли влияет GL_STATIC_DRAW \ GL_DYNAMIC_DRAW и что лучше использовать: глБуфферДата каждый раз, или только первый раз, а затем обновлять через глБуфферСабДата?)
Аноним 03/06/17 Суб 20:11:54 404443172
>>404439
upd: Как кстати используя glew и GL.h замерить фпс? через clock() без паузы между свапами кадра сойдет?
тут же на скрине нашел ошибку, что нормали не привязаны, то-то думаю что освещение шалит, нету glenablevertexattrib для них
03/06/17 Суб 20:19:30 404444173
Аноним 03/06/17 Суб 22:24:34 404457174
Сорямба за легаси
Объясните, какими шаманствами можно получить текстуру через devIL
Ругается, плюется ошибками 1290 и 1291.
Пытался и юникодовскую версию использовать, и обычную, все тщетно.
Аноним 03/06/17 Суб 23:55:23 404471175
>>404439
> VBO-шки суммарно целые весят на 3гига
Как правило больше всего памяти занимают текстуры/фреймбуферы.

> глБуфферДата каждый раз, или только первый раз, а затем обновлять через глБуфферСабДата?)
Гонять туда-сюда память затратно.
Лучше один раз загрузить и всё.
Аноним 04/06/17 Вск 13:37:04 404508176
>Допустим, случай, если на видюхе всего 2 гига памяти, а VBO-шки суммарно целые весят на 3гига
Ты рендеришь в реалтайме сцену из миллиарда треугольников? Ты поехавший?
Аноним 04/06/17 Вск 15:51:21 404531177
Вопрос немного не в тему, но релейтед. Есть сцена которая содержит объекты для рендера (меши, источники света, камеры и тд, ну сандартная тема). Есть отдельный поток который занимается только рендером нонстопом. Как лучше синхронизировать доступ к сцене? Лочить всю сцену на время рендера не катит - поток котрый считает физику например будет постоянно ждать пока рендер освободит сцену. Лочить объекты по отдельности - бутут глюки с рассинхронизацией. Пока в голову приходит снимать со сцены типа снапшота каждый кадр и рендерить его, но это потянет за собой дип копи всякого говна типа обжект релейтед текстур и пр. Сижу вот ломаю голову как лучше сделать.
Аноним 05/06/17 Пнд 19:54:01 404768178
>>404508
>сцену из миллиарда треугольников?
Смотря сколько у него аттрибутов на вершину. Гиг данных это примерно 10 млн треугольников (4 байта 8 значений 3 вершины ~ 100 байт на треугольник). У него, получается, 30 млн. треугольников. Не так уж и много, особенно для импортированных из КАДов мешей.
Аноним 05/06/17 Пнд 20:00:56 404770179
>>404531
>Лочить всю сцену на время рендера не катит
Нахуя лочить на все время рендера? Cинхронизацию же завезли еще во времена GeForce256 с NV_FENCE. Отдал драйверу все команды, вызвал glFlush, и считаешь спокойно физику, пока сцена рисуется.
Аноним 05/06/17 Пнд 20:52:52 404775180
>SetPixelFormat
1140 мс выполняется. Как-то быстрее можно вывести первый кадр с помощью opengl? Почему-то чужие программы ощутимо быстрее запускаются.
Аноним 06/06/17 Втр 15:12:13 404855181
Сни5543мок.JPG (40Кб, 472x639)
472x639
>>404768
Таки да. на 20 лямов приходится 1.6гб видюхи (тут 3 вершины х 7 значений: координата, нормаль и значение в точке, по которой выбирается значение из текстурки) около 90фпс
Обычный ОГЛ с этим не справляется.
Потестил кстати способ с обновлением 1/4 вбо с обновлением через glSubBuffer, получается 410мб памяти, но ФПС из-за перезаписываний внутри рендера (щитай пересыл из оперативки на видюху по 4 раза) становится жалкие 4-5.
Аноним 06/06/17 Втр 16:16:01 404865182
>>404855
Зачем ты с полным разбиением рисуешь? Можно же лоу-поли рисовать, а сабдив делать минимально необходимый. Все равно пользователю не видно, 20 там лямов или два.
Аноним 06/06/17 Втр 18:54:53 404898183
Добрый день, велосипедисты!
Я ньюфаг, вкатываюсь.
Могу ли я рисовать, допустим, куб, не храня груду массив из груды треугольников? Динамически их генерить хочу, короче. Возможно? Это же пиздец как экономит ресурсы, в теории.
Аноним 06/06/17 Втр 18:57:50 404899184
>>404898
Извините, я глупость написал не разобравшись, уже всё понял, не отвечайте на мой пост.
Аноним 07/06/17 Срд 21:41:26 405096185
>>404770
Все дело в хитрой системе техник и материалов, все дроу коллы сортируются по проходам, вызов рендера ноды может быть несколько раз в совершенно разных местах, плюс мой двиг заточен под кросс платформу, а не только под ГЛ, где есть асинхронный рендер. Короче перед рендерингом сделал декомпозицию сцены на последовательность дипов. Осталось лишь решить задачу с фидбеком во время рендера. Например , перед tonemap пассом генерируются мипмапы рендербуффера и освещенность всей сцены берется из максимального мипмапа. Сделаю, короче, в виде пре- и пост- дроу колбеками.
Аноним 10/06/17 Суб 17:20:48 405599186
Поясните ньюфагу за FPS.
Вот есть у меня главный цикл, в котором opengl бесконечно рисует какую-то хуйню. На это уходят явно не все ресурсы, но в секунду получается 75 проходов, т.е 75 кадров. В цикле нет никаких слипов, ограничений, так почему opengl не использует все ресурсы машинки и не рисует всё максимально быстро? Что его задерживает?
Захотел замутить контроль FPS, пошёл гуглить, везде говорят что это сложно и не нужно.
В некоторых игрушках есть возможность указать желаемый FPS. От 1 то 1000, например. Тащемта тут тоже с виду не все доступные ресурсы используются, видеокарта не греется как дикая, но в таких играх FPS как-то да отображается. То есть поставил ты 1000, а игоря выдаёт ~800. На основе чего появляются эти 800? Почему нельзя напрячь видеокарту, но выдать ещё больше?

Вопросы глупые, но я как будто в тёмном лесу. Хотелось бы понять как оно работает. Оче прошу твоей помощи, Анон.
Аноним 10/06/17 Суб 17:55:42 405629187
>>405599
> Что его задерживает?
Vsync
Аноним 10/06/17 Суб 18:28:20 405651188
>>405629
Спасибо, всё полетело.

Так что, есть смысл пилить контроль FPS или стоит просто включить Vsync? Если первое, то как? Просто считать время между кадрами будет достаточно?
Аноним 10/06/17 Суб 18:57:52 405675189
>>405651
> Так что, есть смысл пилить контроль FPS
Включай vsync.

Лучше всё же не выдавать заоблачные сотни фпс в сек (лучше потратить это время на что-то другое: сеть, ии, столкновения), а оптимизировать там где есть просадки фпс.
Кароче, просто включай vsync и не заставляй видеокарту работать в холостую.
Аноним 10/06/17 Суб 19:03:10 405677190
Сап, гд. У меня вопрос по поводу фреймбуфферов. Суть в том, что после того, как сцена рендерится на фреймбуффер, я пытаюсь отрендерить прямоугольник используя фреймбуффер, как текстуру. Но у меня выходит лишь пустой экран. Более того, я изменил шейдер, чтобы вместо того, чтобы сэмплить текстуру, он просто выдавал малиновый цвет. Однако экран все равно остается пустым. Вот код после рендеринга сцены:

glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(0, 0, 800, 600);
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glDisable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);

glUseProgram(postProgramID); //

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, fbTextureID);
glBindVertexArray(fbQuadVao);

glDrawArrays(GL_TRIANGLES, 0, 6);

glBindVertexArray(0);

Инициализируется он нормально. (GL_FRAMEBUFFER_COMPLETE)
Аноним 10/06/17 Суб 19:38:19 405691191
Аноним 10/06/17 Суб 19:45:20 405692192
>>405691
Нет, не забыл. Инициализировал как текстуру, так и буфер глубины. К тому же я изменил шейдер, чтобы он не семплил текстуру, а просто возвращал малиновый цвет. Но все равно не работает.

//create a texture for framebuffer
glGenTextures(1, &texColorBuffer);
glBindTexture(GL_TEXTURE_2D, texColorBuffer);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glBindTexture(GL_TEXTURE_2D, 0);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texColorBuffer, 0);

//create depth buffer
glGenRenderbuffers(1, &depthrenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthrenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 800, 600);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthrenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
Аноним 10/06/17 Суб 20:01:00 405698193
Аноним 10/06/17 Суб 20:08:21 405700194
>>405698
Именно по этому туториалу я и делал.
Аноним 10/06/17 Суб 20:09:29 405701195
Аноним 10/06/17 Суб 20:21:33 405704196
>>405701
В общем, ты не имеешь понятия, что может быть не так?
Аноним 10/06/17 Суб 21:23:15 405717197
>>405704
Лучше весь код выложи.
В отдельных кусах не хочется ковыряться.
Аноним 10/06/17 Суб 22:08:40 405727198
>>405717
Ок, погоди немного.
Аноним 11/06/17 Вск 09:59:16 405773199
>>405677
>glDisable(GL_CULL_FACE);
Попробуй убрать, может у тебя прямоугольник жопой к экрану рисуется.
Аноним 11/06/17 Вск 10:00:42 405774200
>>405773
А, бля, там disable. Забудьте.
Аноним 11/06/17 Вск 10:58:32 405778201
Аноним 11/06/17 Вск 15:44:18 405838202
>>405778
На 118 строчке добавь и глянь чего будет.
GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
glDrawBuffers(1, DrawBuffers);
Аноним 11/06/17 Вск 15:53:03 405841203
>>405838
Добавил. Ничего не изменилось.
Аноним 13/06/17 Втр 16:14:56 406189204
>>405677
Итак, я почитал гайды по дебагу опенЖЛ, написал функцию и она мне, короче, говорит, что у меня GL_INVALID_OPERATION в glBindTexture на 37-й строчке. Что очень странно, так как согласно документации, она возникает только когда текстура генерировалась не для того же типа, но я везде использую GL_TEXTURE_2D.

Есть идеи?
Аноним 13/06/17 Втр 16:35:00 406192205
>>406189
> Есть идеи?
> GL_INVALID_OPERATION is generated if texture was previously created with a target that doesn't match that of target.
Аноним 13/06/17 Втр 16:41:17 406193206
>>406192
Читай мой пост.
Ошибка возникала вообще не из-за этого, а из-за того, что я использовал ID uniform-a из шейдера вместо хэндла текстуры в glBindTexture. Я исправил(и для фреймбуффера исправил), и ошибка исчезла.
Но экран все равно пустой. ЧЯДНТ?
Аноним 13/06/17 Втр 17:22:56 406195207
>>406192
>>406193
Итак, нашел еще один баг и исправил. Этот был уже в шейдере для рендеринга квадрата с фреймбуффером: я тупо перепутал пару названий переменных. Теперь у меня квадрат с фреймбуффером рендерится(я проверял с точно работающей текстурой), только вот текстура фреймбуффера совершенно пустая.
Аноним 13/06/17 Втр 18:12:23 406202208
>>406195
Все исправил. Я забыл добавить
>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
>glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
при генерации текстуры для фреймбуффера.
Аноним 14/06/17 Срд 13:05:05 406278209
Capture.PNG (44Кб, 1573x712)
1573x712
Привет, анон. Сделал списал прогу по этому гайду: https://www.youtube.com/playlist?list=PLRtjMdoYXLf6zUMDJVRZYV-6g6n62vet8
Но вот проблема, если запускать ее через Visual Studio, то все запускается и работает, а если через экзешник в папке с дебагом, то прога не видит библиотек. Библиотеки подключал как в гайде Relative linking. Как все правильно подключить, чтобы прога запускалась через ехешник?
Аноним 14/06/17 Срд 18:04:23 406336210
>>406278
По-моему, он просто шейдеры не видит. Он может считать их из папки для дебага?
Аноним 15/06/17 Чтв 01:17:02 406415211
>>406278
А можешь замерить время с момента запуска программы до вывода на экран первого кадра? Я бы и дальше использовал контент самой первой версии gl, но он создаётся дольше секунды - даже на глаз видно, что намного дольше чем в других программах. Настолько некрасиво всё это, что сейчас я сначала вывожу окно и рисую в нём нечто программно, пока gl не станет возможным использовать.
Аноним 15/06/17 Чтв 01:24:14 406417212
>>406336
Так и есть. Помогли на их форуме, нужно было все файлы перекинуть из папки проекта в папку с ехе-шником.
>>406415
Если ты мне, то сцена простая и запускается моментально.
Аноним 15/06/17 Чтв 01:37:23 406423213
>>406417
То есть вот прям вообще нет видимой задержки? Круто. Я перекатываюсь.
Там дело не в сцене. Даже если я ничего не вывожу, а хочу получить минимальный чёрный экран, то с момента запуска секунда-две проходят до вывода хоть чего-то. После запуска всё уже с нормальной скоростью.
Аноним 15/06/17 Чтв 02:37:11 406436214
Untitled.png (8Кб, 802x632)
802x632
>>406423
Если быть точнее, то сначала запускается командная строка, потом окно со сценой. Между запуском строки и окном сцены проходит примерно две сотых секунды, но мне кажется это из-за виндовых анимаций.
Аноним 15/06/17 Чтв 02:45:54 406437215
>>406436
Понятно, спасибо.
Аноним 15/06/17 Чтв 13:51:00 406472216
>>404531
>>405096
>Как лучше синхронизировать доступ к сцене?
Рисовать прошлый кадр. Уверен, у тебя весь стейт кадра - единицы мегабайт. Можно кадры сделать иммутабельными, и держать их в кольцевом буфере на пару десятков штук. Мутабельный только текущий, конструируемый кадр. Соответственно, апдейт-тред фигачит кадры в буфер, а рендер берет самый свежий из готовых и рисует его. Заодно архитектура значительно упрощается, ведь самый гемморой обычно с добавлением/удалением объектов и валидацией ссылок, а тут такой проблемы в принципе нет.
Аноним 13/07/17 Чтв 06:12:29 412668217
14982257442150.jpg (1592Кб, 1100x2300)
1100x2300
сап, геймдач. Как можно сгладить 2д изображение в GLе? Есть спрайт (для 2д игры), который представлен двумя текстурированными треугольниками, а при повороте этого квадрата (двух треугольников) возникает лестничность. Не могу найти инфы как с этим бороться
Аноним 13/07/17 Чтв 06:15:51 412669218
>>393168 (OP)
>SDL
Ебать вы тут анскильные шакалы.
Аноним 13/07/17 Чтв 06:26:46 412670219
>>412668
> возникает лестничность. Не могу найти инфы как с этим бороться
фильтрация текстур, мипмапы?
Аноним 13/07/17 Чтв 06:37:57 412671220
>>412670
С этого места можно поподробнее? какая именно фильтрация текстур и как это делается? А чем в этом случае помогут мипмапы?
Аноним 13/07/17 Чтв 18:15:34 413324221
>>412668
1. мультисемплерная текстура для рендертаргета (msaa)
2. постэффект шейдер (fsaa)
Выбирай. Первый лучше качеством и медленнее, второй быстрее и похуже.
Аноним 13/07/17 Чтв 19:30:08 413344222
>>413324
охо, спасибо анон. Второе еще не знаю, а вот насчет первого насколько я понял оно только для 3д, разве нет? Я уже этот вариант пробовал, но никаких изменений не увидел, может я как-то не так его включил?...
Аноним 13/07/17 Чтв 20:40:35 413383223
>>413344
Нахуя тебе опенгл, довен? Возьми уже хуюнити, все равно сам лучше не сделаешь.
Аноним 13/07/17 Чтв 22:32:42 413411224
>>413383
слушай, залезь нахуй обратно. Тебя об этом кто нибудь спрашивал? нахуя тебе двачи, съеби во вконтакт и не еби никому голову
Аноним 16/07/17 Вск 12:00:42 417291225
Снимок.PNG (35Кб, 878x641)
878x641
Я ньюфаг совсем в кодинге, подскажите в чём проблема, я делал по этому видео добавление текстуры:
https://youtu.be/Ih7gO5TU6dU?t=3023
Всё получалось до момента добавления пути к картинке. Не получается натянуть текстуру на квадрат, вылетает ошибка, как на пикрелейтеде. Я всё писал точь в точь, как в видео
Вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SharpGL;
using SharpGL.SceneGraph.Assets;
using SharpGL.Enumerations;


namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
float rtri = 0;

Texture texture = new Texture();

public Form1()
{
InitializeComponent();
SharpGL.OpenGL gl = this.openGLControl1.OpenGL;
gl.Enable(OpenGL.GL_TEXTURE_2D);
texture.Create(gl, "1.bmp"); вот тут ошибка


}

private void openGLControl1_Load(object sender, EventArgs e)
{

}



private void openGLControl1_OpenGLDraw(object sender, SharpGL.RenderEventArgs args)
{
SharpGL.OpenGL gl = this.openGLControl1.OpenGL;

gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

gl.LoadIdentity();

gl.Translate(-1.0f, 0.0f, 0.0f);

texture.Bind(gl);

gl.Begin(OpenGL.GL_QUADS);

gl.TexCoord(0.0f, 0.0f); gl.Vertex(-1.0f, -1.0f);
gl.TexCoord(1.0f, 0.0f); gl.Vertex(-1.0f, 1.0f);
gl.TexCoord(1.0f, 1.0f); gl.Vertex(1.0f, 1.0f);
gl.TexCoord(0.0f, 1.0f); gl.Vertex(1.0f, -1.0f);

gl.End();

gl.Flush();

//rtri += 3.0f;
}

private void openGLControl1_OpenGLInitialized(object sender, EventArgs e)
{
// TODO: Initialise OpenGL here.

// получаем ссылку на окно OpenGL
OpenGL gl = openGLControl1.OpenGL;

// Задаем цвет очистки экрана
gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}

private void openGLControl1_Resized(object sender, EventArgs e)
{
// TODO: Set the projection matrix here.

// получаем ссылку на окно OpenGL
OpenGL gl = openGLControl1.OpenGL;

// Задаем матрицу вида
gl.MatrixMode(OpenGL.GL_PROJECTION);

// загружаем нулевую матрицу сцены
gl.LoadIdentity();

// подгоняем окно просмотра под размеры окна OpenGL в форме
gl.Perspective(60.0f, (double)Width / (double)Height, 0.01, 100.0);

// Задаем координаты камеры куда она будет смотреть
gl.LookAt(0, 0, -5, 0, 0, 0, 0, 1, 0);

// задаем матрицу вида мдели
gl.MatrixMode(OpenGL.GL_MODELVIEW);
}
}
}
Аноним 16/07/17 Вск 14:56:08 417371226
>>417291
Путь к текстуре правильный?
Я имею ввиду не в самом коде, а папке проекта?
Попробуй переместить её куда-нибудь в другое место, например, D:\\1.bmp
Аноним 16/07/17 Вск 15:01:53 417375227
>>417371
Да чёрт его знает, я её просто перетянул в бразуер vs и всё, она появилась в папке проекта.
>D:\\1.bmp
В таком случае, как путь к ней в коде указывать
Аноним 16/07/17 Вск 15:33:51 417382228
>>417371
Ну слушай, я сейчас в одном видео подглядел, он там кинул картинку в папку проекта в папку data, а затем в "свойствах\события сборки" добавил две строки:
copy "$(ProjectDir)\libs\" "$(TargetDir)"
copy "$(ProjectDir)\data\
" "$(TargetDir)"
я проделал всё тоже самое и ошибка перестала вылезать, но текстуры или квадрата на экране не видно, потом сообразил добавить в транслейт ось z, что бы отдалить изображение и всё появилось.
Но не понятно, сейчас я удалил папку data вместе с картинкой и те две строки в свойствах, картинку кинул обратно в папку с проектом, и ошибка теперь не появляется один фиг....что за хуйня этот ваш быдлокодинг
Аноним 16/07/17 Вск 21:13:42 417598229
Есть кто, кто может побеседовать со мной по google hangouts о программировании на C# с библиотекой SharpGL. Я ньюфаг, хотел бы по задавать очевидные вопросы
Аноним 16/07/17 Вск 22:06:31 417672230
>>417291
проверь с ".1.bmp" или "./1.bmp"
Аноним 16/07/17 Вск 22:38:48 417700231
>>417672
Попробовал на новой текстуре, не получилось, работает только если добавить картинку в папку data и прописать в свойствах те две строки >>417382 Но правда если после этого попробовать сменить на "./1.bmp", то оно тоже запускается, а вот просто с точкой не хочет
Аноним 21/07/17 Птн 22:10:39 420154232
.png (8Кб, 648x504)
648x504
Совсем ньюфаг вкатился.
Поиск по интернету не помог.
Использую библиотеку GLFW:
/ Create a windowed mode window and its OpenGL context /
window = glfwCreateWindow(640, 480, "Игра", NULL, NULL);
Название окна стало "кракозябрами", как бороться? Хочу русский текст
Аноним 21/07/17 Птн 22:23:52 420163233
>>420154
Хз у меня все работет. Из документации:
title The initial, UTF-8 encoded window title.
Аноним 21/07/17 Птн 22:39:05 420183234
>>420163
Спасибо. По твоему сообщению понял, в какую сторону копать.
Моя IDE сохраняла файлы с кодом в ANSI, исправил
Аноним 25/07/17 Втр 08:11:43 421897235
Я ньюфаг, на OpenGL писал только hello triangle, есть один, думаю, глупый вопрос.

Как происходит прорисовка больших локаций, к примеру в онлайн-играх с огромным открытым миром? Причем, чтобы достаточно далекие объекты заменялись на какие-то элементарные текстурки(как в скуриме), чтобы не нагружать ресурсы.
На абстрактном уровне кое-как это представляется, но как это реализовать даже предположений нет.
Аноним 01/08/17 Втр 18:28:26 427008236
Аноним 02/08/17 Срд 11:07:36 427443237
>>421897
Если кратко, то сначала пространство разбивается на относительно небольшие объёмы. Затем объёмы присоединяются к логической древовидной структуре, содержащей ссылки на объекты расположенные в этих объёмах (это могут быть как объекты игрового мира, так и ландшафт). Для оптимизации отображения на различных уровнях древовидной структуры ссылки заменяются на таковые с минимально необходимым уровнем детализации.

Деревья используются разные, в зависимости от задач. Для закрытых пространств обычно применяют двоичные, для открытых квадранты, в геоинформационных системах вообще используются так называемые R*-деревья. Для отдельных трёхмерных моделей применяется техника разбиения на LoD (level of detail). При моделировании чрезвычайно больших пространств возникают проблемы с недостаточностью разрешения Z-буфера (т.н. Z-fighting), на этот момент тоже следует обратить внимание.

Тема для диссертации, если честно.
Аноним 02/08/17 Срд 13:29:53 427513238
нахуя вы мертвую либу учите? Есть же вулкан
Аноним 02/08/17 Срд 16:03:36 427626239
>>427513
ооо, говно завезли, зачем вы картоху жрете. Пойдем лучше говна навернем вместе
Аноним 03/08/17 Чтв 11:24:59 428279240
>>427513
webgl совместим с opengl, а вулкан - нет
Аноним 03/08/17 Чтв 22:38:11 428935241
>>393168 (OP)
Почему куб на ОП-пике выдает 58FPS?
И к слову о кадрах, кто-нибудь придумал классный способ нормально из измерять? Выдавать напрямую - значения скачут так быстро, что и не различить. Думал либо кольцевой буфер сделать, либо складывать с предидущим значением и усреднять. В итоге выбрал последний метод.

Я понимаю, почему не Unity/Unreal. Там нет души. Настоящий хардкор живет только в коде и рукописных шейдерах. Но почему не Ogre3d/irrlicht? Там не придется свой менеджер сцена писать(Но можно, если хочется). Уже есть абстракция на OpenGL/DirectX, что всегда неплохо. И есть всякие бонусы, вроже CEGUI, которые так же позволят не тратить время на реализацию неинтересных вещей, и вместо этого сразу перейти, скажем к сети, или основам геймплея.
Я раньше сам довольствовался одним DirectX. Даже свой графический интерфейс к нему писал, со сборкой окошек их атласа. Но вот сейчас перешел, и совсем не жалею.
Аноним 04/08/17 Птн 00:37:29 429078242
>>428935
>почему не Unity/Unreal
UDK есть пока что лучший 3д-движок, созданный человечеством. Но гнойные пидоры замели его под коврик. UE4 мог бы стать ещё лучшим, если бы там насильно не заливали в жопу блюпринты(что есть основной пиздец, мешающий им пользоваться нормальным людям), и документация хотя бы по кор-фичам движка была не в стиле "draw the rest of the fucking owl".
>Ogre3d
Перегружен говном местами ещё хуже юнити. С ним нужно сражаться почти по любому вопросу. Пользовался им два года, потом мне это надоело, и послал нахуй.
>irrlicht
Пользоваться можно, но он плохо состарился. Плохо помню его уже, но по памяти архитектура там была довольно негибкая, и его вроде как десять лет уже не дописывали.
Аноним 04/08/17 Птн 00:38:21 429080243
>>428935
>Почему куб на ОП-пике выдает 58FPS?
V-Sync
Аноним 04/08/17 Птн 01:29:05 429119244
14591568356230.jpg (53Кб, 455x361)
455x361
>>429078
> блюпринты(что есть основной пиздец
айда качать и подключать сраный консольный xCode или как его там, консольную эту хуйню короче, потом компилировать под каждый пук через "тортик". охуительное развлечение было я тебе скажу
плюс ссаный кизмет заменили на божественный левел блюпринт. вдруг мне нужно одну ебучую дверку всего открыть или врага заспаунить.

> "draw the rest of the fucking owl".
> UE4 AnswerHub
> how to draw an eye?
> what direction are feathers facing?
> best plactice to draw wings?
> witch side of pencil i can draw with?

> Ogre3d
> Перегружен говном местами ещё хуже юнити.
это и есть юнити, по крайней мере был им по крайней мере в этой стране до популяризации хуюнити среди одиннадцатиклассников-погромиздов. у обоих одна и та же аудитория была, и на обоих не было игор. мне научрук как-то предложил юзать огр вместо хуюнити, ЛИЦЕНЗИЯ НИНУЖНА ЖИ, я с него обзмеился

>irrlicht
> Пользоваться можно
движок-однодневка же потипу Leadwerks и прочим вот таким. не словил достаточно хайпа и был востребован 3.5 извращенцами

>>428935
> почему не Unity/Unreal. Там нет души
ещё короче охуенно взять либу без WYSIWYG-редактора ЧТОБЫ ЕБАТЬСЯ ПОДОЛЬШЕ
04/08/17 Птн 03:12:35 429148245
>>429078
>и документация хотя бы по кор-фичам движка была не в стиле "draw the rest of the fucking owl".
Уеч и сделан для людей что могут нарисовать остальную сову, им надо просто показать где у карандаша рабочий конец.
>>428935
> Думал либо кольцевой буфер сделать, либо складывать с предидущим значением и усреднять. В итоге выбрал последний метод.
Кстати абсолютно правильный. Ты ещё отбрасывай максимальные/минимальные значения как аномалии.
Аноним 04/08/17 Птн 13:39:21 429237246
>>429148
Таки сагодаун признал, что УЕЧ не предназначен для инди и одиночек. А теперь съеби обратно в свой тред.
Аноним 04/08/17 Птн 14:37:23 429257247
Посоветуйте каокй-нибудь хороший ресурс, рассказывающий про компьютерную графику
Аноним 04/08/17 Птн 21:37:37 429650248
Аноним 09/08/17 Срд 01:01:38 433857249
>>429650
Хуйня, давай что-нибудь еще
Аноним 09/08/17 Срд 17:41:13 434025250
>>429257
Серия книг Graphic gems.
Аноним 09/08/17 Срд 21:55:45 434113251
>>4340257
Спасибо, посмотрю на досуге
Аноним 11/08/17 Птн 07:05:23 436223252
Аноним 22/08/17 Втр 07:27:38 439327253
Untitled.png (889Кб, 1115x565)
1115x565
Написал к своему поделию программный рендер практически идентичный ГЛю c поддержкой шейдеров, в том числе геометрических и тесселяционных. Хоть фрагменты хуярят все ядра цп, все равно выдает полтора фпса. С симд не заморачивася. Потратил на эту хрень почти месяц, практического толку с этой фичи нет никакого, кроме полученной экспы. Рейт.
Аноним 22/08/17 Втр 09:46:56 439341254
>>439327
>Рейт.
Ближе к дну. Фпс в 10 делает ненужным твой код. Тут был анон который свой софт-рендер сделал, поищи.
Аноним 22/08/17 Втр 23:07:01 439463255
>>439341
Убрать попиксельное освещение, оставить один фетч тексела из диффузной карты без изъебств вроде трилинейной фильтрации и фпс будет на уровне васянских софт-рендеров.
Аноним 23/08/17 Срд 07:26:18 439502256
Аноним 23/08/17 Срд 10:55:08 439515257
>>439502
>Ты он или не он?
Не, не я , там какой-то захардкоженый ffp.
>60 в фулашди возьмешь?
никто не возьмет
Аноним 23/08/17 Срд 12:05:55 439521258
Аноним 24/08/17 Чтв 20:45:03 439761259
Здравствуй, анон. Вот настало время и мне нарисовать треугольник, списав гайд с хабра. И, как ты понимаешь, тут же началось веселье, а суть токова: в гайде шейдеры захардкожены, а мне ведь так хочется загружать их из файла! По ссылке кусок кода, ответственный за загрузку шейдеров в GLchar*, как он есть у меня сейчас:

https://pastebin.com/ZXNGSEca

Так вот, хардкоженые шейдеры прекрасно отрабатывают, а загруженные - отказываются. При этом я через вывод в консоль отслеживаю процесс их загрузки, компиляции, линковки в шейдер-программу, и всё выглядит вполне прекрасно, только не работает.

Шейдеры буква в букву, '\0' в конец file подставлял, пробовал после загрузки делать так:
std::cout<<file<<std::endl;
и так:
std::cout<<vertexShaderSource<<std::endl;
в консоль выводится код шейдера в обоих случаях.

Выручай пожалуйста, анон, я уже джва вечера хочу этот треугольник.
Аноним 24/08/17 Чтв 21:06:09 439773260
SCR33.png (106Кб, 1270x870)
1270x870
SCR34.png (107Кб, 1270x870)
1270x870
SCR36.png (11Кб, 1270x200)
1270x200
>>439761
Немножко картиночков.
Аноним 24/08/17 Чтв 21:22:51 439780261
>>439761
Попробуй завести две отдельные std::string переменные для вершинного и фрагментного шейдера вместо "file".
Аноним 25/08/17 Птн 05:02:53 439822262
SCR37.png (90Кб, 1270x680)
1270x680
SCR38.png (93Кб, 1270x680)
1270x680
wtf.gif (841Кб, 267x200)
267x200
>>439780
Анонче, а почему это сработало?
Аноним 25/08/17 Птн 14:10:24 439867263
>>439822
Потому что c_str() возвращает указатель, а ты потом присваеваешь фрагментный шейдер туда же. А в консоли все нормально потому что вывод до clear.
Выведи vertexShaderSource и fragmentShaderSource в конце и увидишь что они одинаковы и хранят в себе код фрагментного шейдера.
Аноним 25/08/17 Птн 20:52:53 439946264
SCR40.png (93Кб, 1280x680)
1280x680
нефть.jpg (53Кб, 672x372)
672x372
>>439867
Ах ты жопо! Так и есть. Вот оно что, а я уж было в чудеса поверил.
Много добра тебе анон, ты - как всегда. Пришёл, увидел, объяснил. Благодарю тебя :3
Аноним 26/08/17 Суб 03:25:04 439998265
15035887930851.png (573Кб, 574x581)
574x581
Анон, я ща вскроюсь.

Хочу изучать OpenGL. Поставил на линукс glfw, по тутору с learngl. Ещё говорят, что нужен GLAD - загрузочную библиотеку. Начал гуглить про них - оказывается, их несколько.
Начал смотреть видосики с гайдами - некоторые вообще SDL юзают.

Блин, анон, мне нужна легковесная херня, с которой я могу работать в своём родном VIMe с g++. Обычный, минимум ВАЖНЫХ инструментов, и не ебать себе мозги IDE, кучей зависимостей и прочим дерьмом. Ну да, я ебанутый, не хочу кучи мусора в системе.

С чем вы работаете, на какой мне стул сесть? Анон, я запутался
Аноним 26/08/17 Суб 07:33:39 440008266
>>439946
Очень плохой код. Почитай тот же "Рефакторинг" Фаулера хотя бы. Ну и Майерса с Саттером.
Аноним 26/08/17 Суб 07:49:55 440009267
>>440008
Кстати вот Фаулер у меня скачан уже, ждёт своей очереди. Саттера нашёл, Майерса - не нашёл.

>Очень плохой код.
Вот автор тутора тоже так сказал. А я, пожалуй, не пойму - а что в нём такого уж очень плохого? Скажем, для своего функционала - код как код, нет?
Аноним 26/08/17 Суб 09:55:18 440022268
>>439998
>и не ебать себе мозги IDE, кучей зависимостей и прочим дерьмом. Ну да, я ебанутый, не хочу кучи мусора в системе.
Пиши софтрендер. Никаких зависимостей не будет, даже math сам нашкрябаешь легко.
Аноним 26/08/17 Суб 12:55:51 440052269
>>440009
Он неструктурирован, повторяется, и не использует RAII в полной мере.

Начни с того, что сделай отдельную функцию readAllText(filename), а там глядишь во вкус войдешь.
Аноним 26/08/17 Суб 12:58:45 440054270
>>439998
GLFW, опционально GLEW, опционально glm - вот все, что тебе нужно. Код писать можешь хоть в виндоусном блокноте.

Аноним 26/08/17 Суб 14:46:24 440065271
>>440052
Нет, само собой, перспективе я планирую завернуть всё это хозяйство в классы каким-то образом. Про RAII почитал сейчас, логичный приём, обычно именно так и делал. А сейчас задача - освоить именно библиотеку по-минимуму, представить логику её работы.

Сейчас ещё подумал, если в моём коде с одной переменной file устроить компиляцию шейдера сразу после загрузки из файла, а потом загружать и компилировать следующий - то всё должно работать. А эта конструкция уже похожа на метод loadShader() класса shaderProgram, например.
Аноним 26/08/17 Суб 14:49:13 440067272
>>440065
>shaderProgram
ShaderProgram, разумеется.

самофикс
Аноним 26/08/17 Суб 14:49:41 440068273
>>440065
Да можешь пока не напрягаться с загрузкой из файла.
Сделай пока чтобы шейдеры загружались прямо из исходников как у тебя выше было.
Аноним 26/08/17 Суб 15:00:14 440071274
>>440068
Ты что-то знаешь об этих уроках такое, чему помешает загрузка из файла? Я к тому что - уже работает, разобрались с затыком; а потом - я щас эту загрузку в класс кааак оберну - и будет красиво, ящитаю. Уж больно мне эти хардкоженые шейдера глаз режут, прям аж смотреть на них НИПРИЯТНО..
Аноним 26/08/17 Суб 15:02:44 440073275
>>440071
Просто лишние навороты ни к чему.
Аноним 26/08/17 Суб 15:35:15 440079276
>>440071
Ты пока еще крайне хуевый программист, поэтому любое усложнение для тебя это повод накосячить.
Аноним 26/08/17 Суб 16:14:23 440090277
Аноним 03/09/17 Вск 19:10:00 441478278
maxresdefault.jpg (41Кб, 1281x720)
1281x720
Анон, я нуб. Конечная цель, написать игровой движок для 2d платформера. Какой алгоритм действий ты мне посоветуешь, начиная от того какие библиотеки понадобятся?
Я вот сейчас вообще не понимаю, как связать физический движок с графикой opengl. Пока ничего внушительного не нагуглил.
Как я думаю, ну в плане самой механики:
1) отрисовать объекты
2) натянуть на них текстуры и анимации
3) привязать к объектам физ. движок (box2d например)
4) прописать гг метрики и привязать всё к клавиатуре, джойстику и т.д.
5) запилить столкновения
6) прописать поведение мобов
7) запилить переход по уровням
8) добавить ролики перед боссами или новым уровнем.
9) запилить свет
10) сделать стартовое меню, вывод текста, настройки и проч
Мог бы ты анон накидать такого плана алгоритм, только правильный и немного подробный?
Не знаю, может есть у кого-нибудь желание запилить мануал для новичков.
Аноним 03/09/17 Вск 22:42:43 441515279
>>441478
> Анон, я нуб. Конечная цель, написать игровой движок для 2d платформера. Какой алгоритм действий ты мне посоветуешь, начиная от того какие библиотеки понадобятся?
Возьми готовый движок.
Попиши на нём что-нибудь, поделай.
Придёт понимание что с чем и как функционирует и связано.
После этого можно попробовать и самому что-нибудь написать.

> Я вот сейчас вообще не понимаю, как связать физический движок с графикой opengl
Не надо связывать.
ГЛ занимается отрисовкой треугольников и текстур на экране.
Физика, понятное дело, за расположение объектов в пространстве и их взаимодействие.
То есть, например, перед отрисовкой объектов ты рассчитал физику: падение, прыжки, движение и тд.
В результате положение на экране твоего объекта спрайта у тебя изменилось.
Ну и рисуешь в этой точке спрайт и всё.

> Мог бы ты анон накидать такого плана алгоритм, только правильный и немного подробный?
Попробуй рассуждать что происходит в игре в коде имеется ввиду когда она загружает уровень.
Аноним 03/09/17 Вск 22:50:17 441516280
>>441478
>Конечная цель, написать игровой движок для 2d платформера.
Движок это непросто. Он ведь удобный должен быть, расширяемый, простой к пониманию.

0) Пишешь компиляцию проекта, инициализацию огля и прочего. Рисование пустого окна\полноэкранного режима.
1) Пишешь взятие клавиатуры, мышки, геймпада.
2) Пишешь загрузку и рисование картинки. Чтоб загружалась картинка с диска и выводилась на экран.
3) Изучаешь скелетную анимацию, пробуешь вменяемо анимировать человечка из палочек.
4.1) Оформляешь все это в удобные классы своего движка. Инициализация систем, окна с их размерами, клавиатура\мышка, функции загрузки и обработки картинок, функции загрузки, изменения, воспроизведения анимации.
4.2) Переписываешь это все еще раз с нуля. Оформляешь иначе и удобнее. Потому что у новичка сразу не получится написать архитектуру хорошо.
4.3) И снова переписываешь эти классы. Рефакторинг, да.

Этого тебе на полгода хватит, думаю. Если не надоест приходи как сделаешь.
Аноним 03/09/17 Вск 23:03:26 441526281
>>441515
>>441516
Спасибо!
>Не надо связывать.
Ну вот всё-равно не понятно. Сейчас мой прогресс, это полноэкранный режим, отрисовка квадратов и натягивание на них любой текстуры, т.е. я по сути научился делать игровые объекты. Но я не понимаю, как заставить их двигаться средствами box2d, а не средствами opengl.
Аноним 03/09/17 Вск 23:26:23 441531282
>>441526
> Ну вот всё-равно не понятно. Сейчас мой прогресс, это полноэкранный режим, отрисовка квадратов и натягивание на них любой текстуры, т.е. я по сути научился делать игровые объекты. Но я не понимаю, как заставить их двигаться средствами box2d, а не средствами opengl.
Возьми тогда фреймворк какой-нибудь.
Тот же SFML. Там шейдеры есть. многое станет легче постигать.
Аноним 03/09/17 Вск 23:33:46 441534283
>>441531
Нет, нет. Меня вот именно интересует то, что я спрашиваю изначально. Может посоветуете какую-нибудь статью или видео? Или в двух словах объясните. Что мне нужно сделать с моим отрисованым спрайтом? Ну т.е. вот я его должен во что превратить, что бы привязать к физике стороннего движка. Я понимаю, что вопросы нубские, но я уверен в этом нет ничего сложного, просто мне бы сейчас это узнать и дальше двигаться в нужном направлении. Я уже умею работать к примеру с классами и объектами, ну т.е. я понимаю. что могу создать класс к примеру player, зафигачить туда методов с метриками своего гг, а потом просто вызывать этот объект и говорить ему чего надо сделать, верно же? но вот что именно мне засунуть в эти методы, я знаю как сделать перемещение спрайта силами opengl, там не сложно. но как это сделать тем же box2d, может дадите кусок кода, или какой мануал. Или мне самому всю физику прописывать? но я точно знаю, что можно использовать сторонний движок. если че я на шарпе кодить пытаюсь
Аноним 03/09/17 Вск 23:39:33 441535284
>>441534
Поищи тогда туторы по box2d в связке с каким-нибудь фреймворком/движком.
Вот чьи-то исходники.
https://github.com/aalin/toodeloo
Аноним 04/09/17 Пнд 02:20:06 441547285
>>441534
>я знаю как сделать перемещение спрайта силами opengl, там не сложно. но как это сделать тем же box2d
Скорость для тела задаешь и все, не? И координатам спрайта приписываешь координаты тела.
Аноним 04/09/17 Пнд 19:12:05 441589286
>>441547
А можешь пример кода накидать, ну что бы там совсем немножко его было? на гитхаб пока нет возможности зайти, а время терять не хочется
Аноним 05/09/17 Втр 13:51:10 441636287
посоны, есть норм математика для огл? чтобы на ссе или авх? глм не катит, думал эйген, но у него лицензия мозиллы
Аноним 05/09/17 Втр 17:58:20 441649288
>>441636
Лучше glm ничего нет.
Аноним 05/09/17 Втр 22:50:45 441681289
>>441649
онон же медленное ибо дружит только с куда
Аноним 06/09/17 Срд 02:29:23 441699290
>>441681
Поехавший совсем?
Аноним 07/09/17 Чтв 13:00:48 441848291
>>441699
Никак нет, сам посмотри.

GLM provides some SIMD optimizations based on compiler intrinsics. These optimizations will be automatically utilized based on the build environment. These optimizations are mainly available through the extensions GLM_GTX_simd_vec4: SIMD vec4 type and functions and GLM_GTX_simd_mat4: SIMD mat4 type and functions.

A programmer can restrict or force instruction sets used for these optimizations using GLM_FORCE_SSE2 or GLM_FORCE_AVX.

A programmer can discard the use of intrinsics by defining GLM_FORCE_PURE before any inclusion of <glm/glm.hpp>. If GLM_FORCE_PURE is defined, then including a SIMD extension will generate a build error.

#define GLM_FORCE_PURE
#include <glm/glm.hpp>

https://glm.g-truc.net/0.9.2/api/a00002.html

у меня вызываются только неоптимизированные функции в рантайме.
Аноним 07/09/17 Чтв 17:34:14 441883292
>>441848
Если тебе нужна библиотека, оптимизированная под твой конкретный процессор, то тебе придётся писать её самому, других вариантов нет.
В общем доступе ничего быстрее глм нет по факту.
Аноним 07/09/17 Чтв 17:39:11 441884293
>>441848
Алсо, причём тут куда вообще, поехавший? Код глм на цпу выполняется. У меня всё работает через ссе, так что почини сначала драйвер прямые_руки.sys
Аноним 07/09/17 Чтв 21:15:44 441913294
OpenGL по-дефолту не рисует объекты располагающиеся слишком далеко, как снять это ограничение? Странно, но ни в какую не могу нагуглить.
Аноним 07/09/17 Чтв 21:19:30 441915295
>>441913
Отпостил и сразу нашёл решение. Извините долбоёба.
Дальность задаётся матрицой перспективы.
Аноним 08/09/17 Птн 02:36:40 441935296
>>441884
кто поехавший, ты поехавший, епт. скопипасти ссе код лукэт из глм если не в падлу.
Аноним 08/09/17 Птн 14:07:54 441994297
>>441848
Не факт, что их векторизация будет работать лучше того, что компилятор соптимизирует из простого скалярного кода.
Аноним 12/09/17 Втр 01:11:23 442490298
vc1.png (9Кб, 428x134)
428x134
vc2.png (6Кб, 521x121)
521x121
Выпадают жуткие ошибки связанные с памятью. ЧЯДНТ?
Аноним 12/09/17 Втр 01:16:06 442492299
>>442490
Извините, понял.
Не стоит более одного раза узнавать локацию юниформы.
Почему на этой борде нельзя удалять свои посты?inb4: >мочан >борда
Аноним 12/09/17 Втр 08:40:40 442529300
>>442492
Лучше всего получать инфу об юниформ-переменных после компиляции шейдера и забыть про это.
Аноним 12/09/17 Втр 10:42:00 442549301
squares.png (18Кб, 302x292)
302x292
Помогите пожалуйста.

Хочу генерировать игровую карту мира на основе шума. Я генерю шум с помощью неважно какого алгоритма, а затем применяю к нему ещё один алгоритм marching squares https://en.wikipedia.org/wiki/Marching_squares, по задумке он должен создавать в каждой клетке линии как на пикреле(ориентируясь на уже созданную карту высот из шума), из чего и должна получатся сама карта.
Проблема в внедрение всего этого дела в opengl. Я ведь поочерёдно, в цикле прохожу по каждой клетке, и могу произвольно высрать в какой-нибудь массивчик все необходимые вершины, но эти вершины же не будут связаны между собой, я же не отслеживал каждую из граней в попытке создать линию из вершин. Opengl такое не скушает. Можно как нибудь привести вершины в им положенный порядок? Чтобы при скармливании opengl'ю они правильно соединились между собой. Сам ну никак не могу надумать ничего.

Надеюсь понятно.
Аноним 12/09/17 Втр 10:56:31 442551302
vertex.png (2Кб, 253x294)
253x294
connected.png (2Кб, 292x299)
292x299
upee.png (4Кб, 409x403)
409x403
>>442549
Возможно не совсем понятно. Я хочу получить однородный массив вершин, который бы скармливался опенжеелю как, собственно, один массив. Эта длинная линия из вершин, которая хранится в массиве, должна представлять границы карты, которые потом, по идеи, можно было бы растянуть вверх, получились бы "стены".
Я, наверное, отвратительно объясняю. Может пикчи помогут.

Но я подумал, так наверное вряд ли получится. Ведь "островков" от шума много, и законченных границ много, значит в один массив уже не впишется.
Да и я оперирую не треугольниками, а векторами(соединёнными вершинами то есть, если термин неверный), что тоже, вероятно, неправильно.

Мне сложно рассуждать об этом, я слаб в opengl. Если кто-то понял этот поток бред, не мог бы ты, Анончик, подсказать в какую сторону идти? Я совсем не знаю, велосипеды выдумываю, а ведь скорее всего уже есть готовые решения.
Аноним 12/09/17 Втр 11:17:30 442553303
>>442549
Возможно, это не лучший выход, но я бы модифицировал алгоритм так, чтобы он выдавал грани :)
Аноним 12/09/17 Втр 11:31:39 442557304
>>442549
Можешь даже кинуть сюда, как у тебя генерятся вершины, а я попробую сделать из этого треугольники. А вообще то, что тебе надо, кажется, называется surface reconstruction from 3d point cloud, погугли.
Аноним 12/09/17 Втр 11:43:27 442559305
image.png (33Кб, 200x193)
200x193
>>442549
Самое простое - проходишься по квадратам, как нарисовано у тебя на картинке, и генеришь треугольники, как у меня на картинке.
Аноним 12/09/17 Втр 17:09:46 442607306
g1.png (25Кб, 619x499)
619x499
g2.png (11Кб, 595x500)
595x500
>>442553
Я тоже пришёл к такому выводу. В целом это менее красиво, но так, думаю, можно сделать.

Когда у меня будет информация о вершинах в правильном порядке, подобно первой пикче, я смогу скормить их opengl'ю и получить, к примеру, "заливку" как на второй пикче, или нужно будет самостоятельно рассчитывать оптимальное количество треугольников для формирования заливки и уже эти треугольники давать opengl?
Я, просто, не совсем понимаю. Казалось бы, всё состоит из треугольников, но opengl способен и другие примитивы рисовать. Вон их сколько https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml
Хотя я посмотрел, там только точки, линии и треугольники. Хотя раньше даже многогранники были, прямо под мою задачу. Выпилили? Теперь только треугольники?

Правильно составленный вопрос: Мне треугольники между вершинами обязательно самостоятельно рассчитывать, или с этим может справиться и opengl?
Аноним 12/09/17 Втр 17:15:40 442608307
.png (149Кб, 2000x872)
2000x872
>>442607
> Правильно составленный вопрос: Мне треугольники между вершинами обязательно самостоятельно рассчитывать, или с этим может справиться и opengl?

Пикрелейтед свой ты можешь триангулировать типа как мой пикрелейтед и можешь скармливать это опенглу.
Аноним 12/09/17 Втр 17:21:45 442609308
>>442607
Алсо, если у тебя там 2д что-то планируется, то можешь взять SFML.
Там есть возможно рисовать произвольные фигуры из треугольников.
Аноним 12/09/17 Втр 17:31:01 442612309
>>442608
Понял! Я себе это немного по другому представлял, спасибо.

>>442609
Не совсем. Я планирую генерить шум с участием "marching squares", их с помощью небольшой случайности делить на дополнительные грани, а потом всё это дело вытягивать вверх(по Z)(это 3D уже), так же с участием рандома. Получится интересная пещерка сделанная без всяких сложных шумов. Много задумок на этой почве, но, как всегда, нужно осилить основу, иначе задумки останутся всего лишь задумками.
Аноним 15/09/17 Птн 10:35:02 443042310
Легко ли устроиться джуниором, зная с++ и opengl? Вообще, как обстоят дела с работой в этой отрасли?
Аноним 15/09/17 Птн 23:35:04 443135311
>>443042
на hh вакансии посмотри.все очень плохо
Аноним 16/09/17 Суб 01:03:36 443156312
>>443042
>искать работу, зная с++ и opengl
но зачем?
Аноним 20/09/17 Срд 18:24:52 444113313
Так че, 2д игру на glut кодят?
Аноним 20/09/17 Срд 18:52:10 444116314
>>444113
Glut и freeglut говно. Не используй их.
20/09/17 Срд 18:58:38 444117315
>>439327
А чем ты вообще пользовался? Есть какие-то туториалы нормальные / книги?
Я как-то в универе начинал писать софтверный рендерер, но через пару недель чёт заебался и дропнул.
Но я тогда пользовался вообще всякой дичью, типа книжек Борескова.
Аноним 21/09/17 Чтв 15:32:21 444207316
>>444116
Заебись ответ, а чем пользоваться то? Поясни пожалуйста нубу, зачем и почему
Аноним 21/09/17 Чтв 18:48:49 444240317
>>444207
Заебись анон пошёл.
А ты шапку пробовал читать?
Аноним 21/09/17 Чтв 21:16:16 444263318
>>444207
Не слушай его. Для нуба freeglut норм. Потом осознаешь сам, почему говно, и переедешь.
21/09/17 Чтв 22:17:11 444276319
>>443042
Подозреваю, что никак. А устраиваются только крутые ребята с профильным образованием и опытом ресерча.
Аноним 22/09/17 Птн 02:30:21 444292320
>>444263
Так на что переезжать то потом? мне нужно для большого серьёзного проекта в будущем. В шапке треда я не пойму, где что, я блин нуб
Аноним 22/09/17 Птн 02:40:54 444293321
Аноним 22/09/17 Птн 02:42:51 444294322
Снимок.PNG (45Кб, 940x513)
940x513
>>444240
>>444263
Я просто про то, что мне из этого выбрать, тут много так то?
Надо понимать, что мне надо не для 3д ёбы, а просто для платформера, это значит что мне кроме натягивания текстур на прямоугольники, да шейдера света больше нифига не понадобится
Аноним 22/09/17 Птн 02:44:16 444295323
>>444293
Один парень, который запилил свой движок для 2д, настоятельно не рекомендовал мне sdl, хз
Аноним 22/09/17 Птн 02:47:57 444296324
>>444295
А сори, это он про sfml говорил
Аноним 22/09/17 Птн 03:08:30 444297325
>>444295
sdl-ов то несколько версий и, тем более, комплектации

Тебе же ещё и sdl_mixer захочецца как минимум
Аноним 22/09/17 Птн 03:10:39 444298326
>>444294
> а просто для платформера
sdl/glfw - для создания окошка и контекста
glm - математика, тут ясно
stb - для загрузки текстур

Алсо, ты же говоришь что ничего не понимаешь и всё такое и тебе нужен 2д платформер.
Бери тогда sfml. Там уже всё есть и давно написано. Даже шейдеры есть.
Аноним 22/09/17 Птн 04:51:55 444301327
>>444298
Я ничего не понимаю, но не ищу лёгких путей, я хочу взяться сразу за нормальные библиотеки и пробовать работать с ними, чтобы потом не пришлось тонуть в костылях
Алсо, спасибо за совет. Ты сам то с чем работаешь, и над чем?
Аноним 22/09/17 Птн 05:18:32 444302328
>>444298
>>stb - для загрузки текстур
Это я так понял только для C/C++
Аноним 22/09/17 Птн 13:40:35 444331329
>>444298
Слушай, ну это ты мне все библы для C++ насоветовал, а мне бы для C#....sharpGL что ли юзать?
Аноним 22/09/17 Птн 18:14:37 444435330
>>444301
> Я ничего не понимаю, но не ищу лёгких путей
Поздравляю. Только потратишь уйму времени чтобы что-то сделать по мелочи.
А потом всё равно останешься недоволен костылями в коде, например.

> я хочу взяться сразу за нормальные библиотеки и пробовать работать с ними, чтобы потом не пришлось тонуть в костылях
Лично на мой взгляд лучше взять какой-нибудь фреймворк/движок и тд, поделать на нём что-то. Понять какие-то концепции, как и что и с чем взаимодействует. Я имею ввиду освободить себя от написания рутинного, скажем так, кода.

> Ты сам то с чем работаешь, и над чем?
c++/glfw/stb/glm
Пытаюсь в 3д, в прошлом треде мои вебмки.

>>444331
https://github.com/opentk/opentk
Аноним 26/09/17 Втр 10:40:11 445277331
Capture.PNG (27Кб, 1106x416)
1106x416
Сап гд, на пике справа это спарйт которые берет текстуру с framebuffer-а. Почему при отдаелнии текстура совсем пропадает. Работает только в близи, на пике повернул спрайт немного, пропала половина. В чем проблема?
Если перестать писать в буфер чтобы текстура не менялась она все равно при отдалении пропадает. Что за магия? У текстуры есть свойства глубины какие-то?
Аноним 26/09/17 Втр 13:02:57 445317332
>>445277
>Спрашиваем, сами же решаем проблему, сами же отписываемся
Проблема была в mipmap-ах. Неправильно генерировались.
Аноним 28/09/17 Чтв 03:06:34 445665333
Бля. Посоны. Хочу вкатится в опенжл. Снова.пару тройку лет назад пробовал треугольники рисовать Так что вопросы:
Годные, и что немаловажно, актуальные на сегодня учебники по сабжу какие есть? Ну кроме оф доков.
Что из компиляторов и прочего нужно для успеха? У меня стоит вижуал плюсы, но мб есть альтернативы?
Аноним 28/09/17 Чтв 03:31:36 445670334
>>396355
Ох, какая жиза. Я какое то время назад искал тоже самое, только под WebGL. Ничего толкового не нашел, а что находил не смог вкурить. В основном там просто геометри дублится, окрашивается в черный и монрмали выворачиваются.

Алсо, мой идеал такой обводки - NPR Freestyle. Он опренсурсный, так что можно покопаться в коде. Есть как стенд-алоне, так и в составе чего-либо(блендер)
Аноним 28/09/17 Чтв 04:49:40 445673335
>>443042
В гейдеве много вакансий. Например, в варгейминге
Аноним 29/09/17 Птн 18:56:13 445912336
На всякий случай, спрошу здесь
Что думаете про AMD Mantle API? Стоит изучать/использовать?
Аноним 30/09/17 Суб 12:43:04 446014337
Пишу игрушку, в которой применяется довольно ресурсоёмкий шумовой алгоритм, который необходимо ускорить. В итоге он должен возвращать большой массив с множеством значений, который будет использоваться в основной программе. Можно ли реализовать такое с помощью шейдеров и стоит ли это делать? Может лучше взять OpenCL?

Не разбираюсь ни в шейдерах ни в OpenCL. Знаю только, что всё оно задействует графический ускоритель, что мне и нужно.
Аноним 30/09/17 Суб 15:45:11 446049338
>>446014
В OpenGL придется потрахаться с загрузкой данных и возвращением результатов, ибо он все-таки заточен под обработку вершин, треугольников и т.д.
OpenCL просто для вычислений гораздо удобнее юзать, и по сути даже гибче.
Аноним 01/10/17 Вск 23:15:11 446242339
Аноним 06/10/17 Птн 00:38:49 446981340
>>445912
блять, ну ты и некрофил, ебать. вулкан учи или дх12 коль убогий.
Аноним 06/10/17 Птн 04:29:15 446987341
image.png (350Кб, 1024x768)
1024x768
Здравствуйте, господа, цветов вашим мамам, коньяку вашим отцам, но только если они неподшиты. У меня нетривиальный вопрос.

При анальных игрищах с виртуалбоксом я заметил, что находящиеся в буфере экраны и текстуры никуда оттуда не исчезают, а мало-помалу перемалываются в видеокарте на фарш. И их можно с некоторым трудом извлечь. Мне эти эффекты очень понравились, эдакий хардверный датамошинг.

Так вот, достаточно ли просто написать софт, который будет выдёргивать из видеокарты содержимое её памяти и выводить на экран сохранять в файл? Туда ли я зашёл? Дайте каких-нибудь рекомендаций, кодить я умею, но совершенно никогда не сталкивался с графикой.
Иди такой софт писать не надо и он уже существует? Если что, я на прыщах и с проприетарными нвидиядровами.
Аноним 06/10/17 Птн 05:26:19 446988342
goblintiny.png (18Кб, 16x16)
16x16
>>446987
ага, есть такое, причем достаточно мощное. 3D Ripper DX и DXRipper гляди. делает "тридэ скриншоты".
для опенгл тоже вроде была такая захуёвина, я не помню как называлась, погугли.
Аноним 06/10/17 Птн 05:34:51 446989343
image.png (136Кб, 1024x768)
1024x768
>>446988
Не, ты не понял, мне нужны битые текстуры. Тридэ скриншоты мне не нужны.
Умный риппер, скорее всего, отдаст текстуры целыми.

Я, конечно, могу потоптаться по изображению рандомом, сдвинуть, смешать с другим, но это всё не то, тёплой ламповой души нет.
Аноним 06/10/17 Птн 07:47:31 446990344
goblintiny.png (18Кб, 16x16)
16x16
>>446989
нет, братан.
дело в том, что та битость что ты хочешь это по сути вещей не текстуры вовсе, а эффект когда указатель на участок памяти ещё активен, а в самом участке памяти хранится уже что-то совсем иное, и, судя по твоим скринам, это даже не текстуры. хотя и они тоже.

учитывая что у тебя есть те скрины что ты кидаешь в тренд, кое-какой метод получения материала у тебя уже есть. хочешь больше — открывай дамп памяти приложения и пытайся рандомом вытащить оттуда последовательности байтов, представляя их как рисунок подсовывая заранее работоспособный хедер,
например
Аноним 06/10/17 Птн 13:36:02 447017345
Где найти таблицу поддержки различных версий OpenGL различными видеокарточками? Нужно посмотреть, что поддерживает 4.3.
Аноним 06/10/17 Птн 14:58:00 447036346
>>447017
Правда тут про 4.6, но если его поддерживает то и прошлую версию скорее всего тоже.
https://developer.nvidia.com/opengl-driver

Для амд что-то сходу найти не могу.
Аноним 06/10/17 Птн 16:17:43 447050347
Аноним 06/10/17 Птн 17:10:15 447056348
>>446242
Вообще ничерта не понимаю. Вот задача, например: Есть интовый массив состоящий из ста элементов, нужно в каждый записать "5", с помощью вычислительного шейдера. Как это сделать? Очень нужна помощь, совсем-совсем не понимаю. Целый день пытаюсь постичь принцип работы, но не получается.
Аноним 06/10/17 Птн 18:01:22 447073349
>>447056
Переформулирую вопрос. Я могу посчитать что-то в вычислительном шейдере, но куда "слить" вычисленные значения, чтобы потом с ними можно было работать в основной программе на CPU?

Вот вызываю я "glDispatchCompute(100, 1, 1);", получается шейдер сработает сотню раз, верно? Допустим плодом его работы будет единственное значение -- "5". Это "5" нужно каждый раз куда-то записывать, чтобы в итоге, после сотни отрабатываний, получить массив скажем интов из ста элементов, где в каждом будет та самая пятёрка. И этот массив получить в проге на CPU. Как?

Объясняю совсем плохо конечно, но смысл, надеюсь, ясен.
Аноним 06/10/17 Птн 18:13:22 447076350
>>445673
общался я как-то с хр оттуда. ебут стл вместе с винапи, ну мб уже апи трогать уже перестали. вообще странное впечатление контора производит, больно уж сильная текучка кадров.
Аноним 06/10/17 Птн 18:46:03 447080351
>>447073
Попробуй вместе вычислительного шейдера использовать обычную текстуру.
Аноним 06/10/17 Птн 18:49:45 447081352
>>447080
Напиши подробнее, пожалуйста. Я только вкатываюсь в opengl, многого не знаю.
Аноним 06/10/17 Птн 18:53:30 447082353
>>447081
> Я только вкатываюсь в opengl, многого не знаю.
Нафига ты тогда начал со сложных вещей?
Аноним 06/10/17 Птн 19:00:52 447083354
>>447082
У меня задумка есть, которую я, собственно, и пытаюсь реализовать попутно изучая opengl. Помоги.
Аноним 06/10/17 Птн 19:51:04 447088355
Аноним 06/10/17 Птн 21:01:34 447091356
>>447088
Игоря же. Так ты мне поможешь или нет?
Аноним 06/10/17 Птн 21:59:17 447098357
>>447091
Блять, анон я хуею с тебя.
Ты туторы из оп-поста смотрел?
Книжки по опенглу смотрел?
Пробовал гуглу задавать вопросы на английском?
Аноним 06/10/17 Птн 22:11:34 447102358
>>447098
Уже не первый месяц пытаюсь изучать opengl, конечно же много чего смотрел, конечно же гуглил(да, на английском). По гитхабу активно хожу, смотрю исходники, примеры. Но сейчас, в случае с вычислительным шейдером, совсем не понимаю как оно устроено. Прошу помощи. Неужели сложно объяснить? Он, в конце концов, недавно появился, информации не так уж и много.
Аноним 06/10/17 Птн 23:00:20 447106359
Аноним 07/10/17 Суб 20:07:52 447209360
sdada1.png (32Кб, 587x340)
587x340
ob2.png (8Кб, 369x178)
369x178
>>447106
Хорошо. Почитал про буфера, открыл для себя много нового. На первой создание ssbo, создание вычислительного шейдера и попытка его использовать. Вроде этот код должен работать исправно, но как получить массив обратно я так и не понял. Возможно в твоей пдфке есть ответ, но мне он непонятен. Во всех примерах которые я находил данные из буфера не доставались, а просто использовались в других шейдерах. Мне нужно достать, записать обратно в массив "sdata", помоги хоть тут, будь же ты человеком.
Аноним 08/10/17 Вск 11:31:19 447276361
>>447209
Ояебу что ли сам как делать?
В презентации там показаны две схемы, и они одинаковы.
Попробуй биндить обратно свой ssbo. Потом мапь результат в какую-то локальную память (если массив надо вернуть, то скорее всего GLuint *ptr надо будет проинициализировать как массив соответствующего размера). Т.о. в ptr[0] ... ptr[100] у тебя будут значения из буфера. Потом освобождаешь буфер анмапом.
Тут еще что-то есть:
http://www.informit.com/articles/article.aspx?p=1377833&seqNum=7
http://computer-graphics.se/multicore/pdf/13c.pdf
Гугли и кури короче.
Аноним 08/10/17 Вск 11:35:33 447277362
>>447276
Да у меня тут даже шейдер не компилится оказывается, проверку не проходит. Я с синтаксисом нигде не обосрался? Не представляю где ошибка.
Аноним 08/10/17 Вск 12:03:08 447280363
Аноним 08/10/17 Вск 13:22:46 447312364
>>447280
Спасибо, получилось получить массив обратно. Хорошие у тебя пдфки, однако. Думаю проблем больше не возникнет, пойду укреплять знания, ещё раз спасибо.
Аноним 11/10/17 Срд 15:36:50 448641365
>>441994
>Не факт, что их векторизация будет работать лучше того, что компилятор соптимизирует из простого скалярного кода.

Факт факт, уже сколько лет конпелятор (что мукрософтовский, что прыщецц, что хпистергироскутерсмузиэм) в скалярном коде умножения матриц банальные fmul,fmad,fmad,fmad увидеть не может. Максимум что он умеет оптемизеровать - это копирование больших массивов SSE -регистрами.

Аноним 11/10/17 Срд 19:42:44 448797366
1449063246445.jpg (18Кб, 408x408)
408x408
Есть ли смысл начинать ковырять желе на машине, где доступен только 2.1 версия? Она сильно устарела? Где-то слышал, мол, в новых версиях что-то принципиально поменяли. И я, начав с двушки, буду изучать что-то, что уже не используется, совершая дурную работу, по сути.
Аноним 11/10/17 Срд 21:23:46 448849367
>>448797
> Она сильно устарела
Да. Больше десяти лет прошло.

> принципиально поменяли.
Да. Отказались от фиксированного пайплайна, и теперь везде шейдоры.

> Есть ли смысл начинать ковырять
Да. Хоть софтрендер пиши, хоть 2.1 ковыряй, принципы не поменяются. Алсо, 2.1 гораздо понятнее для ньюфага, проще будет осознать, как вся эта херня работает. А перекатиться в любой момент тебе никто не помешает. Можешь взять 4 издание OpenGL Superbible, там и старый, и новый подход.
Аноним 12/10/17 Чтв 19:54:47 449126368
>>448797
>что уже не используется, совершая дурную работу
WebGL1 и GLES2 - это тот же второй OpenGL. Они будут жить еще очень долго. По-сути сейчас это самая распространенная версия, которая точно везде есть и будет работать на любом железе. По возможностям это как DirectX9, можно делать графон как в крузисе. Плюс это не DirectX, принципиальных различий между версиями нет - старый функционал не убирается, а объявляется deprecated, что абсолютно не мешает тебе его использовать, то есть перекатиться на новую версию будет несложно.
Аноним 15/10/17 Вск 13:59:00 449946369
>>445670
Если нужна именно внешняя обводка, то вангую, что лучше будет вырезать через трафарет (stencil) в буфер, потом сделать размытие, и пороговый фильтр для резкости.
Аноним 16/10/17 Пнд 15:06:01 450220370
Ананасы, поясните мне, пожалуйста, за батчинг спрайтов. В общем, каждая нода моего 2Д мирка представляет собой четырехугольник (хотя может быть и набор четырехугольников) с подсчитанной матрицей трансформации относительно родительской ноды (для проброса событий мышки, например) и относительно мира. Так вот, у меня еще есть матрица камеры. Будет правильнее сделать в вершинном шейдере что-то такое:

in vec2 vertex;
in int transformMatrixId;

uniform mat3 nodeMatrices[COUNT];
uniform mat3 cameraMatrix;

void main() {
vec3 position = vec3(vertex.xy, 1);
position = cameraMatrix (nodeMatrices[transformMatrixId] position);
gl_Position = vec4(position.xy, 0, position.z);
}

или есть еще какие-то более верные варианты?
Аноним 16/10/17 Пнд 19:30:48 450308371
>>450220
Я учу опенгл неделю и потому ,наверное, я не понял gl_Position = vec4(position.xy, 0, position.z);
Это че? Почему третью координату на четвертую? Это какой-то супер прием?
А еще я привык видеть передачу вершин через буффер... Это тоже какая-то магия?
Аноним 17/10/17 Втр 03:33:36 450406372
>>450308
У четырхемерного вектора координаты: x, y, z, w, причем первые три очевидны, а вот четвертая, может быть и не совсем. Это, грубо говоря, коэффициент масштабирования, который обрабатывается OpenGL автоматически и его предназначение лишь в том, чтобы матрицы трансформации работали (это если не уходить в теорию, потому что я ее нихуя не помню уже). Так вот у меня на вход подаются координаты вершины vec2, которые дополняются до vec3 единичкой (это будущая w координата), и потом после трансформации все это говно преобразуется в необходимый для Gl vec4 (только дополняется координата z, потому что я ее не использовал при трансформациях).

>> А еще я привык видеть передачу вершин через буффер
Тут не особо понял. Я вроде итак все входные данные, кроме матриц передаю через VBO
Аноним 17/10/17 Втр 03:38:22 450408373
>>450406
что-то у меня подозрения, что я хуйню снес по поводу координат. Короче, посмотри в википедии Transform Matrix, там куча примерчиков, так вот ты сразу можешь заметить, что матрица 3x3 нужна для того, чтобы выполнять трансляцию (смещение), и третья координата только для этого, так что, можно запихивать просто единичку в gl_Position.w
Аноним 18/10/17 Срд 22:03:03 450949374
>>450408
Не ну я то помню, как выглядят матрицы масштаба-вращения -перемещения, просто потому и не понял зачем w трогать, говорилось, типа она просто единица и все тут
А я думал буффер это когда layout(local =0) или что там точно не помню есть
Аноним 23/10/17 Пнд 16:08:23 452122375
>>450220

Есть. Первый способ состоит в хитрожопом использовании механизма инстансинга.

https://www.g-truc.net/post-0518.html

Второй способ состоит в использовании специально предназначенного для этих дел glDrawID/gl_DrawIDARB
Аноним 23/10/17 Пнд 16:11:38 452123376
Аноним 23/10/17 Пнд 16:22:14 452125377
>>450949
Долбоебов полон тред.

Матрица вращения\растягивания - это 3x3.
Если в придачу к этому нужно еще и перемещение - матрица становится 4x4

Если умножить вектор (x,y,z,0) на 4x4, то перемещение, задаваемое матрицей, не влияет на результирующий вектор. Т.е. это то же самое что умножить матрицу 3x3 на вектор (x, y, z)

Для того, чтобы перемещение от матрицы вносило свой вклад в результат, у вектора 4-я компонента должна быть 1, т.е. (x, y, z, 1).

И в gl_Position пишут не просто какие-то координаты. А координаты в пространстве "clip coordinates"

У меня все!
Аноним 23/10/17 Пнд 16:51:44 452132378
Хехехей, ребятки. Надо писать курсач, а вот тему так и не дали. Типа придумать бы уже надо месяц таки остался до сдачи. Учу потихоньку опенг и думаю хмммм, а че бы нем че-нить не намутить. Кафедра вычислительных технологий, сам факультет комп технологий и прикладной математики. Кто может посоветовать, что делать? Чтоб я такой вот моя тема, а мне такие, ого математично, практично, свежо, хорошо допускаю такую тему. Плез, я не шарю что можно сделать. Уровень? В душе не знаю 3 курс, мой первый курсач, другие там чет с нейроками мутят, другие генетические алгоритмы...
Аноним 23/10/17 Пнд 17:06:25 452133379
Аноним 23/10/17 Пнд 17:28:30 452140380
>>452133
Чет жеска как-то(
Аноним 24/10/17 Втр 07:43:20 452240381
студент жжот.webm (5788Кб, 480x360, 00:01:13)
480x360
>>452132
>Надо писать курсач, а вот тему так и не дали
Доёбываться до кафедры, а не анонов!
Аноним 26/10/17 Чтв 01:13:49 452557382
На линупсе не мог включить vsync при помощи glfwSwapInterval(1), пока не втулил в главный цикл glClear. Это странно и необъяснимо.
Аноним 27/10/17 Птн 12:36:08 452796383
Все ли драйверы OpengGL 2.1 поддерживают ARB_vertex_array_object ? Или производители видеокарт сами решают что у них есть а чего нет?
Аноним 27/10/17 Птн 16:02:37 452835384
>>452125
Ты все верно написал про трехмерную систему координат, а я имел в виду двухмерную. Матрицы 3x3 там за глаза. Z координата вырождена, вместо нее W.
Аноним 27/10/17 Птн 23:05:12 452898385
Аноним 28/10/17 Суб 07:29:05 452913386
Нормально, что на время выполнения compute shader'а у меня всю систему фризит? Одно, сплошное подвисание происходит. С чем это может быть связано?
Аноним 28/10/17 Суб 09:06:56 452919387
>>452913
Хотя я многое неправильно делал, пока всё нормально, извините.
Аноним 28/10/17 Суб 13:22:05 452940388
>>452898
>Так что не все.
А есть драйвера opengl 2.1 что как-бы поддерживают VAO, но глючат. Например на Windows у меня, при том что под линупсом всё норм, даже под wine. Так что не буду использовать VAO.
Аноним 29/10/17 Вск 08:53:45 453043389
>>393168 (OP)
Как скачать glu32.lib? Пизда блядь нахуй. Захожу на сайть OpenGL. Downloads, меня направляет на драйвера. Да идите вы нахуй со своими драйверами пидоры тупорылые. Где блядь инструментарий разработчиков то. СУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКАСУКА
Аноним 29/10/17 Вск 17:06:32 453134390
>>453043
>Как скачать glu32.lib?
Ох...
Аноним 29/10/17 Вск 22:01:33 453180391
>>453043
glu32.lib - это кусок MSDN. Качай Windows SDK или просто нагугли на рандомном сайте: glu32.lib intitle:index-of
Аноним 29/10/17 Вск 22:34:38 453185392
>>393168 (OP)
Где найти этот ваш опенгл на русском?
Аноним 29/10/17 Вск 23:55:54 453203393
Как хранить множество мешей в одном индексированном VBO? Просто вставлять атрибуты друг за другом, а индексы увеличивать на смещение от предыдущих мешей? И как при этом каждую мешь трансформировать собственными матрицами?
Аноним 30/10/17 Пнд 00:12:56 453205394
Какие вообще условия пользователя? Я типо не могу использовать их чисто как источник знаний, да? Типо чо делать, чтобы за тобой потом не начали бегать с бутылкой? Я так и не понял.
Аноним 30/10/17 Пнд 00:54:04 453216395
Я правилно понимаю как делать костную анимацию?
Есть rest поза у персонажа в которой есть иерархия костей, и массив вершин в пространстве модели.
В шейдере я знаю как смешивать и трансформировать.
Но вычислять заливаемые в шейдерную программу матрицы анимированных костей как? Я когда-то делал и работало но не помню точно как, я почти интуитивно тогда разобрался.

Типо так, цепочка рассуждений? :
1) Каждая кость должна вычислить позицию вертекса меши в собственной системе координат, по формуле:
(irv): inverse(bone.rest_local_to_world_matrix)vertex,
2) Затем кость должна вычислить анимированный вертекс так:
a(irv): bone.animated_local_to_world_matrix (inverse(bone.rest_local_to_world_matrix) vertex).
А так как vertex у нас будет доступен только в шейдере то заливаем в шейдер для каждой кости матрицу:
(air): bone.animated_local_to_world_matrix inverse(bone.rest_local_to_world_matrix), чтобы в шейдере трансформировать вертекс (air)v.

Почему я заменил начальный a(irv) на (air)v ? Потому что в интернете написано что умножение матриц обладает ассоциативностью. Норм будет?
Аноним 30/10/17 Пнд 00:55:12 453217396
>>453216
пропали знаки умножения, эхх
Аноним 30/10/17 Пнд 08:56:24 453241397
>>453216
Там скорее не кость должна вершины вычислять, а вершины, в зависимости от конфигурации управляющих ею костей, должна вычислять себя. Но это не точно
Аноним 30/10/17 Пнд 11:03:01 453257398
>>452835
Согласен, но это не отменяет того, что в
>в gl_Position пишут не просто какие-то координаты. А координаты в пространстве "clip coordinates"

Потому что карточке по барабану используется 3D или 2D. Отдельного OpenGL режима для 2D - не существует
Аноним 30/10/17 Пнд 11:54:48 453268399
Поясните, в чем суть опенГЛ?
Можно ли на нём свой йоба-шутан написать с 0?
Долго ли учиться и какой язык?
Аноним 30/10/17 Пнд 11:59:43 453269400
>>453268
На нем нельзя написать еба шутан (или вообще что либо). Зато на нем можно написать рендерер для шутана (или вообще чего либо).
Аноним 30/10/17 Пнд 12:07:06 453272401
>>453203
Окей, сам спросил, сам нашел.
Аноним 30/10/17 Пнд 12:07:24 453273402
Аноним 30/10/17 Пнд 12:25:39 453280403
>>453268
OpenGL - это либа, которая дает доступ к ресурсам и возможностям видеокарты. Реализация этой либы у каждой видеокарточки - своя. Реализация OpenGL - это часть драйверов видеокарты.

Для того, чтобы написать шутер с нуля - нужно писать собственный движок с кучей математики и алгоритмов. То еще занятие
Аноним 30/10/17 Пнд 20:08:29 453369404
>>453280
Так а я думал это типо просто такой набор информации по реализации своими руками.
Аноним 31/10/17 Втр 07:53:22 453492405
>>453180
Ну ахуеть теперь, скачиваешь такой glut32.lib вместе с 5 гигами MSDN.
>молодец пидор качай теперь GLU.h
БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
Ну вот что в башке у людей? Зачем бы не взять и не выложить это на сайт? Чтобы я не ебал вола каждый раз и не бегал по форумам с горящей сракой. Пиздец я даже круг не нарисовал а уже жопа от Open GL горит.
А ещё есть ссаный Нюгет который типа должен сам всё поставить. Но на деле линковка идёт по пизде, а я опять сосу хуи...
Спасибо кроносам за моё счастливое детство.
Аноним 31/10/17 Втр 08:12:11 453495406
Аноним 31/10/17 Втр 08:14:20 453497407
Аноним 31/10/17 Втр 08:15:16 453498408
>>453495
Заходил я на эту страницу.
Грузишь такой 3.7 А там ссылка на другую страницу.
Выбираешь такой for windows
error 404
БАБАХ
Аноним 31/10/17 Втр 08:16:14 453499409
>>453495

Зачем использовать учебный глут, когда есть вполне себе взрослый и боевой SDL со всеми нужными батарейками включая звук и поддержку гейпадов?
Аноним 31/10/17 Втр 08:17:34 453501410
Аноним 31/10/17 Втр 08:20:00 453503411
>>453501
>>453497
Спасибо анон, буду сейчас смотреть как это применять.
Аноним 31/10/17 Втр 08:28:10 453506412
Аноним 31/10/17 Втр 11:01:33 453548413
>>453369
Хренушки.

OpenGL - это GAPI (Graphical API). Из распространненых GAPI есть DirectX (который только под винду), Metal (который только под MacOS) и новоявленный Vulkan

Суть в том, что для того, чтобы вывести 3D картинку на экран нужно проделать некоторые математические операции. И часть этих операций отдаются на откуп видеокарточке( поэтому в начале 2000-х они и зазывались БЛЕЯТЬ 3D ускорители).

GAPI - это программный интерфейс, предназначенный для того, чтобы загрузить карточку работой. А как ведеокарточка работает внутри, какие алгоритмы использует и как драйвер видеокарты общается напрямую с железом - ты никогда не узнаешь. Все что у тебя есть - это GAPI. Вот с ним и работай!
Аноним 31/10/17 Втр 11:09:56 453549414
20060901003445![...].pjp (258Кб, 1467x891)
1467x891
>>453548
>поэтому в начале 2000-х они и зазывались БЛЕЯТЬ 3D ускорители

В начале двухтысячных видеокарты назывались , как ни странно, видеокартами.

"3D-ускорителями" называлась в 90х продукция одного фактического монополиста по триде-рендерингу из 90х (пикрил), потому что данная плата без дополнительной видеокарты работать не могла (видишь тут два VGA - в один втыкается монитор, второй соединяется с какой-нибудь сраной S3).
Аноним 31/10/17 Втр 11:20:37 453552415
>>453549
Да, я тут немного согрешил. Устойчивое словосочетание тех времен: "а у тебя у видеокарты есть 3D ускоритель"?

Потому что блеять на проц видеокарту тогда еще не завезли, северный мост на матке еще имел место быть, а для современной видеокарты с 3D нужен был AGP порт, которого на моей матери блеять не было!

В итоге использовалась либо конченная видеокарта торчащая из PCI слота либо встроенное говно от VIA (есстественно оба без ускорителя на борту)
Аноним 31/10/17 Втр 11:46:20 453572416
Алсо, потсоны, кому там движок был нужен на опенгл?

https://github.com/orangeduck/Corange

Чистый С, никакой классолапши, никакой макросолапши.
Аноним 31/10/17 Втр 13:14:28 453685417
>>453572
В чём кайф, если это чужой движок?
Аноним 31/10/17 Втр 13:18:32 453692418
>>453492
А мог бы на glfw + glew писать
Аноним 31/10/17 Втр 14:13:49 453767419
>>453685
>В чём кайф, если это чужой движок?

простой, понятный. Код легко читается. В этих ваших километрах абстракций черт ногу сломит, а тут все просто и понятно.

Разве что malloc'и по каждому чиху выглядят, мягко говоря, странно.
Аноним 31/10/17 Втр 20:22:25 453966420
>>453548
Всё равно не ебу как это реализуемо. То ли типо пользователь этого API самостоятельно должен только наладить работу языка программирования с этим API, то ли я чего-то не могу допереть. Типо есть же уже реализации в библиотеках открытых тогда. Нахуя в таком случае изучать OpenGL, если по сути эта информация нужна только разработчикам инструментов и библиотек? Бля, то есть это вообще бесполезный тред получается. Самое сложное для меня сейчас понять что такое API
Аноним 31/10/17 Втр 21:02:56 453976421
>>453966
>Нахуя в таком случае изучать OpenGL, если по сути эта информация нужна только разработчикам инструментов и библиотек?

Ты наконец познал суть, да. Изучать, чтобы пилить свои велосипеды, если тебя не устраивает функционал юнити или анрыл энжина из соседних тредов. Или ты пишешь собственный комерческий продукт вроде CAD'а которому функционал игровых движков нафиг не в пился.
Аноним 31/10/17 Втр 21:07:10 453977422
>>453966
>Самое сложное для меня сейчас понять что такое API

В случае DirectX и OpenGL - это такая низкоуровневая прослойка между операционной системой и видеокартой, позволяющая общаться с видеокартами разных моделей и производителей относительно одинаковым образом. Аналогично Xinput Позволяет тебе общаться с джойстиком, OpenAL - работать со звуком, объемным и не только и так далее. Windows API позволяет рисовать окошки и отрабатывать нажатия на кнопочки.

Если тебе нуже еба-шутан, то крайенжин ( есть еще Lamberyard - форк круйзиспихла от амазона), юнька , анрил.
Аноним 31/10/17 Втр 21:12:55 453979423
>>453977
Почему никто не пилит просто свои имитации функционала этих API?
Аноним 31/10/17 Втр 22:27:23 453990424
>>453979
Долго, дорого, ненужно
Аноним 01/11/17 Срд 01:21:58 454002425
>>453979

Потому что нахуй никому не всралось делать за Майкрософт, невидию, амд и дюжину других производителей видеоядер для телефонов их же работу. Потому что API реализуется драйвером железки.
Аноним 01/11/17 Срд 11:31:44 454066426
>>454002
Ну как бы есть opensource реализации того же OpenGL: Mesa 3D. Эта либа поддерживает software rendering. Но смылса в использовании этой либы нету: у GPU 2k+ высислительных блоков, которые работают параллельно, а у CPU в лучшем случае - 16.

А запал со своей реализацией OpenGL для какого-то GPU только в одном: протокол общения с видеокартой у каждого вендора - свой проприетарный без открытых доков. И не факт что он не меняется с каждым новым девайсом
Аноним 02/11/17 Чтв 14:32:07 454322427
>>453979
>> Почему уже никто не пилит просто свои имитации функционала этих API?
Пофиксил тебя
Аноним 02/11/17 Чтв 19:35:58 454376428
Помоги анон!
Что значит: gl_Position is not accessible in this profile ? гуглёжка не дает никаких подходящих результатов. Делал всё почти как на learnopengl.com, потом пробнул просто скопипастить. чо не так то ебнврот
Аноним 02/11/17 Чтв 20:13:34 454384429
>>454376
а не, я долбаёб, нашёл
Аноним 03/11/17 Птн 16:23:15 454501430
Всегда существует некий основной, постоянно работающий шейдер? Объясните, сложно осознать весь принцип работы opengl.

Вот, к примеру, хочу треугольник на экран вывести -- нужно отправить в вершинный шейдер, собственно, вершины, а в фрагментный цвет. Это, скажем, базовый шейдер -- base.vert и base.frag. Но я пишу игорю и захотел, условно говоря, запилить охуенную водичку. Водичка -- тоже шейдер. Как мне ужить шейдеры вместе? Он же только один может использовать в определённый момент. (glUseProgram говорит какой именно).
Как енто делается? Голова кипит при попытке задуматься, а я же блядь АРХИТЕКТУРУ приложения заебатую хочу сделать, нужно всё понимать.
Аноним 03/11/17 Птн 16:26:48 454503431
>>454501
> использовать
использоваться

Алсо, водичкой будет второй треугольник.

Или вешинный шейдер должен быть всегда один, а остальными можно заправлять в зависимости от требований?(водичка -- отдельный фрагментный шейдер)
Или... Или как? Сложно!
Аноним 03/11/17 Птн 17:39:24 454513432
>>454503
А, хотя, я кажется всё понял. Похуй какой набор шейдеров сейчас активен, задача шейдера ведь просто отрисовать объект. Объясню, мне голову ломало позиционирование. Думал, что существует глобальный шейдер, куда посылается MVP, которое отвечает за позиционирование всей сцены. Мол, как другие шейдеры будут располагать позицией, если "основной", в который посылается MVP выключен. Но можно же в каждый набор шейдеров, будь он для водички, либо для любого другого материала, посылать этот самый MVP и всё будет хорошо. Да. Понятно.
Но как тогда работает освещение? Думаю светом в любом случае должен заниматься отдельный набор шейдеров, не описывать же его работу(падение) для каждого материала(шейдера) отдельно. Но только один шейдер может быть активен. Грубо говоря я не смогу активировать шейдер водички(плохой пример, скорее шейдер кирпичика) и шейдер освещения одновременно, чтобы на условном треугольнике отрисовалась и текстура кирпичика, и свет упавший на эту текстуру.
Я бы мог пойти почитать как работает свет в ogl, но это окончательно взорвёт мне мозг, да и не нужны мне глубокие познания в нём. Мне бы понять как всё это, опять же, ужить вместе. Вот. Объясните пожалуйста. Прошу прощения за поток мыслей, стараюсь думать и делать выводы при этом.
Аноним 03/11/17 Птн 18:33:29 454520433
>>454513
А тут все просто. Один и тот же код для совещения дублируется во всех шейдерах материалов
Аноним 03/11/17 Птн 18:40:32 454521434
>>454520
Ну заебись. С другой стороны это означает, что всё остальное я понял правильно, так? :3
Аноним 03/11/17 Птн 22:43:22 454556435