doom2d.org

Главная база плоских морпехов
It is currently 24 Apr 2025, 13:29

All times are UTC + 3 hours




Post new topic Reply to topic  [ 4 posts ] 
Author Message
PostPosted: 19 Mar 2024, 15:53 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7215
Location: Владивосток
Заметил одну проблему с нынешним порядком использования 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). Особенного внимания заслуживает вот эта ремарка, которую я здесь даже процитирую:
Quote:
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, который её частично ловит:
Quote:
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 уже поднимал, вот только я сейчас не могу вспомнить, когда и где именно.

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


Top
 Profile  
 
PostPosted: 19 Mar 2024, 19:40 
Offline
Приколист

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


Top
 Profile  
 
PostPosted: 19 Mar 2024, 20:16 
Offline
Принципиально неуничтожаем
User avatar

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

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

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


Top
 Profile  
 
PostPosted: 20 Mar 2024, 20:13 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 992
Дополнение: подобная проблема может быть и в редакторе.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
doom2d.org, since 2007