Карта сайта

Это автоматически сохраненная страница от 12.01.2021. Оригинал был здесь: http://2ch.hk/b/res/237539984.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Пнд 11 Янв 2021 17:51:15
C++ OpenGL THREAD Аноны, нужна помощь. Пытаюсь сделать
[OP]

C++ OpenGL THREAD  Аноны, нужна помощь. Пытаюсь сделать
C++ OpenGL THREAD

Аноны, нужна помощь. Пытаюсь сделать оверлей для игры при помощи перехвата WinAPI функции SwapBuffers. Затем создаю свой контекст, переключаюсь на него, рисую прямоугольник, переключаюсь на контекст игры и вызываю оригинальную функцию SwapBuffers. Прямоугольник появляется и всё бы ничего, но он мерцает. Я мог бы сказать что слабо разбираюсь в OpenGL но это будет враньё. Я вообще в нём не разбираюсь. Но мне позарез нужно устранить эту проблему. Я уже пытался гуглить, пытался отключать проверку глубины, но ничего не получилось. Он всё так же мерцает. Помогите пожалуйста. :(

upd. На stackoverflow никто так мне и не помог.



Пнд 11 Янв 2021 17:52:06
Web►M (md5:621cee08578323ac4dbf817aea82c07f)



Пнд 11 Янв 2021 17:52:48
[OP]

Web►M (md5:61104be595e539f379fab15f2a7db3da)
>>237540030



Пнд 11 Янв 2021 17:53:52
[OP]

Бамп

Пнд 11 Янв 2021 17:55:06
[OP]

Бамп

Пнд 11 Янв 2021 17:58:03
[OP]

Бамп

Пнд 11 Янв 2021 18:14:17
[OP]

Бамп

Пнд 11 Янв 2021 18:34:10
[OP]

Бамп

Пнд 11 Янв 2021 18:56:53
[OP]

Бамп

Пнд 11 Янв 2021 19:02:35
[OP]

Бамп

Пнд 11 Янв 2021 19:08:08
[OP]

Бамп

Пнд 11 Янв 2021 19:11:45
[OP]

Бамп

Пнд 11 Янв 2021 19:14:09
>>237539984 (OP)
Забивай комментариями отдельные строки и смотри где мерцание пропадёт. И копай хелп на эту функцию. Стандартная же метода.

Пнд 11 Янв 2021 19:17:02
>>237539984 (OP)
SwapBuffers
The SwapBuffers function exchanges the front and back buffers if the current pixel format for the window referenced by the specified device context includes a back buffer.

BOOL SwapBuffers(
HDC hdc // device context whose buffers get swapped
);
Parameters
hdc
Specifies a device context. If the current pixel format for the window referenced by this device context includes a back buffer, the function exchanges the front and back buffers.
Return Values
If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE. To get extended error information, call GetLastError.

Remarks
If the current pixel format for the window referenced by the device context does not include a back buffer, this call has no effect and the content of the back buffer is undefined when the function returns.

With multithread applications, flush the drawing commands in any other threads drawing to the same window before calling SwapBuffers.


Пнд 11 Янв 2021 19:22:42
>>237539984 (OP)
>
Проверь как ты создаёшь hdc-
hdc
Specifies a device context. If the current pixel format for the window referenced by this device context includes a back buffer, the function exchanges the front and back buffers.

Пнд 11 Янв 2021 19:36:41
[OP]

>>237545430
> Забивай комментариями отдельные строки и смотри где мерцание пропадёт

Да, ты прав. Если закомментировать строку рисующую прямоугольник то мерцание пропадает. Правда потому что прямоугольника теперь нет. Спасибо! А если серьезно, здесь каждая функция нужна и комментировать тут нечего. Тут скорее добавлять надо что-то, но вот что я не знаю. Возможно нужно как-то контекст мой правильно инициализировать.

>>237545631
> копипаста_с_msdn
Спасибо! Я сижу с этой проблемой уже четыре дня и не додумался зайти и почитать описание этой функции!

>>237545992
Я тебе больше скажу. Я его не создаю! Как это так? А вот ТАК. HDC передаётся игрой в функцию SwapBuffers, а так как она мною перехвачена то передаётся в мою а потом моя функция вызывает уже оригинальную функцию с этим же HDC. Не в этом проблема.

Пнд 11 Янв 2021 19:37:34
[OP]

Бамп аноны я же знаю есть те кто шарит

Пнд 11 Янв 2021 19:39:29
Мерцает как? Каждый второй кадр или рандомно?

Пнд 11 Янв 2021 19:41:14
>>237547165
Рандомно.

Пнд 11 Янв 2021 19:42:10
>>237547165
Если надо могу записать видео

Пнд 11 Янв 2021 19:42:28

Пнд 11 Янв 2021 19:42:30
Не шарю за рендер, максимум делал рендер из буфера в текстуру на DX11/12, но на тред подписался.


Пнд 11 Янв 2021 19:42:52
[OP]

>>237547416
>>237547398
>>237547319
ГАЛКА ВЕРНИС

Пнд 11 Янв 2021 19:44:41
[OP]

Бамп

Пнд 11 Янв 2021 19:45:59
>>237547319
>>237547398
Короче скорее всего помимо основного фреймбуфера игра создает еще всякие промежуточные для других проходов. Для теней там и прочей подобной малафьи и та хуйня, которую ты нарисовал, оказывается на экране только иногда.
В итоге у тебя ничего не получится, попробуй по другому как-нибудь.
Но это всё не точно, я тоже не гуру в opengl и особенно winapi

Пнд 11 Янв 2021 19:47:28
>>237539984 (OP)
Ты как тред отредачил, опездал?

Пнд 11 Янв 2021 19:49:06
[OP]

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

Точно нет. Я смотрел вызовы функций и там только один игровой контекст.

Пнд 11 Янв 2021 19:50:49
[OP]

Бамп

Пнд 11 Янв 2021 19:54:36
[OP]

Бамп

Пнд 11 Янв 2021 19:57:52
Так блэд, а что еще за glRectf? Ты из 90х? Если да, то тебе же тогда надо еще сбросить матрицу проекции и модельную по логике вещей, а то иначе твой прямоугольник будет рисоваться умножаясь по текущие значения. Попробуй что-то в духе

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

Ну или по-человечески glOrtho2d или какая там функция, лет 10 уже фиксированные функции не видел.

Потом

glMatrixMode(GL_MODELVEW); // вроде так
glLoadIdentity();

Пнд 11 Янв 2021 20:05:54
[OP]

>>237548538
>glMatrixMode(GL_PROJECTION);
>glLoadIdentity();
Это надо после того как я вью порт поставил или до?

Пнд 11 Янв 2021 20:07:15
>>237549091
После и перед тем, как рисовать прямоугольник.

Ну это, конечно, если проблема с матрицами именно.

Пнд 11 Янв 2021 20:07:31
>>237549091
открой книгу по OGL 2010 уже, не еби мозги.

Пнд 11 Янв 2021 20:11:13
>>237549196
В 2010 использовать фиксированные функции уже было зашкваром.

Пнд 11 Янв 2021 20:12:08
[OP]

>>237548538
> Так блэд, а что еще за glRectf? Ты из 90х?
Когда я рисовал при помощи glVertex3f то он тоже мерцал.

Пнд 11 Янв 2021 20:13:26
Бамп

Пнд 11 Янв 2021 20:15:33
[OP]

>>237548538
На данный момент пробую что посоветовал этот великий анон. Просто как он описал всё равно мигает, но я добавил ещё glDisable(GL_DEPTH_TEST) и вот сижу жду, будет ли мерцать или нет.

Пнд 11 Янв 2021 20:16:57
>>237549412
зато учебники писали именно так как ему надо. кмк, он вообще пытается сделать то, что не надо делать.

Пнд 11 Янв 2021 20:17:46
[OP]

>>237549719
Мерцает. Сейчас попробую использовать вместо glRect glVertex3f.

Пнд 11 Янв 2021 20:20:42
[OP]

>>237549903
Все равно мерцает.. :(

Пнд 11 Янв 2021 20:22:18
>>237550115
Покажи обновленный код

Пнд 11 Янв 2021 20:23:35
>>237550243
ему надо весь код проекта показать для начала, а не одну функцию.

Пнд 11 Янв 2021 20:25:58
[OP]

>>237550243
BOOL WINAPI __SwapBuffers(HDC hDC)
{
\tHGLRC oldContext = wglGetCurrentContext();

\tif (!context)
\t{
\t\tcontext = wglCreateContext(hDC);
\t}

\tGLint viewport[4];
\tglGetIntegerv(GL_VIEWPORT, viewport);

\twglMakeCurrent(hDC, context);

\tglViewport(viewport[0], viewport[1], viewport[2], viewport[3]);

\tglDisable(GL_DEPTH_TEST);

\tglMatrixMode(GL_PROJECTION);
\tglLoadIdentity();

\tglBegin(GL_QUADS);
\tglVertex3f(0.0, 0.5, 1);
\tglVertex3f(0.0, 1.0, 1);
\tglVertex3f(0.5, 1.0, 1);
\tglVertex3f(0.5, 0.5, 1);
\tglEnd();

\tglMatrixMode(GL_MODELVIEW);
\tglLoadIdentity();

\twglMakeCurrent(hDC, oldContext);
\treturn _SwapBuffers(hDC);
}

>>237550335
> ему надо весь код проекта показать для начала, а не одну функцию.

У меня кроме этой функции больше ничего нет. Только код для установки перехвата SwapBuffers и всё.

Пнд 11 Янв 2021 20:27:09
>>237550508
>glMatrixMode(GL_MODELVIEW);
>glLoadIdentity();
Это тоже перед вызовом отрисовки должно быть. Какой смысл это делать после?

Пнд 11 Янв 2021 20:28:54
[OP]

>>237550606
\tglMatrixMode(GL_PROJECTION);
\tglLoadIdentity();
\tglMatrixMode(GL_MODELVIEW);
\tglLoadIdentity();

\tglBegin(GL_QUADS);
\tglVertex3f(0.0, 0.5, 1);
\tglVertex3f(0.0, 1.0, 1);
\tglVertex3f(0.5, 1.0, 1);
\tglVertex3f(0.5, 0.5, 1);
\tglEnd();

Типа так что-ли?..

Пнд 11 Янв 2021 20:30:17

Пнд 11 Янв 2021 20:33:20
[OP]

>>237550726
Все равно иногда мерцает.. Может я тупой и что-то не понял?

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]);

glDisable(GL_DEPTH_TEST);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glBegin(GL_QUADS);
glVertex3f(0.0, 0.5, 1);
glVertex3f(0.0, 1.0, 1);
glVertex3f(0.5, 1.0, 1);
glVertex3f(0.5, 0.5, 1);
glEnd();

wglMakeCurrent(hDC, oldContext);
return _SwapBuffers(hDC);
}

Пнд 11 Янв 2021 20:34:52
Запиши видео как мерцает

Пнд 11 Янв 2021 20:35:57
>>237539984 (OP)
Тоже нихуя в этом не понимаю, но попробуй двойную буферизацию, вдруг поможет

Пнд 11 Янв 2021 20:37:59
>>237539984 (OP)
Вася, выкидывай ШинАпи, это сейчас никому нахуй не нужно, даже если ты это для себя игру пилишь.
Бери SDL2 и уже на его контексте OpenGL запиливай свой мега рендер

Пнд 11 Янв 2021 20:38:16
>>237551137
Так оно и так должно быть включено в игре, которую оп-хацкер пытается модифицировать.

Пнд 11 Янв 2021 20:39:45
>>237550963
> glBegin(GL_QUADS);
>glEnd();

пиздец, я еле нашел устройство, чтобы там был OpenGL 2.1, а ты под него по умолчанию хуячишь..

Пнд 11 Янв 2021 20:41:03
[OP]

Web►M (md5:841e3ee4a4ac6a5ea39fddec5174a4c4)
>>237551059



Пнд 11 Янв 2021 20:41:37
[OP]

>>237551344
Я делаю так чтобы и на старом OpenGL и на новом OpenGL все работало

Пнд 11 Янв 2021 20:41:56
>>237539984 (OP)
С++ это оливье.
мимо Java-боярин

Пнд 11 Янв 2021 20:42:37
[OP]

Бамп

Пнд 11 Янв 2021 20:42:56
>>237546950
Не перехватывай, а создай свой hdc. Там же в hrlp ясно сказано, про свойства hdc, которыe нужны для работы этой функции.

Пнд 11 Янв 2021 20:43:21
>>237551479
пока ты это делаешь старых устройств совсем не останется
у меня некро Asus EEE 2012 года, так на нем ogl 3.0

так что не еби мозгу и пиши сразу на нормальном, один посох пока пишешь уже все на вулкане будет

Пнд 11 Янв 2021 20:44:10
>>237551505
> мимо Java-боярин
сборщики мусора подползли

Пнд 11 Янв 2021 20:44:49
[OP]

>>237551595
При чем тут устройства. Я делаю оверлей для Java Minecraft и хочу чтобы работало с самой первой альфа версии по самую новую. Мой вопрос не в том как рисовать, а почему мерцает.

Пнд 11 Янв 2021 20:47:12
>>237551684
а причем тут альфа майна.. пиздос..
ты лучше найди чела, который этот майн сможет запустить на устройствах старее 2010 года
мерцает - буферизация нужна уже выше тебе несколько анонов отписали (двойная или тройная - на твой ебаный вкус)

Пнд 11 Янв 2021 20:47:38
>>237551437
Ну видно что в некоторых отдельных кадрах просто не рисуется, а так работает же вроде.
Хуй знает короче.

Пнд 11 Янв 2021 20:49:35
[OP]

>>237551819
При чем тут двойная буферизация? Мой оверлей рисуется к ЛЮБОМУ кадру. Если в игре двойная буферизация значит он будет рисоваться и там и там. Это не я должен реализовывать. Да и если бы проблема была в этом, он мерцал бы КАЖДЫЙ ВТОРОЙ кадр.

Пнд 11 Янв 2021 20:50:03
[OP]

>>237551854
Спасибо что попытался помочь анон :(

Пнд 11 Янв 2021 20:51:25
>>237551997
ой бля.. ну и куда ты полез с такими познаниями..
твой майн тебе генерит кадр, твоя блядская прога генерит кадр, а чтобы итоговый кадр не мерцал, то тебе надо первые два мерджить в один буфер сначала, а потом уже на новом контексте выводить

Пнд 11 Янв 2021 20:52:50
[email: sage]

сажи говнокодеру-читсофтеру

Пнд 11 Янв 2021 20:53:46
[OP]

>>237552114
И как это сделать?

Пнд 11 Янв 2021 20:55:07
>>237539984 (OP)
анон, если один прямоугольник мерцает , то добавть строк чтоб на одном месте мерцало больше прямоугольников.

Пнд 11 Янв 2021 20:55:58
[OP]

>>237552114
И почему он мерцает так редко? По идее ведь должен постоянно тогда.

Пнд 11 Янв 2021 20:56:21
[OP]

>>237552353
АХАХАХ. Рыбак рыбака..

Пнд 11 Янв 2021 20:56:53
>>237552417
потому что твой шоколадный глаз не всегда попадает с частотой мерцания

Пнд 11 Янв 2021 21:00:34
[OP]

Бамп

Пнд 11 Янв 2021 21:00:40
майнкрафт-кун, ты? какой месяц идет? с октября-ноября ты свои треды тут создаешь.
ты сам хоть что-то будешь писать? пакеты ему "зашифрованы", окна мерцают.

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


ты изначально выбрал не тот путь - взял бы и инжектил свое жвм оливье прямо в minecraft.jar и сидел бы довольный

Пнд 11 Янв 2021 21:02:12
>>237551997
Пиздуй книги читать, дурачок.
Вот анон как-то поделился как-то.
https://dropmefiles.com/dfvBb

Пнд 11 Янв 2021 21:07:00
>>237539984 (OP)
У тебя второй буферок пустой, а ты их свапаешь с буфером с прямоугольником туда-сюда как угорелый, вот и мерцает. Нужно, чтоб во всех буферках у тебя что-то было.


Пнд 11 Янв 2021 21:08:49
[OP]

>>237552747
> майнкрафт-кун, ты?
Я

> пакеты ему "зашифрованы"
Да, зашифрованы. Как оказалось там RSA шифрование с каким-то костылём, при котором каждый новый пакет тех же данных содержит совершенно другие байты.

> взял бы и инжектил свое жвм
Подгружать свою JVM? Что? При чём тут это? Minecraft работает на JVM и она сама уже подгружена. Зачем делать это второй раз? Повторюсь, то как обычно делают читы для этой игры я прекрасно знаю.

Пнд 11 Янв 2021 21:11:28
[OP]

>>237553154
По идее мерцать постоянно должно. Можно ли как то твою теорию проверить? Как сделать так как ты сказал?

Пнд 11 Янв 2021 21:14:25
>>237553263
>да зашифрованы
про encryption и на wiki.vg написано. ты прекрасно знаешь, что я про то, что ты дампил байты и бугуртил с того, что там нечитаемая информация
>подгружать свою JVM?
Нет. Засунуть в minecraft.jar свое никому нинужное говноподелие.
>Как обычно делают читы я прекрасно знаю
нет. /thread

Пнд 11 Янв 2021 21:14:52
>>237551640
Дай доесть спокойно, чё бухтишь.

Пнд 11 Янв 2021 21:16:54
Файл не сохранен
>>237551640



Пнд 11 Янв 2021 21:18:14
>>237553768
IDIsposable завезли

Пнд 11 Янв 2021 21:18:31
>>237553768
ОПЕРАТОР with!

Пнд 11 Янв 2021 21:18:52
>>237551640
За нас это делает GC, это же вы это делаете ручками, хо-хо-хо

Пнд 11 Янв 2021 21:23:39
[OP]

>>237553613
> я про то, что ты дампил байты и бугуртил с того, что там нечитаемая информация
Я не знал как правильно перевести массив char в нужный мне вид. До создания вопроса здесь, я неоднократно искал то как можно это сделать, находил только std::hex но оно не работало правильно. Видимо мне не повезло.

> Засунуть в minecraft.jar свое никому нинужное говноподелие
Это самый идиотский способ делать читы из всех что я знаю.

> нет
Да. Можно подгрузить Java класс чита через функцию DefineClass из JVM (или JNI, точно не помню) а можно вовсе вызывать Minecraft функции при помощи JNI. И это только то что я смог назвать с ходу.

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

Пнд 11 Янв 2021 21:24:51
>>237553888
за нас это делает STL
new\delete в плюсах ручками почти никто не делает лет 10

Пнд 11 Янв 2021 21:26:31
>>237554193
Нужный вид - это какой?

Пнд 11 Янв 2021 21:28:17
[OP]

>>237554362
> Нужный вид - это какой?
Изначально там был массив char и я бугуртил именно из-за того что выводятся всякие символы-закорючки, тогда как ожидал видеть байты типа "0x41" и так далее. Как только мне подсказали как перевести это в такой вид я больше не бугуртил. Ты что-то путаешь.

Пнд 11 Янв 2021 21:30:26
зачем тебе OpenGl чел... тебе выучить нечего...

Пнд 11 Янв 2021 21:32:36
[OP]

Аноны, пожалуйста, помогите решить проблему с мерцанием.. Вот видео >>237551437

Пнд 11 Янв 2021 21:33:14
>>237554193
>Это самый идиотский способ делать читы из всех что я знаю
Тебе как-раз

Пнд 11 Янв 2021 21:33:19
>>237554757
перезалей в mp4

Пнд 11 Янв 2021 21:33:27
>>237554757
какую прогу делаешь?

Пнд 11 Янв 2021 21:36:57
Файл не сохранен
>>237554820
>пук


Пнд 11 Янв 2021 21:46:13
[OP]

Web►M (md5:ee64b2842d14461c33dd9efc925fb3f0)
>>237554815
Не понимаю откуда у тебя эта агрессия.

>>237554820



Пнд 11 Янв 2021 21:47:00
[OP]

>>237554830
Несколько разных. Не хочу говорить. Одна будет бесплатная для любой версии. Не чит.

Пнд 11 Янв 2021 21:47:28
[OP]

>>237554830
Другие просто для себя.

Пнд 11 Янв 2021 21:49:16
[OP]

Бамп

Пнд 11 Янв 2021 21:52:42
[OP]

Бамп

Пнд 11 Янв 2021 21:55:38
[OP]

Бамп

Пнд 11 Янв 2021 21:57:40
[OP]

Бамп

Пнд 11 Янв 2021 21:59:30
[OP]

Бамп

Пнд 11 Янв 2021 22:01:23
[OP]

Бамп

Пнд 11 Янв 2021 22:03:42
бамп. хороший тред

Пнд 11 Янв 2021 22:03:58
[OP]

Бамп

Пнд 11 Янв 2021 22:05:58
[email: sage]

>>237539984 (OP)
снегурочка ты долбоеб - не создавай свой контекст и не делай текущим - тебе нужно рисовать на чужом контексте
поэтому у тебя и мерцает - ты раком опенгл ставить пытаешься впаривая в DC свой контекст - у тебя че блять как два контекста на одном окне рисовать будут? ты еблан? яхуею
убери весь код нахуй

должно быть
BOOL WINAPI Swapbuffers(HDC dc) {
// do your shit here
// ясен посох ты тут должен пушнуть атрибуты и стейты, сделать свое рисование и вернуть все взад (хотя это может быть и не обязательно если приложение все перевыставляет в начале кадра)
retyrn oldSwapBuffers(dc);
}

Пнд 11 Янв 2021 22:08:11
[OP]

>>237557015
Я уже пробовал так делать.

BOOL WINAPI __SwapBuffers(HDC hDC)
{
\tglBegin(GL_QUADS);
\tglVertex3f(0.0, 0.5, 1);
\tglVertex3f(0.0, 1.0, 1);
\tglVertex3f(0.5, 1.0, 1);
\tglVertex3f(0.5, 0.5, 1);
\tglEnd();

\treturn _SwapBuffers(hDC);
}

Вообще ничего не рисуется.

Пнд 11 Янв 2021 22:10:16
[OP]

>>237557015
> ты долбоеб
> ты раком опенгл ставить пытаешься
> ты еблан?

Скажи это другим людям которые делают таким же образом. Я достаточно часто встречал подобную реализацию когда искал как сделать оверлей. Нужно делать через второй контекст.

Пнд 11 Янв 2021 22:10:58
[OP]

>>237557159
> Вообще ничего не рисуется
Ничего в плане из моего. Игра как работала так и работает.

Пнд 11 Янв 2021 22:14:13
[email: sage]

>>237557159
ты вообще представляешь как работает опенгл?
исходное приложение имеет состояние:
- шейдер, матрицы проекции, модели
поэтому ТАК прямо нарисовать ты не можешь
нужно - glUseProgram(0); если используется шейдер в оригинале
нужно glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(...)
унжно glMatrixMode(GL_MODELVIEW); glLoadIdentity();
и вот ТОГДА ты можешь делать glBegin(GL_QUADS);
если проекция -1 1 -1 1 то твой 0-0.5 квад
если проекция по размеру вьюпорта то квад в пикселах окна должен быть
- может быть установлена текстура, поэтому glDisable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); // или как там не помню
- может быть включен тест глубины поэтому квад не будет виден тк он глубже чем сцена: glDisable(GL_DEPTH_TEST); или кка ваирант сделать glClear(GL_DEPTH_BUFFER_BIT);

>>237557304
а я реализовывал оверлей и вообще знаю опенгл и не знаю таких долбоебов которые на одном DC разными контекстами рисуют

Пнд 11 Янв 2021 22:14:19
[OP]

Бамп

Пнд 11 Янв 2021 22:15:50
[OP]

>>237557541
Если я сделаю как ты говоришь, мерцания не будет?

Пнд 11 Янв 2021 22:17:06
>>237553154
Вот этот анон прав.

Пнд 11 Янв 2021 22:18:05
[email: sage]

>>237557637
нет конечно ничего не будет мерцать - ты будешь рисовать в контексте самого приложения - в конце рендеринга их кадра, тебе так же будут доступны все их ресурсы, текстуры и тп
минус лишь в том что у них настроен стейт опенгл, который желательно сохранять чтобы ничего не сломать, делать свои грязные делишки и восстанавливать все на место

>>237557725
>>237553154
эти не понимают о чем говорят

Пнд 11 Янв 2021 22:20:34
>>237551505 и что, боярин, как бы ты решил задачу ОПа на Жаве?

Пнд 11 Янв 2021 22:22:06
>>237552114 вот это похоже на правду

Пнд 11 Янв 2021 22:23:12
[OP]

>>237557795
Можешь пожалуйста не уходить с треда? Я мало что понимаю, но хочу попробовать сделать как ты говорил.

Пнд 11 Янв 2021 22:25:28
>>237558177
> Не хочу говорить.

Пнд 11 Янв 2021 22:27:44
[OP]

>>237557541
Можешь немного подробнее написать как проверить что использовалось перед вызовом SwapBuffers и как использовать Ortho (и зачем оно вообще) ? Пожалуйста.

Пнд 11 Янв 2021 22:33:00
>>237558536
> Не хочу говорить.

Пнд 11 Янв 2021 22:33:05
[OP]

Бамп

Пнд 11 Янв 2021 22:35:53
>>237558536
>проверить что использовалось перед вызовом SwapBuffers
особо не получится, если только взять профайлер типа gDEBugger - он запишет опенгл вызовы и ты узнаешь - используются там шейдеры или нет
но вообще обычно там типичные штуки и тебе нужно
- отключить чужие шейдеры: glUseProgram(0);
- отключить буфер глубины чтобы рисовать поверх кадра glDisable(GL_DEPTH_TEST);
- отключить текстуры glDisable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0);
> как использовать Ortho (и зачем оно вообще)
орто - ставит ортографическую проекцию, обычно используют чтобы рисовать в пикселах окна, но в теории можно единичную поставить и тогда будешь рисовать в диапазоне координат -1;1 (если не ошибаюсь, если ошибаюсь - в 0;1
т.е.
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // единичная
glOrtho(0, 320, 0, 240); // сделает будто в окне рисуешь в координатах до 320х240 (хотя окно может быть 1920х1080 на деле, т.е. координата 320 будет рисоваться в точке 1920)
glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); // единичная - если разрабы ставили перед этим другую - это было положение камеры и объекта в кадре, а так ты сбросил и будешь рисовать где надо
// вот тут уже делаешь свои квады

сагу убрал

Пнд 11 Янв 2021 22:35:56
>>237558898
что за программу делаешь?

Пнд 11 Янв 2021 22:46:24
[OP]

>>237559103
Все текстуры стали белыми, но квадрат не нарисовался. Может я что-то не так сделал?


Пнд 11 Янв 2021 22:47:09
[OP]

>>237559103
>glUseProgram(0)
У меня в GL.h вообще не нашло..

Пнд 11 Янв 2021 22:53:00
>>237559829
все стало белыми в майнкрафте тк ты же выключил текстуры чтобы нарисовать свой квадрат, в конце - просто включи их обратно так же как тест глубины включил glEnable(GL_TEXTURE_2D);

237559103 (You)
>У меня в GL.h вообще не нашло..
glUseProgram - это расширения, есть в glext.h, можешь оттуда скопировать только объявление PFNGLUSEPROGRAM и объявить у себя
PFNGLUSEPROGRAMPROC glUseProgram = 0;

в кадре:
if(glUseProgram == 0)
glUseProgram = GetProcAddress("glUseProgram");

но если в майнкрафте шейдеры - тебе скореев сего нужно получить вначале текущий шейдер чтобы потом его вернуть в конце
т.е в конце перед свапом еще
glGet(GL_CURRENT_PROGRAM,...);
а потом glUseProgram(oldProgram);

Пнд 11 Янв 2021 22:54:16
>>237560315
ну ты его и загрузил
там еще вероятно атрибуты надо будет тоже

Пнд 11 Янв 2021 22:54:16
[OP]

>>237560315
Но ведь по идее прямоугольник нарисоваться должен был. Или он мог не нарисоваться из-за шейдеров?

Пнд 11 Янв 2021 22:54:26
>>237560315
т.е. glget(current_program) - вначале перед gluseprogram(0), а в конце перед свапом - gluseprogram(old);

Пнд 11 Янв 2021 22:54:57
>>237560406
все рисуется шейдерами сто лет уже

Пнд 11 Янв 2021 22:55:13
>>237560406
если все белое и он белый ты его увидишь? или там не все белое? ну сделай glColor3f(1,0,0); перед квадом, а в конце верни glColor3f(1,1,1);

Пнд 11 Янв 2021 22:56:02
>>237560464
ну там ничто не мешает легаси дергать - оно тоже работает, в драйверах обвязка под легаси в виде шейдеров

Пнд 11 Янв 2021 22:56:56
[OP]

>>237560489
Увижу так как он рисуется у меня вверху. Белое все кроме неба.

Пнд 11 Янв 2021 22:58:18
>>237560405
атрибуты надо , но в теории можно базовые вещи дернуть

ОПУ:
>>237560406
а так да - можно атрибутами автоматом возвращать тест глубины и остального что ты изменил при рисовании своей шуки:
glPushAttrib(GL_ALL_ATTRIB_BITS); // запомнит установленные текстуры и прочее
// твой код который может их сбросить
glPopAttrib(); // вернет
// swapbuffers

Пнд 11 Янв 2021 22:58:33
>>237560315
ты заебал. я ему выше ссылку на книгу скинул, пусть читает.

Пнд 11 Янв 2021 22:59:16
>>237560720
боишься что работу твою отнимет? ))

Пнд 11 Янв 2021 23:01:14
[OP]

>>237560698
Я сделал вот так но он всё равно не рисуется. Хотя текстуры уже нормальные..


Пнд 11 Янв 2021 23:02:59
>>237560916
в теории ты все делаешь вроде правильно, но не отключаешь шейдер через gluseprogram(0);
если он включен - то задание проекций может не иметь эффекта и глючить, с другой стороны - не понятно как раньше у тебя оно рисовалось
ps возможно даже с несколькими контектстами бы должно работать, но такой вариант проблемней обсуждать тк там могут потоки влиять или свапбуфер у каждого свой - я хз

Пнд 11 Янв 2021 23:03:47
>>237560916
а ну правильно - третью координату 0 поставь, иначе ты за камерой рисуешь или клипает по глубине единичной проекции

Пнд 11 Янв 2021 23:04:22
>>237560762
ты покурил что ли? такие как он не умеют мсдн читать (да-да, я тот анон который ему с перехватом трафика помогал) и документацию по огл. для огл надо вообще линал немного знать и понимать как вся эта требуха матричная работает. я ему наооброт пытаюсь подсказать что делать, а он как обезьянка с форумов код копипастит без понимания.

Пнд 11 Янв 2021 23:07:35
[OP]

>>237561086
Не помогло.

>>237561038
Сейчас попробую отключить шейдеры.

>>237561124
Ого, это ты? Спасибо тебе большое. Насчёт msdn, ты прав, мне почему-то это трудно даётся. Мне намного легче копипастить и вручную перебирать чем пытаться читать. Это не лень. Я не знаю почему. Может я тупой просто..

чмо благословил этот пост.

Пнд 11 Янв 2021 23:09:36
>>237561344
> Может я тупой просто..
> дед мороз благословил этот пост.

Пнд 11 Янв 2021 23:11:28
>>237554618 а что такое... нормальный OpenGL... рисовать-то надо.................

Пнд 11 Янв 2021 23:14:36
[OP]

Сделал вот так. Сейчас буду тестировать.


Пнд 11 Янв 2021 23:15:54
[OP]

>>237561779
Всё равно не рисуется..

Пнд 11 Янв 2021 23:17:09
>>237561779
а зачем тебе L перед именем либы? там вайд чар что ли требуют?

Пнд 11 Янв 2021 23:18:19
[OP]

>>237561942
Да.

Я посмотрел, в OpenGL32.dll нету функции glUseProgram..

Пнд 11 Янв 2021 23:18:20
>>237561859
у меня больше идей нет, вроде все верно делаешь
ну можешь еще вернуть установку glViewport и пробовать выставить орто вот так:
glMatrixMode(GL_PROJECTION);
\tglLoadIdentity();
\tglOrtho(-1, 1, 1, -1, -1, 1);
glMatrixMode(GL_MODELVIEW);
\tglLoadIdentity();

Пнд 11 Янв 2021 23:18:47
>>237561942
wchar_t там, поэтосу и l

Пнд 11 Янв 2021 23:19:45
[OP]

>>237562012
В opengl32.dll нету функции glUseProgram. Может быть ещё какая-то штука есть для этих ваших шейдеров?..

Пнд 11 Янв 2021 23:21:12

Пнд 11 Янв 2021 23:21:14
>>237562011
>>237562090
если бы функции не было - у тебя вернулся бы 0 и приложение падало - раз не падает значит адрес вернулся и функция вызывается, но все же попробуй
glUseProgram = (PFNGLUSEPROGRAMPROC)wglGetProcAddress("glUseProgram");

в opengl32.dll вообще нихера нет это ICD и там опенгл 1.1 функции-заглушки

Пнд 11 Янв 2021 23:31:48
>>237562179
> если бы функции не было - у тебя вернулся бы 0 и приложение падало

Стало падать. Может я дебил и забыл пересобрать, но я имею привычку постоянно тыкать на пересборку.. Сомневаюсь что я забыл в тот раз это сделать. 2 раза уже крашился процесс.

Пнд 11 Янв 2021 23:32:33
>>237562179
Под стало падать я имею ввиду тот код где просто GetProcAddress а не тот который на скриншоте выше.

Пнд 11 Янв 2021 23:34:27
>>237562012
ААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА ПАЛУЧЕЛАССССССССССССССССССССС!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ОРТХО СПАС!!!!

Пнд 11 Янв 2021 23:36:22
БОЖЕ МОЙ КАК Я РАД Я С ЭТИМ 4 ДНЯ СИДЕЛ КАКОЙ ЖЕ Я ТУПОЙ СПАСИБО БОЛЬШОЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Пнд 11 Янв 2021 23:37:52
>>237562012
Я могу тебя как-то отблагодарить анон? Я бомж но может как-то помочь могу..

Пнд 11 Янв 2021 23:39:57
Оп, а зачем так пердолиться? Все же давно через MinecraftForge гуи модифицируют, там любой оверлей делается через MinecraftForge.EVENT_BUS.register(твой кастомный обработчик с определённым preRenderOverlay)

Пнд 11 Янв 2021 23:40:53
>>237563207
рад за тебя, ничего не надо
может побыдлокодишь-покопипастишь, станет интересно - станешь крутым погромистом 300к\нс

Пнд 11 Янв 2021 23:40:58
>>237539984 (OP)
Знаю в чем проблема. "Мерцает" это что? Его небось не видно половину кадров? FPS понизь до 1-2 кадров в секунду и посмотри, сразу увидишь что происходит.

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

Работать должно так:
Swapbuffers обменивает местами front и back буфер. И происходить это должно ровно один раз на кадр. Прямоугольник и вся графика рисуется в текущем буфере (текущий - back, отображается front). И дело скорее всего в том что прямоугольник ты рисуешь, а потом насильно зачем-то зовешь swapbuffers, принудительно меняя буферы. При этом скорее всего swapbuffers уже (может быть) вызывается откуда-то. Так прямоугольник у тебя всегда оказывается только в одном буфере, а должен по-очереди, то в первом, то во втором.

Пнд 11 Янв 2021 23:41:48
>>237563323
Не везде есть доступ к форджу а вот SwapBuffers универсальный и работает на любой версии Minecraft, на любом проекте модовых / не модовых

Пнд 11 Янв 2021 23:42:47
>>237563360
Боже спасибо еще раз ты даже не представляешь насколько я рад ты не только помог с мерцанием но и избавил меня от второго контекста который мог отнимать ФПС

Пнд 11 Янв 2021 23:45:26
>>237563469
Ибитес



← К списку тредов