a
    i‚jü	  ã                   @   s„   d Z ddlZej d¡Zes(dejd< ne ¡ dkrBed e¡ƒ‚ddlm	Z	 ddlm
Z
 ddlmZ d	Zd
ZdZG dd„ dƒZdS )ú6An OSMesa context for software-based OpenGL rendering.é    NÚPYOPENGL_PLATFORMÚosmesaz…Cannot use OSMesa rendering platform. The PYOPENGL_PLATFORM environment variable is set to {!r} (should be either unset or 'osmesa').)ÚGL)r   )Úarraysé   é   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú	GLContextr   c                 C   sH   t  t jtttd¡| _| js$tdƒ‚|| _|| _	t
j ||df¡| _dS )z Initializes this OSMesa context.Nz#Failed to create OSMesa GL context.é   )r   ZOSMesaCreateContextExtZOSMESA_RGBAÚ_DEPTH_BITSÚ_STENCIL_BITSÚ_ACCUM_BITSÚ_contextÚRuntimeErrorÚ_heightÚ_widthr   ZGLfloatArrayZzerosÚ_buffer)ÚselfÚ	max_widthÚ
max_height© r   úV/home/ghrups/robot-bench/.venv/lib64/python3.9/site-packages/mujoco/osmesa/__init__.pyÚ__init__+   s    ûzGLContext.__init__c                 C   s2   | j r.t | j | jtj| j| j¡}|s.tdƒ‚d S )Nz&Failed to make OSMesa context current.)	r   r   ÚOSMesaMakeCurrentr   r   ÚGL_FLOATr   r   r   )r   Úsuccessr   r   r   Úmake_current=   s    ûzGLContext.make_currentc                 C   sD   | j r(| j t ¡ kr(t ddtjdd¡ t | j ¡ d| _d| _ dS )z-Frees resources associated with this context.Nr   )r   r   ZOSMesaGetCurrentContextr   r   r   ZOSMesaDestroyContextr   ©r   r   r   r   ÚfreeH   s
    zGLContext.freec                 C   s   |   ¡  d S )N)r   r   r   r   r   Ú__del__P   s    zGLContext.__del__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r	   (   s
   r	   )r#   ÚosÚenvironÚgetr   ÚlowerÚImportErrorÚformatZOpenGLr   r   Z	OpenGL.GLr   r   r   r   r	   r   r   r   r   Ú<module>   s"   ýÿ