Author Topic: Красноглазые!  (Read 585 times)

0 Members and 1 Guest are viewing this topic.

Offline Алексей Гринь

  • Blogger
  • *
  • Posts: 24115
  • Gender: Male
on: August 7, 2017, 23:19
Бесят.

На текущем ноутбуке старая видеокарта не поддерживает OpenGL 3.3. Думаю, не вопрос, использую софтварный рендерер Mesa3D. Как известно, чтобы что-то скомпилировать красноглазое на Windows, нужно скакать с бубном две недели, установив гигабайты какого-то допотопного мусора, чуть ли не весь ГНУ/Лунипс (кроссплатформенность, вот она). Но, слава богу, есть добрые люди, которые компилируют всё за нас.

Раньше я использовал OpenGL2 и скачанная мной версия Mesa работала без проблем. Но вот я обновил шейдеры до 3.3 (для постепенного перехода на ES/WebGL), и Mesa перестала работать. Говорит, 3.3 не люблю, люблю только 3.3 ES Оказалось, что нужно при создании контекста OpenGL конкретно объявить, что хотим 3.3 По умолчанию по чему-то он не хочет. На всех видеокартах и ОС'ях (включая Линупс в VBox'е) работает без проблем, но именно вот этот вот софтверный рендерер капризный. ОК, прописал, но... выдаёт чёрный экран. Перестаёт жаловаться, что шейдеры непонятные, ни одной ошибки не выдаёт, но ничего не обновляется на экране. Так же видно, что ФПС небольшой, а значит рендерит что-то, просто на экран не выводит.

Почитал, подумал. Есть часть функций, которые дублируются в gdi32 и в opengl32. Мой код для win32 в принципе вызывает те, что в gdi32. Ясно, что Mesa3D не в курсе: она не может перехватить эти вызовы. Поэтому логично, что для Mesa3D нам нужно вызывать те функции, что в opengl32.dll, т.к. Mesa3D это drop-in replacement для opengl32.

И вот что меня взбесило - это то, что Mesa не находит мне wglSwapBuffers. Находит остальные wgl-, но не её. Вроде как по логике, если у нас чёрный экран, то wglSwapBuffers именно то место, где у Mesa есть возможность копировать срендеренное из своего буфера в окно, или типа того. Я уж всё перебровал: и wglSwapBuffers, wglSwapBuffersARB, и wglSwapBuffersEXT, и SwapBuffers

Mesa3D экспортирует:
wglChoosePixelFormatARB
wglCreateContextAttribsARB

но не:
wglSwapBuffers
wglSetPixelFormat

Я хз что делать. Опять потратил время впустую на поделие красноглазых. М.б. завтра на свежую голову придёт озарение.
肏! Τίς πέπορδε;

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: