It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
blotunga: Are there today any systems out there without Opengl support? I think it's ubiquitous.
Anyway I know that you want something which supports C, but if at any point want multiplatform in a different language, I can warmly recommend LibGDX (Java, Kotlin). Performance is really good actually since the graphics is an Opengl abstraction.
Otherwise +1 for SDL from me also.
The usual cause is a lack of driver support for the OS or where there's some other conflict that goes on. And sometimes, if it's a 2d game anyways, not wanting to deal with the BS of trying to get different 3d libraries functioning properly on various systems.
I figure I would finally post a reply to some of the ideas in this thread.

Allegro: Looking at the website, it appears to require DirectX on Windows or OpenGL on other OSes to build; I specifically want to avoid that dependency.

Last time I investigated SDL, it appeared that SDL2 was built with hardware acceleration in mind. I would rather not have that, unless SDL2 can run at good performance on low-spec systems with no hardware acceleration.

uGUI looks rather interesting. Maybe not something I would want to use for a game (and I still need a way to actually put the pixels onto the screen), but good to be aware of, as I am actually interested in embedded development.


avatar
blotunga: Are there today any systems out there without Opengl support? I think it's ubiquitous.
Linux in a VM may technically support OpenGL, but without hardware acceleration it is going to be really slow and inefficient. For my purposes, I don't care about 3D; what I do, however, care about is being able to make an NES style game (for example) that takes fewer resources than a comparable NES game being played in an emulator.
Post edited August 15, 2018 by dtgreene
I don't know what you want to make with a graphic library but if you want to create a game I think the best way to do it is to use a game engine.
if you need it to be open source there is Godot.

right now I think Unity3D is still the king with great docs and good performance even on laptops (for the editor). And unity3d support both 3D and 2D games.

you will get cross-platform support out of the box and you will not need to worry about directx/opengl etc... the engine will do that work for you (strange shaders aside).

I'm almost sure this is not what you want.... But when you will be tired of trying low level libraries remember that you can always use something easier.
avatar
dtgreene: Allegro: Looking at the website, it appears to require DirectX on Windows or OpenGL on other OSes to build; I specifically want to avoid that dependency.
That's only Allegro 5, the latest version, the earlier ones didn't use OpenGL as standard. 4 had an extra library you could include if you wanted OpenGL but I'm fairly sure 3 (which is what I remember using years ago) didn't even have that option.

Even with 5 it may be possible to turn off the OpenGL stuff but I'm not sure.
avatar
LiefLayer: I don't know what you want to make with a graphic library but if you want to create a game I think the best way to do it is to use a game engine.
if you need it to be open source there is Godot.

right now I think Unity3D is still the king with great docs and good performance even on laptops (for the editor). And unity3d support both 3D and 2D games.

you will get cross-platform support out of the box and you will not need to worry about directx/opengl etc... the engine will do that work for you (strange shaders aside).

I'm almost sure this is not what you want.... But when you will be tired of trying low level libraries remember that you can always use something easier.
According to Wikipedia, Godot uses OpenGL ES 3.0 as its rendering engine; again, I do not want a dependency on OpenGL or any 3D libraries or hardware acceleration.

Unity3D likely has the same issues (aside from being proprietary).

avatar
dtgreene: Allegro: Looking at the website, it appears to require DirectX on Windows or OpenGL on other OSes to build; I specifically want to avoid that dependency.
avatar
adaliabooks: That's only Allegro 5, the latest version, the earlier ones didn't use OpenGL as standard. 4 had an extra library you could include if you wanted OpenGL but I'm fairly sure 3 (which is what I remember using years ago) didn't even have that option.

Even with 5 it may be possible to turn off the OpenGL stuff but I'm not sure.
Are the older versions still being actively maintained?

By the way, it occurred to me that there is another situation where 3D acceleration isn't available; when using X forwarding to run the game on one machine and display the graphics on another.
Post edited August 15, 2018 by dtgreene
avatar
dtgreene: Are the older versions still being actively maintained?
I doubt it, but it should be fairly feature complete and stable for what you want.
avatar
blotunga: Are there today any systems out there without Opengl support? I think it's ubiquitous.
avatar
IFW: MacOS sadly. And no, nobody is going to waste time on Metal for a few hundred sales :( So that's MacOS completely dropped by thousands of game developers which is probably what they wanted to achieve with this, to make it look like a "serious" platform...
Apple has played this game for a long time, and they loose most of the time. They're starting to win with their iPhone, but only that. They're more famous for doing this with hardware, such as firewire or the iPhone power cables (the one thing that they're actually winning with).
avatar
dtgreene: Allegro: Looking at the website, it appears to require DirectX on Windows or OpenGL on other OSes to build; I specifically want to avoid that dependency.

Last time I investigated SDL, it appeared that SDL2 was built with hardware acceleration in mind. I would rather not have that, unless SDL2 can run at good performance on low-spec systems with no hardware acceleration.
Then I recommend you make your own. You can make a Device Independent Bitmap and render to it manually. It's basically just a render region like a standard video buffer and then blit that to the screen. It requires some setup to make it all work, but this is how I did the windowed portion of my game engine because DirectX did NOT deal with windowed mode without serious compromise.

You'd use the _LPBITMAPINFO object CreateDIBSection () to create it and can use ChangeDisplaySettings () to set the video mode to fullscreen (requires certain parameters on the window type). You use BitBlt () to render it. There's obviously a shitton more to it, but those are the essential functions I just got out of looking at my code.