Бред

Ответить в тред Ответить в тред
Аноним 10/01/21 Вск 17:40:01 2374577881
image.png 20Кб, 495x402
495x402
C++ OpenGL THREAD

Аноны, нужна помощь. Пытаюсь сделать оверлей для игры при помощи перехвата WinAPI функции SwapBuffers. Затем создаю свой контекст, переключаюсь на него, рисую прямоугольник, переключаюсь на контекст игры и вызываю оригинальную функцию SwapBuffers. Прямоугольник появляется и всё бы ничего, но он мерцает. Я мог бы сказать что слабо разбираюсь в OpenGL но это будет враньё. Я вообще в нём не разбираюсь. Но мне позарез нужно устранить эту проблему. Я уже пытался гуглить, пытался отключать проверку глубины, но ничего не получилось. Он всё так же мерцает. Помогите пожалуйста. :(
Аноним # OP 10/01/21 Вск 17:41:43 2374579182
Бамп надежды
Аноним 10/01/21 Вск 17:43:14 2374580263
>>237457788 (OP)
Именно поэтому ты пришел в /b
иди на Stack
Аноним 10/01/21 Вск 17:44:58 2374581624
>>237458026
Чаю этому. Только надо идти на англоязычный стак сразу, там комьюнити адекватнее. Плюс ещё можешь канал в слаще поискать тематический. Здесь тебе максимум в ротик пососать смогут
Аноним 10/01/21 Вск 17:45:02 2374581665
Аноним # OP 10/01/21 Вск 17:45:34 2374581986
>>237458026
Я уже там был. Сказал же, я уже пытался искать и пытался спрашивать. На RU версии stackoverflow 30 просмотров и 0 ответов. На EN 2 ответа но мне там мало что понятно. Я пытался конечно воссоздать то что там советовали, но он всё так же мерцал.
Аноним 10/01/21 Вск 17:45:39 2374582067
Аноним 10/01/21 Вск 17:46:25 2374582708
>>237458198
>Я пытался конечно воссоздать то что там советовали, но он всё так же мерцал.
Ну так и ответь им
Аноним # OP 10/01/21 Вск 17:46:29 2374582769
>>237458166
Тут не чистый OpenGL а GLUT. И я уже видел эту тему.
Аноним # OP 10/01/21 Вск 17:46:54 23745830610
>>237458270
Ответил. Молчат. По этому пришёл сюда.
Аноним 10/01/21 Вск 17:47:29 23745835211
>>237458306
Ну тогда надо ждать. Здесь вряд ли помогут
Аноним # OP 10/01/21 Вск 17:47:45 23745838212
>>237458198
И про мало что понятно я имею ввиду не "код который мне дали как пример" а то что там словами написали "сделай так" и "так" а как это делать я в душе не ебу.
Аноним # OP 10/01/21 Вск 17:48:06 23745840913
>>237458352
Здесь много умных анонов.
Аноним 10/01/21 Вск 17:48:25 23745842314
>>237458382
Дак а нахуй ты без базовых знаний полез в ОпенГл ?
Аноним 10/01/21 Вск 17:48:31 23745843315
>>237458382
А как ты воссоздал там то, что советовали, если не понял ничего?
Аноним # OP 10/01/21 Вск 17:52:16 23745873216
>>237458433
Я частично смог. Там посоветовали использовать для рисования функции где есть "Z" параметр который нужно установить в 1. А так же "Не забудьте отключить проверку глубины при визуализации 2D в пространстве экрана и сбросе матрицы просмотра модели". Вот это я не понял. Перед рисованием отключил glDisable(GL_DEPTH_TEST) а вот при каком сбросе матрицы он я без понятия. У меня больше никакого кода кроме этого нет.
Аноним 10/01/21 Вск 17:53:20 23745882217
>>237458732
Ну тут без вариантов, только ждать. Если горит, можешь индуса за копейки нанять, он тебе сделает
Аноним # OP 10/01/21 Вск 18:04:52 23745962918
Бамп
Аноним # OP 10/01/21 Вск 18:10:39 23745999419
Бамп
Аноним # OP 10/01/21 Вск 18:18:04 23746051020
Бамп
Аноним # OP 10/01/21 Вск 18:21:43 23746079121
Бамп
Аноним # OP 10/01/21 Вск 18:25:55 23746108222
Бамп
Аноним # OP 10/01/21 Вск 18:38:51 23746204523
Бамп
Аноним 10/01/21 Вск 18:41:54 23746229324
Сам седня только начал в опенгл вкатываться хо-хо-хо. Хз по сабжу ли решение, но вычитал про то, что чтоб не мерцало, нужна двойная буферизация. Как оно работает не скажу, так что гугол в помощь. А вообще, с такими вопросами в стек или /pr/.
Аноним 10/01/21 Вск 18:44:06 23746244525
>>237457788 (OP)
Я не разбираюсь, но похоже, что у тебя _SwapBuffers() в бесконечной рекурсии, не? Нет точки выхода.
Аноним 10/01/21 Вск 18:44:30 23746247326
16102338019743.jpg 25Кб, 416x287
416x287
Аноним 10/01/21 Вск 18:44:57 23746250827
>>237462445
-> вот оно и отрисовывается снова и снова.
Аноним 10/01/21 Вск 18:49:48 23746285528
image 122Кб, 757x490
757x490
Аноним 10/01/21 Вск 18:53:13 23746313829
Аноним 10/01/21 Вск 18:58:30 23746357930
>>237463138
А нахера каждый раз проверять?
Аноним 10/01/21 Вск 19:00:04 23746369931
Объясните гуманитарию, почему существуют другие языки, когда есть питон? Он же идеален, максимально прост и эффективен.
Аноним 10/01/21 Вск 19:01:44 23746380432
Аноним 10/01/21 Вск 19:05:32 23746408033
>>237463699
>идеален
Нет.
>максимально прост
=> тысяча макак делает тупую говнятину
>эффективен
Нет.
>>237463804
Хуегаси. Иди нахуй, пытонодебил.
Аноним 10/01/21 Вск 19:08:11 23746428334
>>237457788 (OP)
Пиздец говнокод, я просто в ахуе. Это, кстати, типичное последствие повсеместного обучения ПИТОНУ. Дебилов на курсах от cumbrain учат клавиши тыцкать, а элементарным общепринятым практикам не учат. Пиздос, лет десять назад никто бы даже не поверил, что такой код без рофлов реально написал программист С++, не являющийся индусом.
Аноним # OP 10/01/21 Вск 19:08:23 23746430735
>>237462293
Может быть, но скорее всего нет. У моего знакомого мерцания нет. Возможно это как-то связано с тем что у меня AMD. Я когда-то встречал человека который делал подобное и у него мерцаний не было, а у меня были. Потом он что-то поменял и они исчезли даже у меня.

>>237462445
Нет. __SwapBuffers это моя функция перехватчик, _SwapBuffers это оригинальная функция. Если бы там было написано SwapBuffers, тогда была бы рекурсия.

>>237462508
Здесь нет рекурсии. Смотри ответ выше.

>>237462855
>>237463579
Эта проверка ни коем образом не влияет на мерцание. Так наиболее удобно создавать контекст. Иначе придётся писать код на поиск нужного hDC (а это не просто) чтобы передать его в wglCreateContext()
Аноним 10/01/21 Вск 19:09:44 23746441836
>>237463699
Он нихуя не эффективен, когда задача сложнее чем написать калькулятор или сайтик
Аноним # OP 10/01/21 Вск 19:11:34 23746456137
>>237464283
Где конкретно ты его увидел? Пукнул и ничего по делу не сказал, заебись программист.
Аноним 10/01/21 Вск 19:12:47 23746466538
>>237457788 (OP)
Самый легуий вкат в опен жль на плюсах это Qt
/тхет
Аноним 10/01/21 Вск 19:17:19 23746503539
Вертикальную синхрнизацию принудительно попробуй
Аноним # OP 10/01/21 Вск 19:19:11 23746519840
>>237465035
Включал, все равно мигает.
Аноним 10/01/21 Вск 19:23:25 23746558741
>>237464283
Мне перепечатывать этот высер больной собаки, не пойму? Ладно.
>if (!context)
>glViewport(viewport[0]...
>нахуй не нужный вообще BOOL
Про именование вообще молчу. Мда.
Аноним 10/01/21 Вск 19:30:50 23746624242
Бля, анонче, я не спал два дня, щяс вот лягу скоро, прочитал тред по диагонали. Вообще не вдупляю что там у тебя твориться, но вроде увидел слово мерцание, это вообще артефакты ппоходу. Код кинь, если не сдохну щяс то гляну
Аноним 10/01/21 Вск 19:31:57 23746633743
image 446Кб, 576x604
576x604
>>237466242
>если не сдохну щяс то гляну
Вечных тебе снов
Аноним # OP 10/01/21 Вск 19:33:59 23746651644
>>237465587
Еще раз спрашиваю где конкретно ты увидел говнокод? Ты не разбираешься в OpenGL. Ты даже не попытался загуглить что за функции я здесь вызвал и почему я вызвал их именно здесь.

1. Не вижу здесь говнокода. Если ты знаешь как можно сделать лучше — напиши. Но я сомневаюсь что ты это сделаешь, поскольку по другому НИКАК. Нужно создать свой контекст и на нём рисовать. Создать его можно ТОЛЬКО В ЭТОЙ ФУНКЦИИ иначе ты не получишь hDC который использует игра.

2. Что здесь не так? Я получил размеры оригинального контекста игры и установил такие же размеры для своего контекста. Претензии к тому что это массив? Так это уже к OpenGL. glGetIntegerv вместе с GL_VIEWPORT.. требует чтобы был указан массив в который будет записан x, y, width и heigth.

3. Функция-перехватчик должна возвращать такое же значение и такие же параметры как и у оригинальной функции.

Дегенерат который никогда не делал ничего подобного пытается лезть и учить кого-то другого, при этом оскорбляя код.
Аноним # OP 10/01/21 Вск 19:35:50 23746668445
>>237466242
Лучше поспи пойди. Кто-нибудь другой поможет. Сладких снов. :3
Аноним 10/01/21 Вск 19:38:02 23746689146
>>237466684
Тебе никто другой не поможет.
Аноним # OP 10/01/21 Вск 19:38:57 23746697347
>>237466891
Тебе код который с картинки? Другого кода кроме самого перехватчика нет. Перехватчик это Microsoft Detours. Его скачивать надо..
Аноним # OP 10/01/21 Вск 19:43:05 23746733048
>>237466891
BOOL WINAPI __SwapBuffers(HDC hDC)
{
HGLRC oldContext = wglGetCurrentContext();

if (!context)
{
context = wglCreateContext(hDC);
}

GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);

wglMakeCurrent(hDC, context);

glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);

glRectf(0.1F, 0.5F, 0.2F, 0.6F);

wglMakeCurrent(hDC, oldContext);

return _SwapBuffers(hDC); // Call the original SwapBuffers
}
Аноним 10/01/21 Вск 19:44:57 23746749449
>>237464080
>=> тысяча макак делает тупую говнятину
Низкий порог входа это плохо?
Для исполнителя возможно, так как выше конкуренция, но чем это плохо для заказчика?
Аноним 10/01/21 Вск 19:45:41 23746757050
Бамп
Аноним 10/01/21 Вск 19:46:14 23746762251
>>237467494
Для заказчика это заебись, но для пользователя хуево, потому что дебилы нихуя не могут нормально сделать.
мимошел
Аноним 10/01/21 Вск 19:49:12 23746785952
>>237466684
Спасибо, пойду действительно лягу.

>>237466891
Это не я написал кста
Аноним # OP 10/01/21 Вск 19:50:07 23746793353
>>237467330
>>237466891
Как я уже писал "У моего знакомого мерцания нет. Возможно это как-то связано с тем что у меня AMD. Я когда-то встречал человека который делал подобное и у него мерцаний не было, а у меня были. Потом он что-то поменял и они исчезли даже у меня". Вот мне нужно это "что-то" и у себя сделать.
Аноним # OP 10/01/21 Вск 19:50:58 23746799854
>>237467859
Кто-нибудь всё равно поможет. Сладких. :3
Аноним 10/01/21 Вск 19:51:50 23746806555
Помню что opengl прорисовывает картинку с левого нижнего пекселя в противоположный угол. Из за этого могут быть артефакты рендеринга, мегания думаю у ним можно отнести. Тебе нужно включить двойную буферизацию, погугли это.

Вообще могу ошибаться и не понять текста, т.к. про двойную буферизацию пишут во всех статьях для начинающих на опенгл, уж это ты должен был читать
Аноним # OP 10/01/21 Вск 19:59:11 23746864156
>>237468065
> OpenGL прорисовывает картинку с левого нижнего пекселя в противоположный угол
Да

> Из за этого могут быть артефакты рендеринга
Нет
Аноним 10/01/21 Вск 20:01:21 23746879657
Аноним # OP 10/01/21 Вск 20:02:24 23746887558
Бамп
Аноним # OP 10/01/21 Вск 20:03:09 23746892859
Бамп
Аноним # OP 10/01/21 Вск 20:03:53 23746899260
Бамп
Аноним 10/01/21 Вск 20:06:21 23746911861
>>237463699
питон довольно дерьмовый язык.
Аноним 10/01/21 Вск 20:07:43 23746925762
>>237468641
Разве?
Везде же пишут что без двойной буферизации будут проблемы с картинкой, провести
мимо недавно начал учить opengl
Аноним 10/01/21 Вск 20:08:17 23746930463
>>237467330
>return _SwapBuffers(hDC); // Call the original SwapBuffers
Верни тут TRUE и всё
Аноним 10/01/21 Вск 20:09:13 23746938564
0ceebx7d0g8-3-7[...].jpg 111Кб, 768x720
768x720
Аноним # OP 10/01/21 Вск 20:10:16 23746947265
>>237469304
Ты же понимаешь что если я просто верну TRUE без вызова оригинальной функции то оригинальные инструкции не выполнятся и кадры никогда не будут меняться?
Аноним 10/01/21 Вск 20:15:15 23746992266
>>237469472
ты же своп делаешь в своей функции.
Аноним 10/01/21 Вск 20:18:18 23747020267
>>237469922
>wglMakeCurrent(hDC, oldContext);
Вот, >>237469472 смотри, ты сделал тут своп буферов.
Аноним 10/01/21 Вск 20:31:36 23747133268
>>237470202
Алсо, зачем ты делаешь старый контекст - текущем?
wglMakeCurrent(hDC, oldContext);
должно быть
wglMakeCurrent(hDC, context);
и эта инструкция должны быть одна перед return.
Аноним # OP 10/01/21 Вск 20:35:39 23747166369
>>237469922
SwapBuffers и переключение контекста в котором ты что-то будешь рисовать / настраивать это разное.

>>237470202
Здесь я выбрал контекст в котором буду рисовать.

>>237471332
Вначале я делаю текущим свой, чтобы нарисовать в нём то что мне нужно. Затем выбираю контекст игры чтобы она рисовала в своём контексте. Мой контекст будет поверх контекста игры.
Аноним # OP 10/01/21 Вск 20:44:16 23747239970
Бамп
Аноним # OP 10/01/21 Вск 21:18:06 23747520971
Бамп
Аноним # OP 10/01/21 Вск 21:22:01 23747552872
Бамп
Аноним # OP 10/01/21 Вск 21:26:26 23747592973
Бамп
Аноним # OP 10/01/21 Вск 21:28:05 23747609374
Бамп
Аноним # OP 10/01/21 Вск 21:44:07 23747749275
Бамп в слезах
Аноним 10/01/21 Вск 21:45:36 23747761876
>>237466891
А я тебе говорил, дурилка. Иди спи)
Аноним # OP 10/01/21 Вск 22:04:26 23747912777
Бамп
Аноним 10/01/21 Вск 22:12:13 23747974978
Бамп
Аноним 10/01/21 Вск 22:40:32 23748200179
Бамп
Аноним 10/01/21 Вск 22:51:14 23748282680
>>237457788 (OP)
Я бы поковырял код, если бы в среде был. Интересно зачем вообще перерисовывать пытаешься на каждом шаге, один раз если отрисовать не помагает?
Аноним 10/01/21 Вск 23:02:04 23748369381
>>237482826
Потому что кадр в игре так рисуется.. Если нарисовать один раз то он появится на миллисекунду и пропадет. Лол.
Аноним 10/01/21 Вск 23:08:39 23748421382
>>237457788 (OP)
вообще, по моему, изменять контекст на каждом свапбуфер не очень умно, потому-что перформанс должен упасть, что может объяснить мерцания?
но опять, это мои 5 копеек, возможно даже не правильные


Аноним 10/01/21 Вск 23:16:15 23748484483
>>237484213
>>237483693
> Если нарисовать один раз то он появится на миллисекунду и пропадет
Аноним 10/01/21 Вск 23:25:03 23748553284
Бамп
Аноним 10/01/21 Вск 23:32:56 23748613285
Бамп
Аноним 10/01/21 Вск 23:52:14 23748775586
Бамп
Аноним 11/01/21 Пнд 00:12:17 23748951687
>>237457788 (OP)
пусть сначала оригинальная функция отработает, а потом твоя
Настройки X
Ответить в тред X
15000
Макс объем: 20Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
X
Ваш шидевор X
Стикеры X
Избранное / Топ тредов