OpenGL vs. OpenGL/ES

It looks like my test code is linked against OpenGL/ES (rosmake indigo).
I do need full OpenGL functionality, e.g. QGLViewer with polygons.
Is there an easy way to change the library linked?

I am unfamiliar with the particular software, but if something was linked against OpenGLES, then it would have to be ported to OpenGL before linkage could be changed. OpenGL and OpenGLES are closely related, but I have no idea how difficult porting would be…quite often if you port something then you will suddenly find other libraries linked to the original library break, and thus a chain of porting from OpenGLES to OpenGL would be required (such a project suddenly goes up exponentially in required effort).

The source code was running perfectly under OpenGL on an Intel Linux box (no Tegra).
The code should be working with OpenGL, but functions like polygons just get ignored when running under OpenGL/ES.
Compiling and linking the same source code works in both OpenGL flavors, but in OpenGL/ES nothing gets drawn.

I do not know about that software, but is there a URL available for test compiling?

If the software is designed for OpenGL, then it should not be trying to link as OpenGLES unless there is some sort of configuration stage and someone wrote the configuration scripts to also work with OpenGLES. If the software is popular enough then perhaps the software had options for both OpenGL and OpenGLES…in that case the platform would have to have a default of which to choose or else the configuration script would have options to force which to choose.

The software is on GitHub: GitHub - tum-vision/lsd_slam: LSD-SLAM
To compile you’d also need ROS Indigo.
I’m very keen to run this on the TX1, then then use the GPU as much as possible for max speed.
My suspicion is that the QGLViewer library provided in JetPack was compiled with GLES.

You can run the “ldd ” command and see what other files it is linked to. Do you know which library file provides QGLViewer? Probably something in “/usr/lib/arm-linux-gnueabihf/” (symbols are stripped on most of those so ldd works but you can’t look for individual symbols with nm…if you happen to know which file provides the symbol though you’re in luck).

Here’s what I get from libQGLViewer.so:
ubuntu@tegra-ubuntu:/usr/lib/arm-linux-gnueabihf$ ldd libQGLViewer.so
linux-vdso32.so.1 => (0xf7037000)
libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/tegra-egl/libGLESv2.so.2 (0xf6f90000)
libQtXml.so.4 => /usr/lib/arm-linux-gnueabihf/libQtXml.so.4 (0xf6f5c000)
libQtOpenGL.so.4 => /usr/lib/arm-linux-gnueabihf/libQtOpenGL.so.4 (0xf6ef4000)
libQtGui.so.4 => /usr/lib/arm-linux-gnueabihf/libQtGui.so.4 (0xf6835000)
libQtCore.so.4 => /usr/lib/arm-linux-gnueabihf/libQtCore.so.4 (0xf6629000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xf657e000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xf6512000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xf64f1000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf640a000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xf63ef000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xf63e3000)
libnvrm.so => /usr/lib/arm-linux-gnueabihf/tegra/libnvrm.so (0xf63c8000)
/lib/ld-linux-armhf.so.3 (0xab0aa000)
libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0xf6347000)
libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0xf6261000)
libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0xf6232000)
libaudio.so.2 => /usr/lib/arm-linux-gnueabihf/libaudio.so.2 (0xf621a000)
libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xf6152000)
libpng12.so.0 => /lib/arm-linux-gnueabihf/libpng12.so.0 (0xf6132000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xf6117000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xf60b0000)
libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0xf6072000)
libSM.so.6 => /usr/lib/arm-linux-gnueabihf/libSM.so.6 (0xf6064000)
libICE.so.6 => /usr/lib/arm-linux-gnueabihf/libICE.so.6 (0xf604b000)
libXi.so.6 => /usr/lib/arm-linux-gnueabihf/libXi.so.6 (0xf6039000)
libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xf602a000)
libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0xf6017000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xf6009000)
libnvos.so => /usr/lib/arm-linux-gnueabihf/tegra/libnvos.so (0xf5ff2000)
libnvidia-glsi.so.23.2.0 => /usr/lib/arm-linux-gnueabihf/tegra/libnvidia-glsi.so.23.2.0 (0xf5f8d000)
libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xf5f72000)
libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0xf5f52000)
libXt.so.6 => /usr/lib/arm-linux-gnueabihf/libXt.so.6 (0xf5f11000)
libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0xf5f06000)
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xf5ece000)
libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0xf5ebf000)
libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0xf5eb3000)
libnvidia-rmapi-tegra.so.23.2.0 => /usr/lib/arm-linux-gnueabihf/tegra/libnvidia-rmapi-tegra.so.23.2.0 (0xf5ea0000)
libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0xf5e94000)
libnvrm_gpu.so => /usr/lib/arm-linux-gnueabihf/tegra/libnvrm_gpu.so (0xf5e7b000)

And here’s the app I’m running.
libGL.so.1 is by defualt (JetPack) linked to the libGLES library.

ubuntu@tegra-ubuntu:~/rosbuild_ws/package_dir/lsd_slam/lsd_slam_viewer$ ldd bin/viewer
linux-vdso32.so.1 => (0xf7173000)
libdynamic_reconfigure_config_init_mutex.so => /opt/ros/indigo/lib/libdynamic_reconfigure_config_init_mutex.so (0xf7162000)
libroslib.so => /opt/ros/indigo/lib/libroslib.so (0xf714e000)
librosbag_storage.so => /opt/ros/indigo/lib/librosbag_storage.so (0xf7116000)
libroscpp.so => /opt/ros/indigo/lib/libroscpp.so (0xf7020000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xf6fe2000)
librosconsole.so => /opt/ros/indigo/lib/librosconsole.so (0xf6fbc000)
libroscpp_serialization.so => /opt/ros/indigo/lib/libroscpp_serialization.so (0xf6fb1000)
librostime.so => /opt/ros/indigo/lib/librostime.so (0xf6f8b000)
libcpp_common.so => /opt/ros/indigo/lib/libcpp_common.so (0xf6f7d000)
libboost_system.so.1.54.0 => /usr/lib/arm-linux-gnueabihf/libboost_system.so.1.54.0 (0xf6f72000)
libboost_thread.so.1.54.0 => /usr/lib/arm-linux-gnueabihf/libboost_thread.so.1.54.0 (0xf6f59000)
libQtOpenGL.so.4 => /usr/lib/arm-linux-gnueabihf/libQtOpenGL.so.4 (0xf6ef1000)
libQtGui.so.4 => /usr/lib/arm-linux-gnueabihf/libQtGui.so.4 (0xf6832000)
libQtCore.so.4 => /usr/lib/arm-linux-gnueabihf/libQtCore.so.4 (0xf6626000)
libQGLViewer.so.2 => /usr/lib/arm-linux-gnueabihf/libQGLViewer.so.2 (0xf65b7000)
libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xf6567000)
libGLU.so.1 => /usr/lib/arm-linux-gnueabihf/libGLU.so.1 (0xf651e000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xf6474000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xf6408000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xf63e7000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf62ff000)
/lib/ld-linux-armhf.so.3 (0xab00d000)
librospack.so => /opt/ros/indigo/lib/librospack.so (0xf62ca000)
libconsole_bridge.so.0.2 => /usr/lib/arm-linux-gnueabihf/libconsole_bridge.so.0.2 (0xf62bb000)
libroslz4.so => /opt/ros/indigo/lib/libroslz4.so (0xf62af000)
libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xf629b000)
libxmlrpcpp.so => /opt/ros/indigo/lib/libxmlrpcpp.so (0xf627d000)
libboost_filesystem.so.1.54.0 => /usr/lib/arm-linux-gnueabihf/libboost_filesystem.so.1.54.0 (0xf6265000)
librosconsole_log4cxx.so => /opt/ros/indigo/lib/librosconsole_log4cxx.so (0xf6250000)
librosconsole_backend_interface.so => /opt/ros/indigo/lib/librosconsole_backend_interface.so (0xf6246000)
liblog4cxx.so.10 => /usr/lib/liblog4cxx.so.10 (0xf610f000)
libboost_regex.so.1.54.0 => /usr/lib/arm-linux-gnueabihf/libboost_regex.so.1.54.0 (0xf605f000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xf6051000)
libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0xf5fd0000)
libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/tegra-egl/libGLESv2.so.2 (0xf5fbf000)
libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0xf5ed9000)
libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0xf5ea9000)
libaudio.so.2 => /usr/lib/arm-linux-gnueabihf/libaudio.so.2 (0xf5e92000)
libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xf5dca000)
libpng12.so.0 => /lib/arm-linux-gnueabihf/libpng12.so.0 (0xf5daa000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xf5d8f000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xf5d27000)
libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0xf5cea000)
libSM.so.6 => /usr/lib/arm-linux-gnueabihf/libSM.so.6 (0xf5cdc000)
libICE.so.6 => /usr/lib/arm-linux-gnueabihf/libICE.so.6 (0xf5cc3000)
libXi.so.6 => /usr/lib/arm-linux-gnueabihf/libXi.so.6 (0xf5cb1000)
libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xf5ca1000)
libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0xf5c8f000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xf5c84000)
libQtXml.so.4 => /usr/lib/arm-linux-gnueabihf/libQtXml.so.4 (0xf5c50000)
libglapi.so.0 => /usr/lib/arm-linux-gnueabihf/libglapi.so.0 (0xf5c1e000)
libXdamage.so.1 => /usr/lib/arm-linux-gnueabihf/libXdamage.so.1 (0xf5c13000)
libXfixes.so.3 => /usr/lib/arm-linux-gnueabihf/libXfixes.so.3 (0xf5c07000)
libX11-xcb.so.1 => /usr/lib/arm-linux-gnueabihf/libX11-xcb.so.1 (0xf5bfd000)
libxcb-glx.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-glx.so.0 (0xf5be7000)
libxcb-dri2.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-dri2.so.0 (0xf5bdc000)
libxcb-dri3.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-dri3.so.0 (0xf5bd1000)
libxcb-present.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-present.so.0 (0xf5bc7000)
libxcb-sync.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb-sync.so.1 (0xf5bbb000)
libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xf5ba1000)
libxshmfence.so.1 => /usr/lib/arm-linux-gnueabihf/libxshmfence.so.1 (0xf5b97000)
libXxf86vm.so.1 => /usr/lib/arm-linux-gnueabihf/libXxf86vm.so.1 (0xf5b8a000)
libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0xf5b7a000)
libtinyxml.so.2.6.2 => /usr/lib/arm-linux-gnueabihf/libtinyxml.so.2.6.2 (0xf5b64000)
libboost_program_options.so.1.54.0 => /usr/lib/arm-linux-gnueabihf/libboost_program_options.so.1.54.0 (0xf5b10000)
libpython2.7.so.1.0 => /usr/lib/arm-linux-gnueabihf/libpython2.7.so.1.0 (0xf58b2000)
liblz4.so.1 => /usr/lib/arm-linux-gnueabihf/liblz4.so.1 (0xf58a2000)
libaprutil-1.so.0 => /usr/lib/arm-linux-gnueabihf/libaprutil-1.so.0 (0xf5881000)
libapr-1.so.0 => /usr/lib/arm-linux-gnueabihf/libapr-1.so.0 (0xf585d000)
libicuuc.so.52 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.52 (0xf575f000)
libicui18n.so.52 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.52 (0xf5609000)
libnvidia-glsi.so.23.2.0 => /usr/lib/arm-linux-gnueabihf/tegra/libnvidia-glsi.so.23.2.0 (0xf55a4000)
libnvrm.so => /usr/lib/arm-linux-gnueabihf/tegra/libnvrm.so (0xf5589000)
libnvos.so => /usr/lib/arm-linux-gnueabihf/tegra/libnvos.so (0xf5572000)
libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0xf5552000)
libXt.so.6 => /usr/lib/arm-linux-gnueabihf/libXt.so.6 (0xf5511000)
libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0xf5505000)
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xf54cd000)
libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0xf54bf000)
libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0xf54b3000)
libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0xf54a6000)
libutil.so.1 => /lib/arm-linux-gnueabihf/libutil.so.1 (0xf549b000)
libcrypt.so.1 => /lib/arm-linux-gnueabihf/libcrypt.so.1 (0xf5464000)
libicudata.so.52 => /usr/lib/arm-linux-gnueabihf/libicudata.so.52 (0xf3df0000)
libnvidia-rmapi-tegra.so.23.2.0 => /usr/lib/arm-linux-gnueabihf/tegra/libnvidia-rmapi-tegra.so.23.2.0 (0xf3ddc000)
libnvrm_gpu.so => /usr/lib/arm-linux-gnueabihf/tegra/libnvrm_gpu.so (0xf3dc4000)

In the case where both GL and GLES are linked in, I would tend to think that it is possible to use either GL/GLES API so far as C/C++ code goes (basically using the correct header). Whether there is some other limitation, e.g., problems from mixing GL and GLES contexts, I do not know. If the JTX1 QGLViewer provides access only via GLES and QGLViewer on other platforms has a richer API set (GL versus GLES) I’m not sure if there is any kind of workaround.

Looks like QGLViewer came in via apt-get, so I’ll dig deeper how that is compiled.
Stay tuned…

Any ideas which of the following packages is present in JetPack already and shouldn’t be retrieved via apt-get?
liblapack-dev libblas-dev freeglut3-dev libqglviewer-qt4-dev libsuitesparse-dev libx11-dev

I’m unsure of the meaning of “shouldn’t”. Are you worried about conflict with the nVidia-specific files? If so, I doubt any of those would harm anything. You can run this command before and after a software install to validate if nVidia-specific files are still correct:

sha1sum -c /etc/nv_tegra_release

Thank you, that’s a useful one. In my system I got all OK, so now I need to find out how to configure QGLViewer.

Please help me out to solve this issue.
I am working on 3D software and while loading the data the error message arise as "The NVIDIA OPEN GL DRIVER LOST CONNECTION WITH THE DISPLAY DRIVER DUE TO EXCEEDING THE WINDOW TIME-OUT LIMIT AND IS UNABLE TO CONTINuE. Error code :7.
How can i solve this problem ? Where i need go and get this problem fix ?

Under Linux X11 the execution of an OpenGL app and its display can be on different machines. The first question would if you were running the app locally, or if you used a remote login? In the case of remote login, there is a strong chance that security or network settings got in the way. If using remote login, please describe the method of login and the host video hardware and o/s.