@@ -393,8 +393,12 @@ int main() {
393393 #ifdef RGFW_WINDOWS
394394 #define OEMRESOURCE
395395 #include <GL/gl.h>
396+ #ifndef GLAPIENTRY
396397 #define GLAPIENTRY APIENTRY
398+ #endif
399+ #ifndef GLAPI
397400 #define GLAPI WINGDIAPI
401+ #endif
398402 #endif
399403
400404 #ifndef __APPLE__
@@ -2268,24 +2272,13 @@ void RGFW_RGB_to_BGR(RGFW_window* win, u8* data) {
22682272 data [index + 2 ] = red ;
22692273 }
22702274 }
2271- #elif defined(RGFW_OSMESA )
2272- /**
2273- * Why is OSMesa missing this procedure
2274- * This code simply flips the image
2275- */
2276- const i32 col = 4 ;
2277- i32 ww = win -> r .w ;
2278- i32 wh = win -> r .h ;
2279- i32 bw = (i32 )win -> bufferSize .w ;
2280- for (i32 i = 0 ; i < wh / 2 ; i ++ ){
2281- for (i32 j = 0 ; j < ww ; j ++ ){
2282- for (i32 d = 0 ; d < col ; d ++ ){
2283- u8 tmp = data [i * bw * col + j * col + d ];
2284- data [i * bw * col + j * col + d ] = ((u8 * )win -> src .bitmap -> data )[(wh - i - 1 ) * bw * col + j * col + d ];
2285- data [(wh - i - 1 ) * bw * col + j * col + d ] = tmp ;
2286- }
2287- }
2288- }
2275+ #elif defined(RGFW_OSMESA )
2276+ u32 y ;
2277+ for (y = 0 ; y < (u32 )win -> r .h ; y ++ ){
2278+ u32 index_from = (y + (win -> bufferSize .h - win -> r .h )) * 4 * win -> bufferSize .w ;
2279+ u32 index_to = y * 4 * win -> bufferSize .w ;
2280+ memcpy (& data [index_to ], & data [index_from ], 4 * win -> bufferSize .w );
2281+ }
22892282 #else
22902283 RGFW_UNUSED (win ); RGFW_UNUSED (data );
22912284 #endif
@@ -3589,6 +3582,7 @@ void RGFW_window_initBufferPtr(RGFW_window* win, u8* buffer, RGFW_area area) {
35893582 #ifdef RGFW_OSMESA
35903583 win -> src .ctx = OSMesaCreateContext (OSMESA_BGRA , NULL );
35913584 OSMesaMakeCurrent (win -> src .ctx , win -> buffer , GL_UNSIGNED_BYTE , area .w , area .h );
3585+ OSMesaPixelStore (OSMESA_Y_UP , 0 );
35923586 #endif
35933587
35943588 win -> src .bitmap = XCreateImage (
@@ -3635,6 +3629,7 @@ void RGFW_window_initBufferPtr(RGFW_window* win, u8* buffer, RGFW_area area) {
36353629 #if defined(RGFW_OSMESA )
36363630 win -> src .ctx = OSMesaCreateContext (OSMESA_BGRA , NULL );
36373631 OSMesaMakeCurrent (win -> src .ctx , win -> buffer , GL_UNSIGNED_BYTE , area .w , area .h );
3632+ OSMesaPixelStore (OSMESA_Y_UP , 0 );
36383633 #endif
36393634 #endif
36403635#else
@@ -6241,6 +6236,7 @@ void RGFW_window_initBufferPtr(RGFW_window* win, u8* buffer, RGFW_area area){
62416236 #if defined(RGFW_OSMESA )
62426237 win -> src .ctx = OSMesaCreateContext (OSMESA_BGRA , NULL );
62436238 OSMesaMakeCurrent (win -> src .ctx , win -> buffer , GL_UNSIGNED_BYTE , area .w , area .h );
6239+ OSMesaPixelStore (OSMESA_Y_UP , 0 );
62446240 #endif
62456241 #else
62466242 RGFW_UNUSED (win ); RGFW_UNUSED (buffer ); RGFW_UNUSED (area ); /*!< if buffer rendering is not being used */
@@ -8403,6 +8399,7 @@ void RGFW_window_initBufferPtr(RGFW_window* win, u8* buffer, RGFW_area area) {
84038399 #ifdef RGFW_OSMESA
84048400 win -> src .ctx = OSMesaCreateContext (OSMESA_RGBA , NULL );
84058401 OSMesaMakeCurrent (win -> src .ctx , win -> buffer , GL_UNSIGNED_BYTE , area .w , area .h );
8402+ OSMesaPixelStore (OSMESA_Y_UP , 0 );
84068403 #endif
84078404 #else
84088405 RGFW_UNUSED (win ); RGFW_UNUSED (buffer ); RGFW_UNUSED (area ); /*!< if buffer rendering is not being used */
@@ -9944,6 +9941,7 @@ void RGFW_window_initBufferPtr(RGFW_window* win, u8* buffer, RGFW_area area){
99449941 #ifdef RGFW_OSMESA
99459942 win -> src .ctx = OSMesaCreateContext (OSMESA_RGBA , NULL );
99469943 OSMesaMakeCurrent (win -> src .ctx , win -> buffer , GL_UNSIGNED_BYTE , area .w , area .h );
9944+ OSMesaPixelStore (OSMESA_Y_UP , 0 );
99479945 #endif
99489946 #else
99499947 RGFW_UNUSED (win ); RGFW_UNUSED (buffer ); RGFW_UNUSED (area ); /*!< if buffer rendering is not being used */
0 commit comments