• 0

Parallax Starfield (SDL)


Question

Hi,

I was reading an issue of Linux Format today, and saw a parallax starfield in SDL. I hadn't tried SDL before, so I gave it a shot, and added some extra functionality like bliting images of planets, etc. I was surprised how easy it was.

Anyone else played around with SDL before? How do you rate it vs other graphic libraries?

I've included the code I threw together as an attachment if anyone wants to play with it. Just chmod +x build, then ./build to compile it, and ./cosmos to run it. It's hardcoded for my resolution (1080p), but it's easy enough to change the defines at the top of main.c.

cosmos.zip

Link to comment
https://www.neowin.net/forum/topic/1108349-parallax-starfield-sdl/
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Strange. I'm still getting some tearing even after locking the fps at 60 frames and double buffering the surface. Perhaps it's SDL or my graphics driver.

I just realised as well that passing an expression containing rand () as a parameter to a MAX macro isn't a good idea due to duplicate evaluation :/

cosmos.zip

  • 0

I tried to compile your code on my Mint VM but I didn't have SDL installed, and I'm not sure how to properly install it on Linux.

That said SDL is obviously a quality and widely used library especially in the *.nix world, but for my own needs I prefer to use higher-level, object-oriented APIs which allow me to focus on the application logic. For C++ I like SFML, for C# I like XNA/MonoGame.

  • 0

I much prefer Allegro 5 over SDL, but both are good at what they do. A game I'm developing uses Allegro 5 to abstract most platform-specific stuff, while the rest is done in C# and OpenGL 3.3. I went with Allegro over the experience and (in my opinion), the nicer API. But I guess that doesn't matter much when it's all P/Invoke.

  • 0

I tried to compile your code on my Mint VM but I didn't have SDL installed, and I'm not sure how to properly install it on Linux.

sudo apt-get install libsdl-dev libsdl-image1.2-dev

Ubuntu / Mint's default version of GCC doesn't like it when -lSDL_image isn't right at the end of the line. So you'll need to move it to the end of the line in build:

gcc -o cosmos -O2 -march=native -s -pedantic -Wall `pkg-config --cflags --libs sdl` [b']-lSDL_image main.c[/b]

to

gcc main.c -o cosmos -O2 -march=native -s -pedantic -Wall `pkg-config --cflags --libs sdl` -lSDL_image

should do it.

You'll probably have to change the video resolution in main.c if your host doesn't support 1080p. If it does support it, then just full screen the guest mint and it should work, albeit, not as smooth as a native machine.

That said SDL is obviously a quality and widely used library especially in the *.nix world

Yeah, I'm quite impressed with how easy it is to use. I might try writing a game in it, or perhaps a Stargate-esque wormhole simulator.

, but for my own needs I prefer to use higher-level, object-oriented APIs which allow me to focus on the application logic. For C++ I like SFML, for C# I like XNA/MonoGame.

I haven't tried MonoGame before, but I'll take a look at it, thanks.

  • 0

I much prefer Allegro 5 over SDL, but both are good at what they do. A game I'm developing uses Allegro 5 to abstract most platform-specific stuff, while the rest is done in C# and OpenGL 3.3. I went with Allegro over the experience and (in my opinion), the nicer API. But I guess that doesn't matter much when it's all P/Invoke.

That looks interesting. It looks like it does more of the grunt work than SDL. Perhaps it would be easier to get a game up and running using that than SDL alone.

  • 0

If you're on Ubuntu or Mint you need to add the badgerports repositories to get the latest Monodevelop/MonoGame packages. On other distributions I don't know.

There are two packages for Arch (my distro).

$  yaourt -Ss monogame
aur/monogame 2.5.1.0-1 (3)
	XNA Implementation for Mono based platforms
aur/monogame-git 20120512-1 (1)
	XNA Implementation for Mono based platforms (git)

The GIT one will no doubt be more up to date. It's good that it has cli tools. I'm too attached to Vim to use anything else ;)

Edit: Not sure I like the licence:

$  yaourt -Si monogame | grep Licenses
Licenses	   : Microsoft Public License

  • 0

What's the problem with it? Having "Microsoft" in the name? It's approved by the OSI.

Microsoft licences tend to be precarious. I prefer the GPL. Mono has a GPL licence, so I don't see why monogame can't follow suit. But anyway, I'll take a look at it.

This topic is now closed to further replies.
  • Posts

    • You do you, I've just said that it first appeared in "home" version before it will be available in "work" one. I use Edge only because it still supports MV2 uBO extension even on Android - I'll switch when they stop.
    • I imagine that was a review or something? My reviews mostly contain a lot of images and galleries, but these are all webp too, but yeah it all adds up on the page load. Would help if you were more helpful with your critique instead of bitching and moaning like a Karen 😂 Because then we might be able to fix it for you.
    • If Valve refused to let them make the case, I wonder if they've already partnered with someone else to do it? The fact that they didn't seek permission/licence before diving straight in is incredible though
    • OpenClaw now has native mobile apps on iOS and Android by Karthik Mudaliar OpenClaw, the viral open-source personal AI agent, now has its own mobile app, available on both Android and iOS. Users can pair the app with an existing OpenClaw gateway and can start using new mobile-native features that are now available on the app. The app supports all the existing features you'd already have seen on OpenClaw's TUI, as well as some more, such as real-time and background Talk mode, action approvals, sharing from iOS, and optional access to device capabilities such as camera, screen, location, photos, contacts, calendar, and reminders. These features are available on both the Android and iOS versions of the app. What's important with these apps is that they don't run OpenClaw on your phone, but are actually just companion apps that require a running OpenClaw Gateway on an existing device, on macOS, Linux, or Windows via WSL2. To pair the app with your existing OpenClaw gateway, users need to run the command "/pair qr" on the TUI or existing chat interface, which brings up a QR code. Users can then scan this QR code to pair it up with the mobile app. There's also an option to manually pair the app by entering the host and a port. Previously, OpenClaw had been available on phones via WhatsApp, Telegram, Slack, Discord, Microsoft Teams, Matrix, and others. Now, with a native mobile app, the interface is much cleaner and more focused on just the OpenClaw, of course, with the added support for camera, screen, location, and more. It's important to note that OpenClaw comes with its own security warnings. There's always a chance of prompt injection with these tools, so users are recommended to double-check authentication, tool policy, sandboxing, and execution approvals rather than prompts alone. For users well-versed with the AI harness, a native mobile app makes it easier to approve an automation, share a link, use voice, or let an agent react to phone-side context.
  • Recent Achievements

    • First Post
      rosiecharles earned a badge
      First Post
    • Reacting Well
      Juan Dela earned a badge
      Reacting Well
    • Week One Done
      Collagen Project earned a badge
      Week One Done
    • Reacting Well
      Wakeen1966 earned a badge
      Reacting Well
    • Rookie
      Almohandis went up a rank
      Rookie
  • Popular Contributors

    1. 1
      +primortal
      515
    2. 2
      +Edouard
      273
    3. 3
      PsYcHoKiLLa
      143
    4. 4
      Steven P.
      100
    5. 5
      macoman
      54
  • Tell a friend

    Love Neowin? Tell a friend!