Re: [PyOpenGL-Users] Using PyopenGL with GLArea
Brought to you by:
mcfletch
From: Oliver M. <ol...@di...> - 2017-03-14 18:15:50
|
fantastic thanks for spending the time on that Matti, it works perfectly on my system I will play around and adapt it to my own program and try out your suggestions and see what i come up with :) On Sat, Mar 11, 2017 at 5:15 PM Matti Kariluoma <mat...@gm...> wrote: > I forked your gist: > https://gist.github.com/matti-kariluoma/7786a620abe87deb54c6012b07ded884 > > I added error-checking to work around the errors I encountered, and placed > a print-statement to show how to check which PyOpenGL Platform is loaded at > runtime. > > When I tried to run either gist on my Nvidia+Debian laptop (pyopengl > 3.0.2), the program crashed immediately with an error similar to: > http://askubuntu.com/questions/175744/x-error-of-failed-request-badrequest-invalid-request-code-or-no-such-operation > When I tried to run your gist on my Intel+Ubuntu 16.10 machine, your gist > gives the errors you described. After making my changes, my gist displayed > a red triangle with platforms "linux2" and "posix". > > == > > > > I just dont 100% get why i need to prefix I would not want to tell a > user they need todo that > > PYOPENGL_PLATFORM allows one codebase to support osx, windows, and various > linux flavors. A platform is selected at runtime to simplify the > distribution of PyOpenGL. Some platforms implement things differently- > there will always be bugs or missing functionality when running on > different platforms. Avoid the use of `from X import *' to make your code > more likely to run on a different platform. Instead of: > from OpenGL.GLUT import * > glutInit([]) > ...try: > from OpenGL import GLUT as glut > glut.glutInit([]) > ... you'd be surprised how much this helps platform portability. > > Each of the platforms has various dependencies that are not installed when > you get pyopengl from source or pip, however the system package manager > (apt) will download the dependencies automatically (e.g. freeglut3, etc.) > for your system's recommended platform. Some of the "optional" platforms > (osmesa, egl) do not have packages in apt, so you'll need to install the > dependencies yourself. This becomes very complicated when you use external > PPAs, or build your own drivers and libraries! > > Hint: Use strace to see which drivers/libraries are being used by your > process, to ensure you are using the drivers/libraries you intend: > $ strace python glutexample.py 2>&1 | grep open > == > > > >is there a way i can detect the profiles and select the best on startup ? > > You can choose between PyOpenGL platforms at runtime by setting > `os.environ' in your code: > import os > os.environ['PYOPENGL_PLATFORM'] = 'posix' > import OpenGL > > ...you /should/ be able to use the `reload' function ( > http://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module) > to choose a different platform at runtime: > import os > os.environ['PYOPENGL_PLATFORM'] = 'posix' > import OpenGL > # check if we have the features we want, if not... > if reload_opengl_platform: > os.environ['PYOPENGL_PLATFORM'] = 'osmesa' > reload(OpenGL) > > I did not test the`reload' code above, your results may vary. > > > On 3/9/17 1:57 PM, Oliver Marks wrote: > > I am not sure if this is an issue now there are a few things I have > noticed it occurs when using osmesa on x11 and wayland. > > I can now run it on both with x11 it just works in wayland if i prefix > PYOPENGL_PLATFORM = "EGL" then it works. > > I am using ubuntu 16.10 and python-gobject 3.22.0-1 from the repository. > > > PYOPENGL_PLATFORM = "EGL" > > I have a gi gtkglarea example on stack overflow > http://stackoverflow.com/questions/42185728/why-is-glgenvertexarrays-undefined-in-pyopengl-when-using-gtkglarea > . > > > Tried to use Glut which i have never used before but that seems to be a > world of pain and brings up new errors :/ > > - using EGL NotImplementedError: Platform does not define a GLUT font > retrieval function > - using osmesa gives me TypeError: unhashable type contextdata.py", line > 106, in getValue > - using glx gives me glGenVertexArrays(1) this function takes at least 2 > arguments (1 given) > > This is where i got to with the code but it could be completely wrong as > you don't seem to manage context in the same way but i did not find many > glut examples most see to use pygame. > > https://gist.github.com/olymk2/b156f7490e3f5662e2fa0cf42b8c7c63 > > > Anyway my code kind of works I just dont 100% get why i need to prefix I > would not want to tell a user they need todo that, so is there a way i can > detect the profiles and select the best on startup > > > > > > > > > On Wed, Mar 8, 2017 at 3:25 PM Matti Kariluoma <mat...@gm...> > wrote: > > I will take a look on Saturday. > > 1) In the meantime, could you create a minimal example that demonstrates > the problem? > > Its always very interesting to see simple-looking code that works on some > platforms but doesn't work on others; we just had an example of such two > weeks ago from another user. > > Ideally your minimal example would not involve the use of the `gi' module, > or at the very least, include instructions to bring a fresh installation up > with that package installed, i.e. "sudo apt-get install ..." > > 2) Does your problem require `gi' for this error to show? > > 3) Is the error reproducible under GLUT or GLFW? > > 4) If (2), what steps are needed to install `gi', and what version of `gi'? > On 3/5/17 12:49 PM, Oly wrote: > > Just another thing of note, > > using PYOPENGL_PLATFORM = "osmesa" with x11 causes the same issue, so it > would appear related to the mesa drivers. > > What other options can that take, can i enforce nvidia or intel instead of > osmesa ? > > perhaps wayland is defaulting to mesa and x11 is using something else. > > feels like i am getting nearer to a solution, or at least a work around. > > > > On Sun, 5 Mar 2017 at 17:29 Oly <ol...@gm...> wrote: > > Also because it maybe useful, i have this being reported by gtk / opengl. > > > Intel_Open_Source_Technology_Center_4.5_(Core_Profile)_Mesa_17.0.0_-_padoka_PPA_Mesa_DRI_Intel(R)_Kabylake_GT2__4.50 > OpenGL Version 4.5_(Core_Profile)_Mesa_17.0.0_-_padoka_PPA > OpenGL Renderer Mesa_DRI_Intel(R)_Kabylake_GT2_ > Shader Language version 4.50 > > so it looks like things should be new enough to support that feature under > wayland. > > > On Sun, 5 Mar 2017 at 17:28 Oly <ol...@gm...> wrote: > > Thanks for the offer not sure how i missed your reply. > > Anyway i made some progress, yes my issue is with linux and gtk > specifically I have also found out it has something todo with wayland. > > Running the example i can get it to work with my intel and nvidia graphics > (optimus card) on x11 but if i am using wayland then i get the error above. > > Not sure why wayland would effect what available to me anyone seen > anything similar ? > > Seems it i graphics card related. > > I did not know about this trick PYOPENGL_PLATFORM="osmesa" so thats useful > to know but it does not help unfortunately. > > > On Sun, 12 Feb 2017 at 20:20 Matti Kariluoma <mat...@gm...> > wrote: > > I tried to have a look at your code, but I don't have the `gi' package > on my machine, and `pip install gi' can't find it either. > > 1) Would you accept help in the form of a program that starts with > `from OpenGL import GLUT' , or does your problem require gi? > > As for the error you posted, looking at https://mesamatrix.net/ I see > that glGenVertexArrays is a part of OpenGL 3.0, extension > GL_ARB_vertex_array_object which seems to have broad support. > > 2) Maybe your graphics device (or its driver) is ancient? > > Since your gist seems to indicate you are using GTK, I assume you are > running this under Linux. You may want to look into running PyOpenGL > under mesa, using one of their software renderers if for whatever > reason you don't have OpenGL3.0 support. > > Using the mesa CPU renderer under Linux: > > http://www.mattikariluoma.com/blog/Headless%20Rendered%20OpenGL%20Scenes.html > > >From: Oliver Marks <oly@di...> <oly@di...> - 2017-02-11 22:40:09 > > > >Thought i would have a stab at trying to make this work, I cant find any > >existing working examples. > > > >I have linked a gist if any one want to try. > > > >currently I am getting this error. > > > >OpenGL.error.NullFunctionError: Attempt to call an undefined function > >glGenVertexArrays, check for bool(glGenVertexArrays) before calling > > > >Which to me sounds like its not available to the context, GLArea is > >supplying the context so i am unsure why this would be ? > > > >Any ideas or can anyone give me some pointers ? > > > >https://gist.github.com/olymk2/5b3e49ac83130e580bd9983f2e5d49c3 > > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > PyOpenGL Homepage > http://pyopengl.sourceforge.net > _______________________________________________ > PyOpenGL-Users mailing list > PyO...@li... > https://lists.sourceforge.net/lists/listinfo/pyopengl-users > > > > ------------------------------------------------------------------------------ > Announcing the Oxford Dictionaries API! The API offers world-renowned > dictionary content that is easy and intuitive to access. Sign up for an > account today to start using our lexical data to power your apps and > projects. Get started today and enter our developer competition. > http://sdm.link/oxford_______________________________________________ > PyOpenGL Homepage > http://pyopengl.sourceforge.net > _______________________________________________ > PyOpenGL-Users mailing list > PyO...@li... > https://lists.sourceforge.net/lists/listinfo/pyopengl-users > > > ------------------------------------------------------------------------------ > Announcing the Oxford Dictionaries API! The API offers world-renowned > dictionary content that is easy and intuitive to access. Sign up for an > account today to start using our lexical data to power your apps and > projects. Get started today and enter our developer competition. > http://sdm.link/oxford_______________________________________________ > PyOpenGL Homepage > http://pyopengl.sourceforge.net > _______________________________________________ > PyOpenGL-Users mailing list > PyO...@li... > https://lists.sourceforge.net/lists/listinfo/pyopengl-users > |