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

Спецификация OpenGL 3 от сегодня! (+инфа в посте №1) (47 стр)

Страницы: 146 47 48 49110 Следующая »
#690
16:24, 4 мар. 2009

Executor
Нет, ничего не изменилось, шейдеры также не компилятся как и раньше, правда виснуть при этом перестало :)

#691
16:34, 4 мар. 2009

SNVampyre
>Нет, ничего не изменилось, шейдеры также не компилятся как и раньше, правда
>виснуть при этом перестало :)

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

#692
16:56, 4 мар. 2009

Executor
Уже всё показывал, господи. Почему на АТИ-то компилится?
Ты лучше покажи как сделать чтобы хоть что-то хоть где-то заработало.

#693
17:03, 4 мар. 2009

Вобщем, я делаю так.
С начала инициализирую OpenGL всё как обычно, создание окна, пиксельформатдескриптор и прочее.
Потом инициализирую glew, смотрю расширения.
После этого делаю следующее (по сути то же что с включением MSAA или вертикалки):

  int pixelFormat;
  int maxFormats = 11;
  UINT numFormats = 0;
  float fAttributes[28] = {0.0f};

  int iAttributes[28] = {
  WGL_DRAW_TO_WINDOW_ARB,    GL_TRUE,
  WGL_SUPPORT_OPENGL_ARB,    GL_TRUE,
  WGL_ACCELERATION_ARB,    WGL_FULL_ACCELERATION_ARB,
  WGL_COLOR_BITS_ARB,      24,
  WGL_ALPHA_BITS_ARB,      8,
  WGL_DEPTH_BITS_ARB,      24,
  WGL_STENCIL_BITS_ARB,    8,
  WGL_DOUBLE_BUFFER_ARB,    GL_TRUE,
  WGL_SAMPLE_BUFFERS_ARB,    shSettings.MSAA,
  WGL_SAMPLES_ARB,      shSettings.msaaLevel,
  0,              0};

  wglMakeCurrent (hdc, hrc);
  PFNWGLCREATECONTEXTATTRIBSARBPROC  wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)::wglGetProcAddress ("wglCreateContextAttribsARB");
  if(wglChoosePixelFormatARB (hdc, iAttributes, fAttributes, 11, &pixelFormat, &numFormats)&&numFormats)
  {
    wglMakeCurrent (NULL, NULL),
    wglDeleteContext (hrc),
    ReleaseDC (hwndW, hdc);
    DestroyWindow (hwndW);
    hwndW = CreateWindow (projectName, projectName, WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
    0, 0, (int)(displayX*windowW), (int)(displayY*windowH), HWND_DESKTOP, NULL, hInstance, NULL);
    hdc = GetDC (hwndW);
    SetPixelFormat (hdc, pixelFormat, &pfd);
    if(wglCreateContextAttribsARB != NULL)
    {
      int attribList[6] =  {  WGL_CONTEXT_MAJOR_VERSION_ARB,  3,  WGL_CONTEXT_MINOR_VERSION_ARB,  0,
//        0,  0  };
        WGL_CONTEXT_FLAGS_ARB,  WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB  };
      hrc = wglCreateContextAttribsARB (hdc, 0, attribList);
    }
    else  hrc = wglCreateContext (hdc);
    wglMakeCurrent (hdc, hrc);
    glewInit ();
  }

Что я делаю неправильно?

Версия glew 1.51

#694
19:26, 4 мар. 2009

Вообщем выкладываю ОГЛ версию примера теней... Я немного не доделал его, нет анимации света, не рисуется положение источника света, в коде коментарии остались от старого, возможно гдето не в тему будет... Но это всё мелочи... Может гдето код не очень изящный, красивый, может гдето можно было проще, это всё сейчас не суть важно... В bin папке находятся батнчики:

run_ogl2.bat
run_ogl3.bat
run_ogl3fc.bat
run2_ogl2.bat
run2_ogl3.bat
run2_ogl3fc.bat

Для OpenGL 2 контекста юзается GLSL 1.30, а также некоторые расширения ОГЛ3 типа rg текстуры...

run и run2 отличаются вот чем:

  glGenFramebuffers(1, &fbDepth2);
  glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbDepth2);
  glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texDepth2, 0);
//  glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, texDepth2, 0);
  glDrawBuffer(GL_NONE);
  if (v2)
    glReadBuffer(GL_NONE); // При run2
  glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

Как я уже и писал ранее, после этой строчки на НВ glGetError() возвращал ошибку... Просто проверим как отсутствие этой строчки скажется на результат на Ати...
У меня на 9600GT работает всё, хоть и строчка даёт ошибку, но всё равно работает...
В data лежат шейдеры, есть шейдеры *.*_120 - это те же самые шейдеры, только на ГЛСЛ 1.20, можете заменить оригинальные файлы, тогда ГЛСЛ 1.20 будет, вроде тоже всё работает...

Ну... Тестим...
http://www.gamedev.ru/download/?id=8589

З.Ы. Если захотите скомпилить, то нужно будет скачать GLM

#695
19:32, 4 мар. 2009

Executor
Ну в форварде шейдеры компилятся, однако не работает (всё уже объяснялось почему).
Не в форварде всё работает одинакого.

#696
19:34, 4 мар. 2009

SNVampyre
>Ну в форварде шейдеры компилятся, однако не работает (всё уже объяснялось почему).

Почему? Я чегото видимо пропустил...

#697
19:44, 4 мар. 2009

Executor
Потому что любой бинд буфера или текстуры - это GL_INVALID_OPERATION.

Я посмотрел, ты контекст создаёшь вообще не так как я, что же все молчат...

#698
19:46, 4 мар. 2009

SNVampyre
Так, это понял... А вот это до сих пор не могу понять:

1)
>Ну текстуры и у меня загружаются на catalyst 9.2.
>И даже шейдеры компилятся (писал об этом).
>А вот glBindBuffer/Texture не работает...

2)
>Нет, ничего не изменилось, шейдеры также не компилятся как и раньше, правда виснуть при этом перестало :)

3)
>Уже всё показывал, господи. Почему на АТИ-то компилится?

Сначала ты сказал шейдеры компилятся, потом сказал, что они НЕ компилятся как и раньше (уже не стыковка), а потом снова говоришь что компилится... А потом приводишь код инициализации окна, как это вяжется с компиляцией шейдеров чот я не догоняю...
Можешь толком объяснить где у тебя что не работает?

#699
19:52, 4 мар. 2009

Так... Первая ошибка найдена...

http://www.gamedev.ru/download/?id=8589

НЕ правильно:

float shadow = texture(shadowMap, smcoord).x;

Правильно:

float shadow = texture(shadowMap, smcoord);

При shadow самплере texture возвращает не вектор, а просто флоат...

#700
19:56, 4 мар. 2009

>Сначала ты сказал шейдеры компилятся, потом сказал, что они НЕ компилятся как и раньше (уже не стыковка), а потом снова говоришь что компилится...
Ты спросил про дрова 182.08, я про них и говорил что ничего не компилится и не работает на джифорсах как и раньше.
Во всяком случае, если создавать контекст так, как его создаю я.
Твоя прога в форвард контексте на джифорсе действительно работает, пытаюсь понять как ты создаёшь контекст :)

#701
20:17, 4 мар. 2009

Хм, да... теперь моя прога работает на GeForce.
Вобщем, как я создавал контекст в посте №695, учтите что так создавать нельзя, так только на радеоне этот контекст будет создан (а на джифорсе нет).
И действительно есть какой-то косяк с форматом глубины для FBO, пока что в лом с этим разбираться.

Никакого ускорения работы на джифорсе в форвард-контексте нет, что грустно :)

#702
16:05, 5 мар. 2009

Ап...
Ну что, уже никому тема не интересна? Так активно было, все кричали давай код, мол ничо не работает... Дал код и тишина... :(

#703
16:17, 5 мар. 2009

Executor
Ну всё, теперь у всех есть рабочий пример :)
Только glewInit всё же нужно делать не в dummy контексте, а в том контексте, в котором ты будешь дальше рисовать.

#704
16:28, 5 мар. 2009

SNVampyre
>Ну всё, теперь у всех есть рабочий пример :)
>Только glewInit всё же нужно делать не в dummy контексте, а в том контексте, в
>котором ты будешь дальше рисовать.

Да, наверное так лучше... Только тогда руками функцию инициализировать надо будет...

Страницы: 146 47 48 49110 Следующая »
ПрограммированиеФорумГрафика

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