minetest / irrlicht

Minetest's fork of Irrlicht
Other
115 stars 87 forks source link

OpenGL 3.2 symbol breaks install on legacy macOS #152

Open Zweihorn opened 1 year ago

Zweihorn commented 1 year ago

This Issue found great help by teamwork from both the combined MT community and MacPorts community.

This Issue became closed and was made obsolete by https://github.com/macports/macports-ports/pull/17241

help wanted

Needs help for technical support and expertise on legacy OpenGL for Minetest with IrrlichtMT.

Any advice and/or some technical expert with knowledge of legacy OpenGL would be highly welcome.

Description

Unfortunately, the "irrlichtmt" port fails to install on Mac OS 10.6 with MacPorts including but not limited to the "minetest" port. Currently, it appears difficult to determine particularly when GL_TEXTURE_CUBE_MAP_SEAMLESS was added to Mac OS X. This symbol was added in OpenGL 3.2 supposedly in the longer past.

Apparently, this needs a workaround to support the legacy MacOS X 10.6 platform if possible.

Background

This is raised to find some help for technical support aiming at the benefit to Mac OS X 10.6 Snow Leopard users for hopefully soon again enjoying the Minetest game as a "minetest" port user experience.

Please note:

However, I am not the maintainer of the "irrlichtmt " port, but would like to raise this issue to promote a more seamless user experience for a much legacy platforms as reasonably possible.

Again, any advice and/or some technical expert with knowledge of legacy OpenGL would be welcome.

Ref https://github.com/minetest/irrlicht/commit/ce0d29df933fd03c5de218e159976629113257b9#commitcomment-94815069 Ref https://trac.macports.org/ticket/66439

Zweihorn commented 1 year ago

Last not least, in general (and parallel in being the maintainer of the a.m. "minetest" port) I am quite happy with both the IrrLichtMT fork for Minetest and the excellent quality of the MT core code in particular.

sfan5 commented 1 year ago

IrrlichtMt supports OpenGL 1.4 and newer but requires reasonably up-to-date OpenGL headers to build (actual support is checked at runtime), which you can get from Khronos. Irrlicht used to bundle these headers but we no longer do to simplify maintenance.

Alternatively if it's just this symbol you can try to #define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F somewhere.

Zweihorn commented 1 year ago

Found two header files which solved this issue and the arm64 issue on top. Good catch thanks to @sfan5

The combined build and install by 'minetest' rev 2 has no problems with the new & amended 'irrlichtmt' API and 'minetest' was installed without any error.

ref https://github.com/macports/macports-ports/pull/17153#issuecomment-1374555607 ref #17161

Zweihorn commented 1 year ago

https://github.com/macports/macports-ports/pull/17241

sfan5 commented 4 months ago

FYI possibly fixed by #276.

eddieh commented 3 months ago

The GL loader seems to assume OpenGL 3. It doesn't do a compile time or runtime check from what I can tell. At the end of GL.LoadAllProcedures it does GetIntegerv(NUM_EXTENSIONS, &ext_count); which sets the GL error to GL_INVALID_ENUM. As GL_NUM_EXTENSIONS is GL3+ only.

After that the base driver calls GL.DebugMessageCallback(debugCb, this); but DebugMessageCallback never gets a valid procedure address since it isn't available until GL3+. This causes a crash.