angros47 / OpenB3D

GNU Lesser General Public License v2.1
1 stars 0 forks source link

Shift to Left Hand Coordinate System like Blitz3D #2

Closed blitzcoder closed 1 year ago

blitzcoder commented 1 year ago

It would be easier for Blitz3D users to transition to or port their game/project without reorienting to OpenGL's coordinate system.

angros47 commented 1 year ago

This is true, unfortunately OpenB3D exists since 12 years, and has always used OpenGL's coordinate system. Changing it now would be a trivial task, but would break all the code already written for OpenB3D.

Users coming from Blitz3D will have to modify their code anyway, since they will have to compile it on a different language, so they will have to test it. People who used an older version of OpenB3D would instead expect the most recent version to work like the one they already have.

By the way, all the functions of OpenB3D are written in C++, and wrapped to C in the file "functions.cpp"; to change the coordinate system all you need to do is to put the minus sign in front of some variables in this file, in case you want to use, for Blast3D, the same coordinate system of Blitz3D. Or, if you use some wrapper internally (a wrapper is needed, for example, when OpenB3D is used inside an interpreted language) you can do the change there.

Just one warning: in case you want to compile a modified version of OpenB3D with the different coordinate system, link it statically to Blast3D. You should not release an OpenB3D.DLL file with it. Otherwise, the final user could try to replace it with another version, and a lot of unexpected bugs would occur. (this is actually the reason why I remaned it from MiniB3D to OpenB3D: the command TurnEntity has the same syntax, but works differently, so having two libraries with the same name, the same commands, that produced different results would have lead to confusion)

blitzcoder commented 1 year ago

By the way, all the functions of OpenB3D are written in C++, and wrapped to C in the file "functions.cpp"

yes, found this out since BlitzMax wrapper days.

to change the coordinate system all you need to do is to put the minus sign in front of some variables in this file..

and that would be the initial plan in case.

Just one warning: in case you want to compile a modified version of OpenB3D with the different coordinate system, link it statically to Blast3D. You should not release an OpenB3D.DLL file with it.

nothing to worry about.. didn't crossed my mind either to name it in the first place even as a DLL.

this is actually the reason why I remaned it from MiniB3D to OpenB3D: the command TurnEntity has the same syntax, but works differently

didn't notice it, but that's good to know.

Eventually and part of the roadmap of Blast3D is it will be component/framework agnostic, so there is a possibility to use other net, sound and gfx, but same commands apply. Something similar to Irrlicht interface or driver system.

Blast3D roadmap will also be x64 but GL only for portability, but also planning on future versions to be component or renderer-agnostic which DX can be an option.

https://www.blitzcoder.org/forum/topic.php?id=1206#2