Šī darbība izdzēsīs vikivietnes lapu 'Use multiple windows'. Vai turpināt?
raylib does not support multiple Windows by default, it was designed with simplicity in mind and multi-window option was not considered as a core feature. Multiple windows break some of the core concepts and APIs in raylib.
Multiple windows are possible with modifications to raylib and the understanding that some simple things may not work in as simple of a way as they did before.
Adding support for multiple windows is somewhat complicated to support in raylib versions 5.0+. The platform split means that each platform needs to have information about all the windows. Also the older instructions did not handle events properly on multiple windows.
The branch of raylib has been modified to support multiple windows https://github.com/JeffM2501/raylib/tree/multi-monitor_50
The changes are similar to what is listed below, but more detailed and go into a lot of different platform code.
These instructions will not work for Raylib 5.0 or above, they are here for historical purposes only.
The rough steps to follow to modify the raylib source code and add multi-window support are as follows:
MAX_CONTEXTS
constant is defined to give the size of RLGL[]
and CoreData.Window[]
CoreData.Window
struct into CoreData.Window[MAX_CONTEXTS]
and add a currentWindow
variable as global index to switch between the structures, as well as a numWindows
variable to keep count of the total number of windowsCORE.Window
to CORE.Window[CORE.currentWindow]
rlglData RLGL
into rlglData RLGL[MAX_CONTEXTS]
and add a currentContext
variable as global index to switch between the structures, as well as a numContexts
variable to keep count of the total number of contextsRLGL
to RLGL[currentContext]
+ rlSetContext(unsigned int)
glfwCreateWindow()
parameter to share resources from the first context to the secondBeginDrawing()
function to accept a contextID
parameter in order to CORE.currentWindow = contextID
and glfwMakeContextCurrent(CORE.Window[CORE.currentWindow].handle)
on the current window and to set the right RLGL[]
by rlSetContext(contextID)
6ddc54cdde
to see the changesThat's it. To use it just call InitWindow()
twice to get two windows. Then, just call BeginDrawing(n)
to set current window for drawing (BeginDrawing(n)
- EndDrawing()
).
NOTE: This has only been tested on Microsoft Windows for recreational purposes.
www.raylib.com | itch.io | GitHub | Discord | YouTube
Šī darbība izdzēsīs vikivietnes lapu 'Use multiple windows'. Vai turpināt?