B
    t7»a°  ã               @   sV   d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 dZ
dZG dd„ dƒZdS )é    N)ÚImageÚImageOps)ÚBytesIOzt
    #version 330
    in vec3 local_vertex;
    void main(){
        gl_Position = vec4( local_vertex, 1.0 );
    }
zn
    #version 330
    out vec4 out_color;
    void main() {
        out_color = vec4(.2, 0.2, .8, 1.0);
    }
c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Úoglc             C   s   d| _ d| _ d\| _| _t ¡ | _| jjttd| _	d| _
tjddt | j
¡ dgddt | j
¡ dgddt | j
¡ dgddt | j
¡ dgddt | j
¡ dgddt | j
¡ dggd	d
| _| j | j ¡ ¡| _| j | j	| jd¡| _| j | j| jf¡| _| jj| jd| _tdƒ d S )NÚhighÚmedium)i   iX  )Zvertex_shaderZfragment_shaderr   g      à¿g        g      à?Úf4)ÚdtypeÚlocal_vertex)Zcolor_attachmentszOGL initiated)ÚimageQZw_widthZw_heightÚmodernglZcreate_standalone_contextÚctxÚprogramÚvertex_shader_sourceÚfragment_shader_sourceÚprogÚdtÚnpÚarrayÚmathÚsinÚverticesÚbufferÚtobytesÚvboÚsimple_vertex_arrayÚvaoZrenderbufferZcolor_renderbufferZframebufferÚfboÚprint)Úself© r    ú/var/www/html/ws/py/ogl.pyÚ__init__   s$    

 zogl.__init__c             C   sú   | j  ¡  | j dddd¡ |  jd7  _tjddt | j¡ dgddt | j¡ dgddt | j¡ dgddt | j¡ dgddt | j¡ dgddt | j¡ dggdd| _	| j 
| j	 ¡ ¡| _| j | j| jd¡| _| jjtjd	 | j ¡  d S )
Ngš™™™™™¹?g      ð?g      à¿g        g      à?r   )r	   r
   )Úmode)r   Zuser   Úclearr   r   r   r   r   r   r   r   r   r   r   r   Úrenderr   Z	TRIANGLESZfinish)r   r    r    r!   Údisplay.   s    
 zogl.displayc             C   s¤   |   ¡  | jjdddd}tj|tjd ddd¡}t t	 
t |d ¡¡¡}tƒ }| jd	krp|j|d
dd n,| jdkrŒ|j|d
dd n|j|d
dd | ¡ S )Né   é   r   )Z
componentsZ	alignmentr	   )r	   iX  i   éÿ   ÚlowZJPEGé(   )ÚformatZqualityr   éF   éd   )r&   r   Úreadr   Z
frombufferZfloat32Zreshaper   Zflipr   Z	fromarrayZuint8r   r   ZsaveÚgetvalue)r   ZfbZ
data_arrayZimage_to_sendÚbufr    r    r!   Ú	get_frame?   s    

zogl.get_frameN)Ú__name__Ú
__module__Ú__qualname__r"   r&   r2   r    r    r    r!   r      s   r   )r   r   ÚtimeZnumpyr   ZPILr   r   Úior   r   r   r   r    r    r    r!   Ú<module>   s   