cNoNim
> можно извернуться
Извернуться мона всегда... Но вот сколько от этого будет толку...
В чём разница между:
wglMakeCurrent(hDC, NULL);
и
wglDeleteContext(hRC);
эм... а ты как думаешь?
UPD: ps: RTFM
Pixar
> Ещё мне интересно, функция WinMain() заворачивается в класс или она всегда
> снаружи?
Выкинь вообще эту функцию из движка. Запускай всё из обычного main'а с командной строкой. Так и удобнее и правильнее.
Pixar
> Ещё мне интересно, функция WinMain() заворачивается в класс или она всегда снаружи?
Ты путаешь со всякими СиШарпами...
Алмаз
> Выкинь вообще эту функцию из движка. Запускай всё из обычного main'а с
> командной строкой. Так и удобнее и правильнее.
А если мне не нужна командная строка?
Алмаз
> Выкинь вообще эту функцию из движка. Запускай всё из обычного main'а с
> командной строкой. Так и удобнее и правильнее.
Что за странный совет. Если приложение виндовое то почему ее надо выкинуть?
KpeHDeJIb
А почему бы и нет? Для чего она нужна? Только чтоб свойства окна через ярлык приложения передавать и всё. Тоже самое и даже больше можно сделать через параметры main'а. Сам прекрасно знаешь, что параметры WinMain() практически не используются. Тот же дескриптор окна можно получить аж двумя функциями. Второго параметр не используется, устарел, так? Третий параметр та же командная строка, четвёртый параметр - три варианта для показа окна после создание. Ну? И зачем эта дибильная функция, которая в одну строку не влезает?
Executor
Не нужна командная строка - не используй. Всё просто, nes pa?
Чувак ты что-то помоему путаешь. main же запустит консоль
Алмаз
> А почему бы и нет?
А почему бы и да? Собери используя mingw с ключом -mwindows прогу только с main() и удивись на отсутствующий символ WinMain
Глупо спорить на этот счет, если тебя обламывает нажать Ctrl-C / Ctrl-V чтобы скопировать объявление входной точки WinMain то мои
тебе соболезнования, обычно это делается один раз и в целом никак не оказывает влияние ни на скорость разработки ни на что другое.
KpeHDeJIb
Хыхых) Каждому своё.
cNoNim
> UPD: ps: RTFM
В первоисточнике написано:
wglMakeCurrent(hDC, NULL);
> If hglrc is NULL, the function MAKES the calling thread's CURRENT RENDERING CONTEXT NO LONGER CURRENT, and RELEASES THE DEVICE CONTEXT that is used by the rendering context. In this case, hdc is ignored.
wglDeleteContext(hRC);
>The wglDeleteContext function deletes a specified OpenGL rendering context.
>The wglDeleteContext function does not delete the device context associated with the OpenGL rendering context when you call the wglMakeCurrent function. After calling wglDeleteContext, you must call DeleteDC to delete the associated device context.
Теперь мои предположения.
Значит, сделать контекст рендеринга не текущим - это не то же самое, что удалить его.
Функция wglMakeCurrent(hDC, NULL) удаляет контекст устройства, ассоциированный с контекстом рендеринга и, следовательно, ReleaseDC() вызывать не потребуется.
Если это верно, то у меня возникает вопрос, зачем разъединять контекст рендеринга от контекста устройства и оставлять его в свободном полёте (ведь изначально они создаются сцеплёнными)? Почему нельзя тупо вызвать wglDeleteContext(hRC), а потом ReleaseDC()?
Pixar
> удаляет контекст устройства
fail, она не удаляет а освобождает его, т.е. делает его не используемым.
> зачем разъединять контекст рендеринга от контекста устройства
Некоторые вообще этого не делают, просто выходят из программы и все, ОС сама все очистит.
Просто если уж делаешь то делай по инструкции, нельзя удалить объект который к чему-либо
привязан, надо сначала связь разорвать wglMakeCurrent(dc, NULL), после этого можно удалить
контекст рендеринга wglDeleteContext(rc).
KpeHDeJIb
Всё понял. Спасибо.
if(hRC != NULL){ wglMakeCurrent( hDC, NULL); wglDeleteContext( hRC); hRC = NULL; } if( hDC != NULL){ ReleaseDC( hWnd, hDC); hDC = NULL; } if( hWnd != NULL){ DestroyWindow( hWnd); hWnd = NULL; } UnregisterClass( L"MYSYPERPYPERENDGINEEEE", GetModuleHandle( NULL));
Допустим есть две текстуры. И одна текстура наложилась на вторую. При включёном смешивании цветов, чья альфа будет учитываться? По идее должна учитываться альфа верхней текстуры, ведь, если она не прозрачна, то не имеет значения, какая прозрачность у нижней текстуры. То есть выходит, если считать по формуле: color = color_верхний + (1 - a) * color_нижний, то при a = 255, нижнюю текстуру видно быть не должно. Но у меня почему-то и верхняя, и нижняя текстуры смешиваются, причём не известно в какой пропорции.
И ещё проблема такая, что если фон делать полностью белым, то он захавает все текстуры, не смотря на то, что их цвета имеют альфу 1.0f.
Тема в архиве.