Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Красноглазые!

Автор Алексей Гринь, августа 7, 2017, 23:19

0 Пользователи и 1 гость просматривают эту тему.

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

Бесят.

На текущем ноутбуке старая видеокарта не поддерживает 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

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

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр