cdev-tux / q3lite

Q3lite, an OpenGL ES port of Quake III Arena for embedded Linux systems.
GNU General Public License v3.0
93 stars 16 forks source link

Compiling fails under Raspberry Pi OS Bullseye #19

Open T0bi79 opened 2 years ago

T0bi79 commented 2 years ago

I used this tutorial https://pimylifeup.com/raspberry-pi-quake-3/

REF_CC code/renderergles1/tr_animation.c In file included from code/renderergles1/../renderercommon/qgl.h:38, from code/renderergles1/../renderercommon/tr_common.h:34, from code/renderergles1/tr_local.h:38, from code/renderergles1/tr_animation.c:30: code/SDL2/include/SDL_opengles.h:33:10: fatal error: GLES/gl.h: No such file or directory 33 | #include <GLES/gl.h> | ^~~ compilation terminated.

cdev-tux commented 2 years ago

I can't support 3rd-party install guides, please see the Compiling and Installation Guide in the Wiki. There have been major changes to the Raspberry Pi OS with Bullseye, so for now I would recommend keeping an SD card with Buster on it for playing Q3lite. I spent a few days looking at the issue and don't currently have a solution. Since this type of project is volunteer work, I won't have time to spend on it anytime soon. However, I would encourage you and others to continue to work on this. Here's a few things to check:

Q3lite currently only supports Pi 0,1,2,3 using GLES. (no Pi 4 or Pi Zero 2 W support)

Make sure you are using the legacy GLES driver selection with 'sudo raspi-config'. Advanced Options > GL Driver.

Follow the Compiling and Installation Guide and ensure that you have all prerequisites installed.

Maybe @jdonald or someone else has some insight as to why it fails to compile on Bullseye? (Khronos headers instead of Buster's GLES headers?)

jdonald commented 2 years ago

I got around to trying out Bullseye, and successfully built q3lite.

For some reason /opt/vc/include/ is not present by default and not in any apt packages, leading to the error shown above. You can download it from https://github.com/raspberrypi/firmware/tree/master/opt/vc/include and then sudo bash make-raspberrypi.sh works fine.

greyfrontier commented 2 years ago

Hi. I was able to compile without issues on my Pi 1 running Bullseye. I just can’t get it to start. Do I need to revert to Buster? When I’m using the non OpenGL driver (which is the same method I got Q3Lite to work on Buster) it gives me a failure to initialize the OpenGL ES1 renderer. I also got an undefined symbol (glactivetexture) as well. F693AB54-A6E1-44E9-A6C9-33E6D15A8EB3

jdonald commented 2 years ago

Hi @greyfrontier sorry that I didn't actually do a runtime test for my February comment. For expedience I built it only on a Pi 4 at the time, and providing something that doesn't actually run was pretty irresponsible of me.

I've looked closer on a Pi 3B+ now. First thing I encountered after doing sudo raspi-config to enable the legacy driver is that the whole /opt/vc folder, not merely /opt/vc/include, seems to be missing on the default image so I had to download that.

Next, it seems to me the build makes assumptions of /opt/vc/lib being in the default linker path as it had been for buster and prior, so we currently don't have the right flags to even add it with the -rpath flag. The quickest workaround for this is to do:

sudo ldconfig /opt/vc/lib

prior to building.

Once I do that it gets past the runtime linker error, but I hit a black screen. I then checked other legacy examples in /opt/vc/src/hello_pi and found hello_triangle and hello_teapot no longer render anything. Unless I'm missing some obvious step it seems GLES rendering with the legacy driver does not work on bullseye, so there may not be any viable path forward for q3lite. And if that's the case, I can only suggest the alternative:

sudo apt install quake3

with the Mesa driver, although that'll probably require something newer than a Pi 1.

greyfrontier commented 1 year ago

Hey thank you for getting back to me, I'm sorry for the delay. I even tried doing an in place upgrade to Bullseye - but yeah! hahaha I think it's because I have the Pi 1

Still impressive to know I can get it running on Buster when I followed the excellent instructions.. I do appreciate everything!!