zoukankan      html  css  js  c++  java
  • 在orangepi-PC下使用pyopengl

    在OrangePi-PC下安装显卡驱动以及opengl:

    http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=53

    在这个链接中说要:Copy Libs (libGLES* libGLES* LibUmp LibMali) to /usr/lib 

    但是在查找动态链接库的时候,orangepi会在/usr/lib/arm-linux-gnueabihf下查找动态库,请参考ldconfig的手册,或者是查看/etc/ld.so.conf.d下的文件

    因此,我们需要拷贝 (libGLES* libGLES* LibUmp LibMali) 到 /usr/lib/arm-linux-gnueabihf 下

    安装完成后即可使用opengl es以及egl的c接口进行开发

    但是如果安装PyOpenGL:

      http://pyopengl.sourceforge.net

      在ubuntu下直接使用pip安装:

    pip install PyOpenGL --user
    pip install PyOpenGL-accelerate --user

    在import OpenGL.GL或者import OpenGL.GLES2时会报错:

    /home/orangepi/.local/lib/python2.7/site-packages/OpenGL/platform/glx.pyc in GL(self)
         18             ) 
         19         except OSError as err:
    ---> 20             raise ImportError("Unable to load OpenGL library", *err.args)
         21     @baseplatform.lazy_property
         22     def GLU(self):
    
    ImportError: ('Unable to load OpenGL library', '/usr/lib/arm-linux-gnueabihf/GL: cannot read file data: Is a directory', 'GL', None)

    这是由于OrangePi的mali驱动只提供了OpenGL ES接口,而PyOpenGL要求必须有GL接口。

    修正这个问题需要更改PyOpenGL下的platform/glx.py文件(如果使用pip安装,并使用--user参数,则安装路径为:~/.local/lib/python2.7/site-packages/OpenGL/platform/glx.py), 做如下更改:

    @baseplatform.lazy_property
    def GL(self):
        try:
            return ctypesloader.loadLibrary(
                ctypes.cdll,
                'GL',
                mode=ctypes.RTLD_GLOBAL
            )
       except OSError as err:
            # -- raise ImportError("Unable to load OpenGL library", *err.args)
    # ++ return None
    return None
    # GLX doesn't seem to have its own loadable module?
    @baseplatform.lazy_property
    # -- def GLX(self): return self.GL
    # ++ def GLX(self): return self.GLES2
    def GLX(self): return self.GLES2
    @baseplatform.lazy_property
    def GetCurrentContext( self ):
        # -- return self.GL.glXGetCurrentContext
        # ++ return None
        return None
    @baseplatform.lazy_property
    def glGetError( self ): 
        # -- return self.GL.glGetError
        # ++ return self.GLES2.glGetError
        return self.GLES2.glGetError

     这是在import OpenGL.GLES2即可成功

  • 相关阅读:
    递归实现随机数不重复问题
    今天写的一个工厂工具类
    Win7 x64 IIS运行ASP+Access故障完美解决方法(转)
    li中,标题和日期一排,且日期靠右
    [学习笔记] extends implements 的区别与联系 [转载]
    [学习笔记] vim使用大全 [转]
    MidPoint Displacement for Terrain Rendering
    CryEngine3 打造另一个真实世界
    Hello C++ AMP!
    DetailMap For Terrain Rendering
  • 原文地址:https://www.cnblogs.com/astreye/p/5125502.html
Copyright © 2011-2022 走看看