'None' graphics system

Reporter: faissaloo  |  Status: open  |  Last Modified: September 17, 2017, 06:23:11 AM

People a while back were complaining on the GMC about Yoyo's refusal to add a headless mode so people could take advantage of the collision system etc in order to create lightweight servers, so I added one!

I've done my best to make graphics dependent stuff work headlessly (so we have the *_get() functions working) but some stuff (like shaders) can't be implemented without depending on a graphics API so I've made fillin functions for them (see fillin.cpp).
I noticed that d3d_model_save() is unimplemented in all graphics systems so I've left that alone, but it is quite severely needed if any of the 3D stuff is to be useful in headless mode.
Aside from that, most of the code is just bits and bobs from other graphics systems with any API calls removed and slight modification.

Sidenote: PFwindow was using string but didn't include it so I fixed that because it wouldn't compile without it.

RobertBColton  
Not only that but a headless mode is useful for things like servers, this makes it easier to write a server for your game using the same architecture/framework that the game uses. I will come back to this, we're working on something TOP secret right now.
JoshDreamland  

Ay-ay-ay... I didn't realize how sore a shape code sharing between platforms was. It looks as though most of the code in the "None" graphics system is either no-op methods (which we do need) or is duplicated from other files, yes? Can those duplicated files be replaced with, eg, #include "../OpenGL1/source_file.cpp"?

I think it would be better to move that code (in particular, files like GLtiles.cpp) into General... do any of our systems use a different implementation for those methods? It seems silly to have each system duplicate that framework. Is the operative difference something nonsensical, like glInt actual_resource; vs D3D_RENDER_CONTEXT actual_resource;? Because if so, I'll deal with that, now.

faissaloo  

It looks as though most of the code in the "None" graphics system is either no-op methods (which we do need) or is duplicated from other files, yes?

What has been duplicated from other files has been modified in order to remove actual calls to a graphics API and instead emulates what would happen on the screen (so like draw_set_color() would work enough that draw_get_color() would give the correct output), while all the no-ops are in fillin.cpp

There most certainly is alot of overlap between the graphics APIs though, like merge_color(), draw_get_color(), all the color_get_*() and make_color_*() functions.

Is the operative difference something nonsensical, like glInt actual_resource; vs D3D_RENDER_CONTEXT actual_resource;?

No

RobertBColton  

Feel free to move the color functions into general, I can't remember why I never did that. I think when I first tried I had an issue or wasn't sure about the style conventions used in ENIGMA.
Please sign in to post comments, or you can view this issue on GitHub.