How to use current version of opengl in cygwin? - opengl

I have been using OpenGL with cygwin for a few months to program some 3d applications. I now want to attempt to write some slightly more advanced techniques using things like vertex buffer objects. However, I noticed that I ran into an obstacle: when I use glGetString(GL_VERSION) in my program it spits out 1.4.
I compile my program with these flags: -lGL -lglut -lGLU -lGLEW and have included these headers: freeglut.h glew.h. I have chosen to link against the X11 libraries vs. the windows ones as explained here. My current OpenGL programs build and are able to run (because up until now, I have used older functionality--pre-OpenGL 1.4).
I have a new desktop computer with an ATI FirePro V4800 (FireGL) graphics card that can support up to OpenGL 4.1. I have installed the latest drivers and it passes the tests supplied by the program: OpenGL Extensions Viewer. In addition, the program shows that all the extensions up to and including 4.1 are available for my graphics card.
There is a brief mention here under the last answer saying that cygwin may want to use older dlls (ones that don't support shaders, etc.). Is this a cygwin problem? Will cygwin just not recognize my latest drivers and offer me the cool stuff in OpenGL 4.1? Or am I not linking to the correct libraries?
UPDATE
After getting to know how Cygwin's X Server works I figured I should switch to freeglut's native windows libraries. I grabbed the pre-compiled binaries found here and put the files in appropriate directories to link against them. After recompiling I am able to use all the options found in OpenGL as my graphics card permits (4.1).

When using Cygwin's X-server, start it with -wgl option (current versions do that automatically) then
export LIBGL_USE_WGL=1
On the machine I'm posting from, I get:
$ glxinfo | grep OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Intel(R) HD Graphics 2500
OpenGL version string: 4.0.0 - Build 9.17.10.3062
OpenGL shading language version string: 4.00 - Build 9.17.10.3062
[...]
Unsetting the environment variable:
$ glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits)
OpenGL version string: 3.0 Mesa 10.3.5
OpenGL shading language version string: 1.30
[...]

Related

Software rendering with Mesa/OpenGL 4.5 on Ubuntu VM on Mac

As part of my studies, I have to be able to compile and run OpenGL 4.5-based programs, and I only have a Mac to do so. I am using Ubuntu in a VM to have a more programming-friendly environment, but my software and hardware (macOS Sierra 10.12.6, Intel HD Graphics 4000) is limited to 3.3 contexts. Here is additional info (ran from the Ubuntu VM) :
$ glxinfo | grep 'OpenGL core'
OpenGL core profile version string: 3.3 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
The assignments use GLFW. I've been trying to get it to use Mesa (which it does, with llvmpipe) with software rendering so that it is independent from the hardware capabilities (if I understand correctly), but the window creation always fails when I try to create a 4.5 context. I looked around and tried using export LIBGL_ALWAYS_SOFTWARE=1 to no avail. The build chain uses CMAKE to build both the assignments and the actual GLFW lib, for what it's worth (I noticed that it uses X11 with the xorg-dev packages).
Does Mesa implement any version of OpenGL 4 ? If it does, can I force software rendering on GLFW's part so that I can create an OpenGL 4.x context ?
Does Mesa implement any version of OpenGL 4 ?
Their Intel & Radeon hardware drivers do.
... can I force software rendering on GLFW's part so that I can create an OpenGL 4.x context ?
Nope, all of Mesa's software renderers (softpipe, llvmpipe, & swr) top out at OpenGL 3.3.
As of Mesa 20.2 llvmpipe supports OpenGL 4.5.

Linux VMware 11 guest mesa drivers install to update OpenGL

I currently am using VMWARE 11 guest Linux Mint, on a host win 8.1
So i am basically trying to update OpenGL so that i can program with higher versions of GLSL and OpenGL such as 3.3 , as it currently stands when i check with glxinfo | grep OpenGL , i get
$ glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.20
OpenGL extensions:
Now i went to Mesa3d website and downloaded the 10.5.6(as you can see above the one i have installed is 10.1.3)in which the OPenGL version has been updated to version 3.3 which is what i would prefer to have over the current version which is 1.2(shading language GLSL) i downloaded the tar , extracted it , ran ./configure as instructed, and it did its thing, ran make as ./configure finished by saying run make now , and finally ran sudo install make which was the last autoconf instruction , and all completed successfully, i even ran them a second time when i found out that glxinfo | grep OpenGL was still giving me the same return as before i "installed" the mesa 3d drivers
so i am trying to find out what is missing here and why this is not installing?
is it because of the fact that i am running a guest OS linux on a host vmware?or is it something less complicated and actually fixable?
Did you uninstall the system Mesa installation? Because if not you've got two Mesa installations side-by-side and that will not end well. Also when configuring you should select the parts of Mesa you want. Which in your case would be none of the GPU drivers and just the softpipe implementation.

/usr/bin/ld: cannot find lGL when building Qt5 app in Qt Creator on Linux Mint

I'm porting my application from Qt4 to Qt5. I installed Qt5.2.1 from the online installer on Linux Mint 16 64-bit, in a vm on my MacBook Pro. When I run qmake and build in Qt Creator, I get:
/usr/bin/ld: cannot find -lGL
Do I need openGL? I'm not using it when I build on Windows or OSX. I'm very new to Linux, and far from expert in C++ or Qt. I found a post that included a hack to remove -lGL from mkspecs/common/linux.conf. That worked.
My question is, assuming I don't need -lGL, what is the normal way to keep the linker from attempting to link it? I imagine I do something in the .pro file, but what?
Qt5 makes heavy use of OpenGL internally. On Windows OpenGL support is a bit flaky (you must install the original vendor drivers, because Microsoft strips OpenGL from the automatically installed drivers) and hence makes use of a built in OpenGL emulation layer library.
On Linux however OpenGL support is much better. You'll find at least the Mesa softpipe backend, if the GPU is not supported by the standard drivers. If the GPU is supported, then out-of-the-box OpenGL support in Linux has become pretty good over the past years.
On MacOS X OpenGL is actually the foundation of all the higher level graphics operations and hence part of the inner workings of the operating system; sounds great in theory, but is also a major obstacle for quick version turnaround, as every major OpenGL version bump mandates an operating system update.
Now, unless your installation of Linux is seriously outdated you actually should have a OpenGL library installed. If not (and your linker error tells you this), just install the Mesa development package.
Linux Mint is a derivative of Ubuntu which in turn is a Debian derivative. The command to install the Mesa development package for OpenGL is
sudo apt-get install libgl1-mesa-dev

How to get OpenGL-3 headers(C/C++) in linux (with nvidia driver)

My SO is OpenSuse version 12.2 (x86_64) Mantis, with KDE desktop.
I have currently the NVidia driver (319) installed from the repository. 3D acceleration work and the driver seem to support OpenGL 4.3.
I am trying to programme a simple OpenGL sample (just a triangle in a glut windows), but I am unable because GL/gl.h is outdated: the current header is the mesa with openGL 1.3, which does nos support glCreateShader, glAttachShader...
I have tryed $ sudo find / -name gl3.h (openGL 3.1 and further should include this header) but it does not return any result, so I suppose Nvidia driver does not include library/headers.
My question is: Where can I get the GL/gl.h for the installed NVidia driver? Onyone has got this same problem and solve it?
P.S.
To install the NVidia driver, I just installed the driver from the NVidia repository for opensuse 12.2 (http://download.nvidia.com/opensuse/12.2/) (with Yast)
I have installed:
nvidia-computeG03 (NVIDIA driver for computing with GPGPU)
nvidia-gfxG03-kmp-desktop (NVIDIA graphics driver kernel module for GForce 8xxx and newer GPUs)
x11-video-nvidiaG03 (NVIDIA graphics driver for GeForce 8xxx and newer GPUx)
The correct way to access the newer features is via the GL extension mechanism. You are fine with mesa's GL.h. What you need is a current version of glext.h (which does come with the nivida drivers, iirc, but can also be found on the official opengl site). YOu then would have to query a function pointer for any function you plan to call, on your platform probably via glXGetProcAddress().
A more convenient way is to use an OpenGL loader library like glew, which will do all this for you.
Note that you could, in theory, #define GL_GLEXT_PROTOTYPES before including glext.h and directly call the functions. This is likely to work with the nvidia driver (and some others on your platform), but not guaranteed to work by any spec. And it is never going to work on other platforms, like Windows.

Open GL version 2.1 instead of 3.2 on OS X 10.8

I have a late 2009 Macbook http://support.apple.com/kb/SP579
I upgraded the operating system everytime a new one came out, so I'm using 10.8 Mountain Lion now. I was trying to get a program to work when the developer suggested I check my Open GL version with glxinfo.
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce 9400M OpenGL Engine
OpenGL version string: 2.1 NVIDIA-8.12.47 310.40.00.05f01
OpenGL shading language version string: 1.20
OpenGL extensions:
According to this https://developer.apple.com/graphicsimaging/opengl/capabilities/
I should have Open GL version 3.2, but I don't. I've also looked for newer Nvidia drivers, but the nvidia drivers download website doesn't show any for OS X 10.8 (Mountain Lion), GeForce 9400M. The Open GL website says that unlike other operating systems, Open GL is updated along with the other OS X updates.
What do? How do I get OpenGL to 3.2?
I check my Open GL version with glxinfo
glxinfo goes through the X11 server. The OpenGL support of the X11 server which is shipping with OS X is rather limited. You must check with a tool that queries the native OpenGL API of OS X, not the GLX emulation layer.