Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Along with OpenGL, support OpenGLES #19

Closed
kwadroke opened this issue Sep 2, 2013 · 6 comments
Closed

Along with OpenGL, support OpenGLES #19

kwadroke opened this issue Sep 2, 2013 · 6 comments

Comments

@kwadroke
Copy link

kwadroke commented Sep 2, 2013

Devices like the Raspberry Pi, Android phones and devices, Beagleboards and other embedded systems do not support full OpenGL. Please add support for OpenGLES for those and other systems.

@smcameron
Copy link
Owner

Bear in mind, this is the first time I've ever touched any opengl stuff, so I'm not familiar with what opengles even is... quick googling makes me think it's a subset of opengl.

I am using gtk for all the mouse/keyboard events and for windowing stuff, and for the main game loop, so, without some considerable work, I'm stuck with gtk. For opengl, I'm using gtkglext, which allows using opengl on a GdkDrawable. It's not clear there's any other reasonable way to combine gtk and opengl. It's also not clear to me whether or not gtkglext supports opengles, or whether it requires full opengl. To some extent, it is what it is. What's driving me down this road is performance problems with the software renderer. So... does it work right now for you on raspberry pi?

-- steve

@smcameron
Copy link
Owner

This thread is not encouraging... :(

https://mail.gnome.org/archives/gtkglext-list/2012-June/msg00002.html

shit And I was hoping this change would make it work better on raspberry pi, not make it quit working altogether.

-- steve

@smcameron
Copy link
Owner

An idea....

It occurs to me that the "Main Screen" is really the only one that needs the opengl accelleration. I could potentially change the code to allow building a limited client which supports all the screens except "Main Screen" and do not require opengl. That way, the Rasp. Pi could at least be used for all those screens, though you'd still need a system with OpenGL support for the main screen.

So instead of "snis_client" and "snis_server", you'd have "snis_client", "snis_limited_client", and "snis_server". Better than nothing. I'll try to get that working.

@kwadroke
Copy link
Author

kwadroke commented Sep 4, 2013

a Limited client could work. Although I'd still like an all Raspberry Pi setup.

@smcameron
Copy link
Owner

Ok, just pushed up a change that makes a limited no-opengl client. Let me know if you encounter any issues with it.

@smcameron
Copy link
Owner

Ok, for now, the limited client has main screen support too. However, this will likely cease to be the case at some point as I make the opengl 3d rendering code better.

For now I'm going to close this issue. Feel free to re-open it when it breaks at some point in the future - which is pretty likely. I will try to make sure the other screens besides the main screen continue to work without opengl though.

smcameron pushed a commit that referenced this issue Dec 5, 2013
Each triangle might be clipped into two for all six planes, resulting in
64 triangles.  Fixes this bug:

Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `./snis_limited_client'.
Program terminated with signal 11, Segmentation fault.
#0  0x3f7ffff0 in ?? ()
(gdb) bt
#0  0x3f7ffff0 in ?? ()
#1  0x08086409 in clip_triangle (triangles=0xbf8a05e0, vs_out0=0x9221fc0, vs_out1=0x9221908,
    vs_out2=0x9221840) at entity.c:1535
#2  0x0808357e in software_render_entity_triangles (w=0x8ff2840, gc=0x9056ea0, cx=0x99c1e80,
    e=0x9a23df0) at entity.c:509
#3  0x08083c57 in render_entity (w=0x8ff2840, gc=0x9056ea0, cx=0x99c1e80, e=0x9a23df0) at entity.c:605
#4  0x080852e0 in render_entities (w=0x8ff2840, gc=0x9056ea0, cx=0x99c1e80) at entity.c:1094
#5  0x08062a74 in show_mainscreen (w=0x8ff2840) at snis_limited_client.c:4910
#6  0x080797f0 in main_da_expose (w=0x8ff2840, event=0xbf8a0ee8, p=0x0) at snis_limited_client.c:10887
#7  0xb73b28a2 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
#8  0xb7188484 in g_closure_invoke () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#9  0xb719a0d9 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#10 0xb71a1ff5 in g_signal_emit_valist () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#11 0xb71a2453 in g_signal_emit () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
#12 0xb74ec413 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
#13 0xb73b10ff in gtk_main_do_event () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
#14 0xb72082bf in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#15 0xb7208262 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#16 0xb723acd3 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#17 0xb7202dc4 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#18 0xb720504f in gdk_window_process_all_updates () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#19 0xb72050c8 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
#20 0xb71dff88 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#21 0xb70c6850 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#22 0xb70c8d86 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#23 0xb70c9125 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#24 0xb70c956b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
#25 0xb73afb8f in gtk_main () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
#26 0x0807bf1d in main (argc=1, argv=0xbf8a1364) at snis_limited_client.c:11811

To reproduce the bug (without this commit, obviously) park the ship inside a
starbase and let the starbase spin around with the main view up.
Usually crashes pretty quickly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants