ПрограммированиеФорумГрафика

OpenGL: Основы. (комментарии) (3 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#30
12:36, 6 июля 2010

cNoNim
> можно извернуться
Извернуться мона всегда... Но вот сколько от этого будет толку...

#31
0:13, 15 июля 2010

В чём разница между:

wglMakeCurrent(hDC, NULL);

и

wglDeleteContext(hRC);
#32
1:26, 15 июля 2010

эм... а ты как думаешь?
UPD: ps: RTFM

#33
2:48, 15 июля 2010

Pixar
> Ещё мне интересно, функция WinMain() заворачивается в класс или она всегда
> снаружи?
Выкинь вообще эту функцию из движка. Запускай всё из обычного main'а с командной строкой. Так и удобнее и правильнее.

#34
8:14, 15 июля 2010

Pixar
> Ещё мне интересно, функция WinMain() заворачивается в класс или она всегда снаружи?

Ты путаешь со всякими СиШарпами...

Алмаз
> Выкинь вообще эту функцию из движка. Запускай всё из обычного main'а с
> командной строкой. Так и удобнее и правильнее.

А если мне не нужна командная строка?

#35
10:18, 15 июля 2010

Алмаз
> Выкинь вообще эту функцию из движка. Запускай всё из обычного main'а с
> командной строкой. Так и удобнее и правильнее.
Что за странный совет. Если приложение виндовое то почему ее надо выкинуть?

#36
11:05, 15 июля 2010

KpeHDeJIb
А почему бы и нет? Для чего она нужна? Только чтоб свойства окна через ярлык приложения передавать и всё. Тоже самое и даже больше можно сделать через параметры main'а. Сам прекрасно знаешь, что параметры WinMain() практически не используются. Тот же дескриптор окна можно получить аж двумя функциями. Второго параметр не используется, устарел, так? Третий параметр та же командная строка, четвёртый параметр - три варианта для показа окна после создание. Ну? И зачем эта дибильная функция, которая в одну строку не влезает?

Executor
Не нужна командная строка - не используй. Всё просто, nes pa?

#37
11:15, 15 июля 2010

Чувак ты что-то помоему путаешь. main же запустит консоль

#38
11:56, 15 июля 2010

Алмаз
> А почему бы и нет?
А почему бы и да? Собери используя mingw с ключом -mwindows прогу только с main() и удивись на отсутствующий символ WinMain
Глупо спорить на этот счет, если тебя обламывает нажать Ctrl-C / Ctrl-V чтобы скопировать объявление входной точки WinMain то мои
тебе соболезнования, обычно это делается один раз и в целом никак не оказывает влияние ни на скорость разработки ни на что другое.

#39
12:35, 15 июля 2010

KpeHDeJIb
Хыхых) Каждому своё.

#40
13:04, 15 июля 2010

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()?

#41
13:21, 15 июля 2010

Pixar
> удаляет контекст устройства
fail, она не удаляет а освобождает его, т.е. делает его не используемым.

> зачем разъединять контекст рендеринга от контекста устройства
Некоторые вообще этого не делают, просто выходят из программы и все, ОС сама все очистит.
Просто если уж делаешь то делай по инструкции, нельзя удалить объект который к чему-либо
привязан, надо сначала связь разорвать wglMakeCurrent(dc, NULL), после этого можно удалить
контекст рендеринга wglDeleteContext(rc).

#42
13:44, 15 июля 2010

KpeHDeJIb
Всё понял. Спасибо.

#43
16:07, 15 июля 2010
  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));
#44
17:31, 18 июля 2010

Допустим есть две текстуры. И одна текстура наложилась на вторую. При включёном смешивании цветов, чья альфа будет учитываться? По идее должна учитываться альфа верхней текстуры, ведь, если она не прозрачна, то не имеет значения, какая прозрачность у нижней текстуры. То есть выходит, если считать по формуле: color = color_верхний + (1 - a) * color_нижний, то при a = 255, нижнюю текстуру видно быть не должно. Но у меня почему-то и верхняя, и нижняя текстуры смешиваются, причём не известно в какой пропорции.

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

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.