Re: Using PyopenGL with GLArea

Matti Kariluoma <[email protected]> Sat, 11 Mar 2017 11:15:39 -0600
Newsgroups gmane.comp.python.opengl.user
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--===============4350110599147389445==
Content-Type: multipart/alternative;
	boundary="------------51EF42C50B0E250BF0226C92"

This is a multi-part message in MIME format.
--------------51EF42C50B0E250BF0226C92
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

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 
> <[email protected] <mailto:[email protected]>> 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 <[email protected]
>>     <mailto:[email protected]>> 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 <[email protected]
>>         <mailto:[email protected]>> 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
>>             <[email protected]
>>             <mailto:[email protected]>> 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...> <mailto: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
>>                 [email protected]
>>                 <mailto:[email protected]>
>>                 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
>     [email protected]
>     <mailto:[email protected]>
>     https://lists.sourceforge.net/lists/listinfo/pyopengl-users
>


--------------51EF42C50B0E250BF0226C92
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>I forked your gist:
      <a class="moz-txt-link-freetext" href="https://gist.github.com/matti-kariluoma/7786a620abe87deb54c6012b07ded884">https://gist.github.com/matti-kariluoma/7786a620abe87deb54c6012b07ded884</a></p>
    <p>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.<br>
    </p>
    <p>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:
<a class="moz-txt-link-freetext" href="http://askubuntu.com/questions/175744/x-error-of-failed-request-badrequest-invalid-request-code-or-no-such-operation">http://askubuntu.com/questions/175744/x-error-of-failed-request-badrequest-invalid-request-code-or-no-such-operation</a><br>
    </p>
    <div class="moz-cite-prefix">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".<br>
      <br>
      ==<br>
      <br>
      &gt; I just dont 100% get why i need to prefix I would not want to
      tell a user they need todo that<br>
      <br>
      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:<br>
        from OpenGL.GLUT import *<br>
        glutInit([])<br>
      ...try:<br>
        from OpenGL import GLUT as glut<br>
        glut.glutInit([])<br>
      ... you'd be surprised how much this helps platform portability.<br>
      <br>
      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!<br>
      <br>
      Hint: Use strace to see which drivers/libraries are being used by
      your process, to ensure you are using the drivers/libraries you
      intend:<br>
        $ strace python glutexample.py 2&gt;&amp;1 | grep open<br>
      ==<br>
      <br>
      &gt;is there a way i can detect the profiles and select the best
      on startup ?<br>
      <br>
      You can choose between PyOpenGL platforms at runtime by setting
      `os.environ' in your code:<br>
        import os<br>
        os.environ['PYOPENGL_PLATFORM'] = 'posix'<br>
        import OpenGL<br>
      <br>
      ...you /should/ be able to use the `reload' function
(<a class="moz-txt-link-freetext" href="http://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module">http://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module</a>)
      to choose a different platform at runtime:<br>
        import os<br>
        os.environ['PYOPENGL_PLATFORM'] = 'posix'<br>
        import OpenGL<br>
        # check if we have the features we want, if not...<br>
        if reload_opengl_platform:<br>
          os.environ['PYOPENGL_PLATFORM'] = 'osmesa'<br>
          reload(OpenGL)<br>
      <br>
      I did not test the`reload' code above, your results may vary.<br>
      <br>
      On 3/9/17 1:57 PM, Oliver Marks wrote:<br>
    </div>
    <blockquote
cite="mid:CACvA_FdYZCY_fkc8sZTqsOqFTev12uANotur9LkjosTGU0ypzw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>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.<br>
              <br>
            </div>
            I can now run it on both with x11 it just works in wayland
            if i prefix PYOPENGL_PLATFORM = "EGL" then it works.<br>
            <br>
          </div>
          I am using ubuntu 16.10 and python-gobject 3.22.0-1 from the
          repository.<br>
          <br>
          <br>
          PYOPENGL_PLATFORM = "EGL"<br>
          <br>
        </div>
        I have a gi gtkglarea example on stack overflow <a
          moz-do-not-send="true"
href="http://stackoverflow.com/questions/42185728/why-is-glgenvertexarrays-undefined-in-pyopengl-when-using-gtkglarea">http://stackoverflow.com/questions/42185728/why-is-glgenvertexarrays-undefined-in-pyopengl-when-using-gtkglarea</a>.<br>
        <br>
        <br>
        <div>Tried to use Glut which i have never used before but that
          seems to be a world of pain and brings up new errors :/<br>
          <br>
        </div>
        <div>- using EGL NotImplementedError: Platform does not define a
          GLUT font retrieval function<br>
        </div>
        <div>- using osmesa gives me TypeError: unhashable type
          contextdata.py", line 106, in getValue<br>
        </div>
        <div>- using glx gives me glGenVertexArrays(1) this function
          takes at least 2 arguments (1 given)<br>
        </div>
        <div><br>
          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.<br>
          <br>
          <a moz-do-not-send="true"
            href="https://gist.github.com/olymk2/b156f7490e3f5662e2fa0cf42b8c7c63">https://gist.github.com/olymk2/b156f7490e3f5662e2fa0cf42b8c7c63</a><br>
        </div>
        <div><br>
          <br>
        </div>
        <div>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 
          <meta http-equiv="content-type" content="text/html;
            charset=utf-8">
        </div>
        <div><br>
          <br>
          <br>
          <br>
          <br>
          <div><br>
            <div><br>
            </div>
          </div>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">On Wed, Mar 8, 2017 at 3:25 PM Matti Kariluoma
          &lt;<a moz-do-not-send="true"
            href="mailto:[email protected]">[email protected]</a>&gt;
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
            <p class="gmail_msg">I will take a look on Saturday.</p>
            <p class="gmail_msg">1) In the meantime, could you create a
              minimal example that demonstrates the problem? <br
                class="gmail_msg">
            </p>
            <p class="gmail_msg">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.<br class="gmail_msg">
            </p>
            <p class="gmail_msg">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 ..." <br
                class="gmail_msg">
            </p>
            <p class="gmail_msg">2) Does your problem require `gi' for
              this error to show? <br class="gmail_msg">
            </p>
            <p class="gmail_msg">3) Is the error reproducible under GLUT
              or GLFW?<br class="gmail_msg">
            </p>
            <p class="gmail_msg">4) If (2), what steps are needed to
              install `gi', and what version of `gi'?<br
                class="gmail_msg">
            </p>
          </div>
          <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
            <div class="m_-5089312650406477093moz-cite-prefix gmail_msg">On
              3/5/17 12:49 PM, Oly wrote:<br class="gmail_msg">
            </div>
            <blockquote type="cite" class="gmail_msg">
              <div dir="ltr" class="gmail_msg">Just another thing of
                note,<br class="gmail_msg">
                <br class="gmail_msg">
                using PYOPENGL_PLATFORM = "osmesa" with x11 causes the
                same issue, so it would appear related to the mesa
                drivers.<br class="gmail_msg">
                <br class="gmail_msg">
                What other options can that take, can i enforce nvidia
                or intel instead of osmesa ? <br class="gmail_msg">
                <br class="gmail_msg">
                perhaps wayland is defaulting to mesa and x11 is using
                something else.<br class="gmail_msg">
                <br class="gmail_msg">
                feels like i am getting nearer to a solution, or at
                least a work around.<br class="gmail_msg">
                <br class="gmail_msg">
                <br class="gmail_msg">
              </div>
              <br class="gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div dir="ltr" class="gmail_msg">On Sun, 5 Mar 2017 at
                  17:29 Oly &lt;<a moz-do-not-send="true"
                    href="mailto:[email protected]" class="gmail_msg"
                    target="_blank">[email protected]</a>&gt; wrote:<br
                    class="gmail_msg">
                </div>
                <blockquote class="gmail_quote gmail_msg"
                  style="margin:0 0 0 .8ex;border-left:1px #ccc
                  solid;padding-left:1ex">
                  <div dir="ltr" class="gmail_msg">
                    <div class="gmail_msg">Also because it maybe useful,
                      i have this being reported by gtk / opengl.<br
                        class="gmail_msg">
                      <br class="gmail_msg">
Intel_Open_Source_Technology_Center_4.5_(Core_Profile)_Mesa_17.0.0_-_padoka_PPA_Mesa_DRI_Intel(R)_Kabylake_GT2__4.50<br
                        class="gmail_msg">
                      OpenGL Version
                      4.5_(Core_Profile)_Mesa_17.0.0_-_padoka_PPA<br
                        class="gmail_msg">
                      OpenGL Renderer Mesa_DRI_Intel(R)_Kabylake_GT2_<br
                        class="gmail_msg">
                      Shader Language version 4.50<br class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    so it looks like things should be new enough to
                    support that feature under wayland.<br
                      class="gmail_msg">
                    <div class="gmail_msg"><br class="gmail_msg">
                    </div>
                  </div>
                  <br class="gmail_msg">
                  <div class="gmail_quote gmail_msg">
                    <div dir="ltr" class="gmail_msg">On Sun, 5 Mar 2017
                      at 17:28 Oly &lt;<a moz-do-not-send="true"
                        href="mailto:[email protected]" class="gmail_msg"
                        target="_blank">[email protected]</a>&gt; wrote:<br
                        class="gmail_msg">
                    </div>
                    <blockquote class="gmail_quote gmail_msg"
                      style="margin:0 0 0 .8ex;border-left:1px #ccc
                      solid;padding-left:1ex">
                      <div dir="ltr" class="gmail_msg">
                        <div class="gmail_msg">
                          <div class="gmail_msg">
                            <div class="gmail_msg">
                              <div class="gmail_msg">
                                <div class="gmail_msg">Thanks for the
                                  offer not sure how i missed your
                                  reply.<br class="gmail_msg">
                                  <br class="gmail_msg">
                                </div>
                                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.<br class="gmail_msg">
                                <br class="gmail_msg">
                              </div>
                              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.<br
                                class="gmail_msg">
                              <br class="gmail_msg">
                            </div>
                            Not sure why wayland would effect what
                            available to me anyone seen anything similar
                            ?<br class="gmail_msg">
                            <br class="gmail_msg">
                          </div>
                          Seems it i graphics card related.<br
                            class="gmail_msg">
                          <br class="gmail_msg">
                        </div>
                        I did not know about this trick
                        PYOPENGL_PLATFORM="osmesa" so thats useful to
                        know but it does not help unfortunately.<br
                          class="gmail_msg">
                        <div class="gmail_msg">
                          <div class="gmail_msg">
                            <div class="gmail_msg">
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                      <br class="gmail_msg">
                      <div class="gmail_quote gmail_msg">
                        <div dir="ltr" class="gmail_msg">On Sun, 12 Feb
                          2017 at 20:20 Matti Kariluoma &lt;<a
                            moz-do-not-send="true"
                            href="mailto:[email protected]"
                            class="gmail_msg" target="_blank">[email protected]</a>&gt;
                          wrote:<br class="gmail_msg">
                        </div>
                        <blockquote class="gmail_quote gmail_msg"
                          style="margin:0 0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">I tried to have a look
                          at your code, but I don't have the `gi'
                          package<br class="gmail_msg">
                          on my machine, and `pip install gi' can't find
                          it either.<br class="gmail_msg">
                          <br class="gmail_msg">
                          1) Would you accept help in the form of a
                          program that starts with<br class="gmail_msg">
                          `from OpenGL import GLUT' , or does your
                          problem require gi?<br class="gmail_msg">
                          <br class="gmail_msg">
                          As for the error you posted, looking at <a
                            moz-do-not-send="true"
                            href="https://mesamatrix.net/"
                            rel="noreferrer" class="gmail_msg"
                            target="_blank">https://mesamatrix.net/</a>
                          I see<br class="gmail_msg">
                          that glGenVertexArrays is a part of OpenGL
                          3.0, extension<br class="gmail_msg">
                          GL_ARB_vertex_array_object which seems to have
                          broad support.<br class="gmail_msg">
                          <br class="gmail_msg">
                          2) Maybe your graphics device (or its driver)
                          is ancient?<br class="gmail_msg">
                          <br class="gmail_msg">
                          Since your gist seems to indicate you are
                          using GTK, I assume you are<br
                            class="gmail_msg">
                          running this under Linux. You may want to look
                          into running PyOpenGL<br class="gmail_msg">
                          under mesa, using one of their software
                          renderers if for whatever<br class="gmail_msg">
                          reason you don't have OpenGL3.0 support.<br
                            class="gmail_msg">
                          <br class="gmail_msg">
                          Using the mesa CPU renderer under Linux:<br
                            class="gmail_msg">
                          <a moz-do-not-send="true"
href="http://www.mattikariluoma.com/blog/Headless%20Rendered%20OpenGL%20Scenes.html"
                            rel="noreferrer" class="gmail_msg"
                            target="_blank">http://www.mattikariluoma.com/blog/Headless%20Rendered%20OpenGL%20Scenes.html</a><br
                            class="gmail_msg">
                          <br class="gmail_msg">
                          &gt;From: Oliver Marks <a
                            moz-do-not-send="true"
                            class="m_-5089312650406477093moz-txt-link-rfc2396E
                            gmail_msg" href="mailto:oly@di..."
                            target="_blank">&lt;oly@di...&gt;</a> -
                          2017-02-11 22:40:09<br class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;Thought i would have a stab at trying to
                          make this work, I cant find any<br
                            class="gmail_msg">
                          &gt;existing working examples.<br
                            class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;I have linked a gist if any one want to
                          try.<br class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;currently I am getting this error.<br
                            class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;OpenGL.error.NullFunctionError: Attempt to
                          call an undefined function<br
                            class="gmail_msg">
                          &gt;glGenVertexArrays, check for
                          bool(glGenVertexArrays) before calling<br
                            class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;Which to me sounds like its not available
                          to the context, GLArea is<br class="gmail_msg">
                          &gt;supplying the context so i am unsure why
                          this would be ?<br class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;Any ideas or can anyone give me some
                          pointers ?<br class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          &gt;<a moz-do-not-send="true"
                            href="https://gist.github.com/olymk2/5b3e49ac83130e580bd9983f2e5d49c3"
                            rel="noreferrer" class="gmail_msg"
                            target="_blank">https://gist.github.com/olymk2/5b3e49ac83130e580bd9983f2e5d49c3</a><br
                            class="gmail_msg">
                          &gt;<br class="gmail_msg">
                          <br class="gmail_msg">
------------------------------------------------------------------------------<br
                            class="gmail_msg">
                          Check out the vibrant tech community on one of
                          the world's most<br class="gmail_msg">
                          engaging tech sites, SlashDot.org! <a
                            moz-do-not-send="true"
                            href="http://sdm.link/slashdot"
                            rel="noreferrer" class="gmail_msg"
                            target="_blank">http://sdm.link/slashdot</a><br
                            class="gmail_msg">
_______________________________________________<br class="gmail_msg">
                          PyOpenGL Homepage<br class="gmail_msg">
                          <a moz-do-not-send="true"
                            href="http://pyopengl.sourceforge.net"
                            rel="noreferrer" class="gmail_msg"
                            target="_blank">http://pyopengl.sourceforge.net</a><br
                            class="gmail_msg">
_______________________________________________<br class="gmail_msg">
                          PyOpenGL-Users mailing list<br
                            class="gmail_msg">
                          <a moz-do-not-send="true"
                            href="mailto:[email protected]"
                            class="gmail_msg" target="_blank">[email protected]</a><br
                            class="gmail_msg">
                          <a moz-do-not-send="true"
                            href="https://lists.sourceforge.net/lists/listinfo/pyopengl-users"
                            rel="noreferrer" class="gmail_msg"
                            target="_blank">https://lists.sourceforge.net/lists/listinfo/pyopengl-users</a><br
                            class="gmail_msg">
                        </blockquote>
                      </div>
                    </blockquote>
                  </div>
                </blockquote>
              </div>
            </blockquote>
            <br class="gmail_msg">
          </div>
------------------------------------------------------------------------------<br
            class="gmail_msg">
          Announcing the Oxford Dictionaries API! The API offers
          world-renowned<br class="gmail_msg">
          dictionary content that is easy and intuitive to access. Sign
          up for an<br class="gmail_msg">
          account today to start using our lexical data to power your
          apps and<br class="gmail_msg">
          projects. Get started today and enter our developer
          competition.<br class="gmail_msg">
          <a moz-do-not-send="true" href="http://sdm.link/oxford"
            rel="noreferrer" class="gmail_msg" target="_blank">http://sdm.link/oxford</a>_______________________________________________<br
            class="gmail_msg">
          PyOpenGL Homepage<br class="gmail_msg">
          <a moz-do-not-send="true"
            href="http://pyopengl.sourceforge.net" rel="noreferrer"
            class="gmail_msg" target="_blank">http://pyopengl.sourceforge.net</a><br
            class="gmail_msg">
          _______________________________________________<br
            class="gmail_msg">
          PyOpenGL-Users mailing list<br class="gmail_msg">
          <a moz-do-not-send="true"
            href="mailto:[email protected]"
            class="gmail_msg" target="_blank">[email protected]</a><br
            class="gmail_msg">
          <a moz-do-not-send="true"
            href="https://lists.sourceforge.net/lists/listinfo/pyopengl-users"
            rel="noreferrer" class="gmail_msg" target="_blank">https://lists.sourceforge.net/lists/listinfo/pyopengl-users</a><br
            class="gmail_msg">
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>

--------------51EF42C50B0E250BF0226C92--


--===============4350110599147389445==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------
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
--===============4350110599147389445==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
PyOpenGL Homepage
http://pyopengl.sourceforge.net
_______________________________________________
PyOpenGL-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyopengl-users

--===============4350110599147389445==--