fstl-app / fstl

A fast STL file viewer
472 stars 105 forks source link

Build on/for armv7 with only OpenGL ES #121

Open fancsali opened 5 months ago

fancsali commented 5 months ago

I am trying to build it on Linux on an old Chromebook, and got complaints from gcc about missing GL_* (GL_LINE vs GL_LINES, etc.) symbols and a few functions.

I am wondering, whether I am missing something obvious or it's just a case of a hard dependency on a full OpenGL implementation.

DeveloperPaul123 commented 5 months ago

It's likely that there is a hard dependency on a full OpenGL implementation, but I'm honestly not 100% sure. Could you post the full output of the error(s) you're getting?

fancsali commented 5 months ago

Sure, please see below:

/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp: In member function 'void Canvas::draw_mesh()':
/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp:160:42: error: 'GL_LINE' was not declared in this scope; did you mean 'GL_LINES'?
  160 |         glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
      |                                          ^~~~~~~
      |                                          GL_LINES
/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp:160:9: error: 'glPolygonMode' was not declared in this scope; did you mean 'glPolygonOffset'?
  160 |         glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
      |         ^~~~~~~~~~~~~
      |         glPolygonOffset
/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp:172:42: error: 'GL_FILL' was not declared in this scope
  172 |         glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      |                                          ^~~~~~~
/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp:172:9: error: 'glPolygonMode' was not declared in this scope; did you mean 'glPolygonOffset'?
  172 |         glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      |         ^~~~~~~~~~~~~
      |         glPolygonOffset
/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp:196:38: error: 'GL_FILL' was not declared in this scope
  196 |     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      |                                      ^~~~~~~
/root/aports/testing/fstl/src/fstl-0.10.0/src/canvas.cpp:196:5: error: 'glPolygonMode' was not declared in this scope; did you mean 'glPolygonOffset'?
  196 |     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
      |     ^~~~~~~~~~~~~
      |     glPolygonOffset
DeveloperPaul123 commented 5 months ago

Ok thank you, I see now.

Do you know what version of OpenGL ES you have available on this device?

fancsali commented 5 months ago

Of course ;)

Running glxinfo tells me that, and a lot more:

name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Mesa (0xffffffff)
    Device: Mali-T760 (Panfrost) (0xffffffff)
    Version: 24.0.7
    Accelerated: yes
    Video memory: 4004MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 3.1
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Mesa
OpenGL renderer string: Mali-T760 (Panfrost)
OpenGL core profile version string: 3.1 Mesa 24.0.7
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)

OpenGL version string: 3.1 Mesa 24.0.7
OpenGL shading language version string: 1.40
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 24.0.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10