doom2d.org

Главная база плоских морпехов
Текущее время: 14 июл 2025, 00:00

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 19 мар 2024, 15:53 
Не в сети
Принципиально неуничтожаем
Аватара пользователя

Зарегистрирован: 18 окт 2009, 04:01
Сообщения: 7252
Откуда: Владивосток
Заметил одну проблему с нынешним порядком использования OpenGL. Не знаю, осталась ли она в renders_updated или нет.

Суть её в том, что сейчас для работы с OpenGL мы используем стандартные модули GL и GLext. Они подключаются в /nogl/noGLuses.inc, который в свою очередь, несмотря на название, включается в e_graphics.pas.
Однако модуль GL загружает библиотеку opengl и получает адреса функций оттуда непосредственно в секции initialization, то есть задолго до создания самого окна и контекста OpenGL. Это работает в GLX, но под Windows такое противоречит семантике WGL, где указатели на функции OpenGL специфичны для конкретного контекста и потому должны получаться сугубо при нахождении в нём. Именно поэтому в SDL существует функция SDL_GL_GetProcAddress() (по ссылке есть более подробное пояснение по особенностям семантики поведения в Windows). Особенного внимания заслуживает вот эта ремарка, которую я здесь даже процитирую:
Цитата:
This is (currently) a Windows-specific limitation, and in practice lots of drivers don't suffer this limitation, but it is still the way the wgl API is documented to work and you should expect crashes if you don't respect it.

Заметил я эту проблему, запустив игру под Windows через gDEBugger 5.8.1, который её частично ловит:
Цитата:
Debug String: Detected error: The debugged process asked for an extension function pointer (wglChoosePixelFormatARB) from one render context, but called this function pointer in another render context (context #2)
Debug String: Detected error: The debugged process asked for an extension function pointer (wglGetPixelFormatAttribivARB) from one render context, but called this function pointer in another render context (context #2)

Ещё вот описанное здесь может оказаться полезным: wglGetProcAddress is broken · Issue #282 · opentk/opentk - GitHub

К слову, у меня почему-то ощущение, что DeaDDooMER тему написания собственного загрузчика OpenGL уже поднимал, вот только я сейчас не могу вспомнить, когда и где именно.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2024, 19:40 
Не в сети
Приколист

Зарегистрирован: 04 фев 2010, 14:42
Сообщения: 1000
Не, я даже не задумывался об этом. Возможно это был кто-то другой.
Встроенные в фпц бинды экспортируют LoadOpenGL / FreeOpenGL. Можно их вставить куда следует.
Или скопипастить их в реп и пропатчить под себя, если надо юзать именно SDL_GL_GetProcAddress.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 мар 2024, 20:16 
Не в сети
Принципиально неуничтожаем
Аватара пользователя

Зарегистрирован: 18 окт 2009, 04:01
Сообщения: 7252
Откуда: Владивосток
DeaDDooMER» Встроенные в фпц бинды экспортируют LoadOpenGL / FreeOpenGL. Можно их вставить куда следует.
Не уверен, что это подходящий вариант, потому что есть и такое: SDL_GL_LoadLibrary(). Зачем - не очень хорошо понимаю.

DeaDDooMER» Или скопипастить их в реп и пропатчить под себя, если надо юзать именно SDL_GL_GetProcAddress.
Да вот по идее имеет смысл уже писать свою загружалку, ага. Чтобы строго OpenGL 1.1 (или даже 1.0, лол) плюс необходимые расширения. По крайней мере пока.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 мар 2024, 20:13 
Не в сети
Приколист

Зарегистрирован: 04 фев 2010, 14:42
Сообщения: 1000
Дополнение: подобная проблема может быть и в редакторе.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
doom2d.org, since 2007