Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.50 KB | None | 0 0
  1.  
  2. from OpenGL.GL import *
  3. from OpenGL.GLU import *
  4. from OpenGL.GLUT import *
  5. import numpy as np
  6. from gl_implement import gl_primitives as prm
  7.  
  8. width, height = 640,480
  9.  
  10.  
  11. def compile_shader(sourse, type) :
  12.     id = glCreateShader(GL_VERTEX_SHADER)
  13.     glShaderSource(id, sourse)
  14.     glCompileShader(id)
  15.  
  16.     result = glGetShaderiv(id, GL_COMPILE_STATUS)
  17.     if result == GL_FALSE :
  18.         print('that\'s a sheet')
  19.         glDeleteShader(id)
  20.         return
  21.  
  22.     return id;
  23.  
  24. def create_vertex_shader(vertexShader) :
  25.     program = glCreateProgram()
  26.     vs = compile_shader(GL_VERTEX_SHADER, vertexShader)
  27.  
  28.     glAttachShader(program)
  29.     glLinkProgram(program)
  30.     glValidateProgram(program)
  31.  
  32.     glDeleteShader(vs)
  33.  
  34.     return program
  35.  
  36. def draw() :
  37.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
  38.     glLoadIdentity()
  39.  
  40.     position = np.array([[-1/2, 1/2, 0],[1/2, 1/2, 0],[1/2, -1/2, 0],[-1/2, -1/2, 0]], dtype='float32')
  41.  
  42.     # # import ctypes
  43.     # # arr = (ctypes.c_int * 3 * 4)(*(tuple(j) for j in position))
  44.     # # # print(arr)
  45.     # # # print('size numpy arr : \n', sys.getsizeof(pyarr)/8, 'size c arr : ',  sys.getsizeof(arr)/8)
  46.     # #
  47.     # # # buffer = Gluint(position[0])
  48.     # from OpenGL.arrays import vbo
  49.     # coords = vbo.VBO(position)
  50.     # print(coords)
  51.     buffer = 0
  52.     glGenBuffers(1, buffer)
  53.     glBindBuffer(GL_ARRAY_BUFFER, buffer)
  54.     glBufferData(GL_ARRAY_BUFFER, position.nbytes, position ,GL_STATIC_DRAW)
  55.  
  56.     glEnableVertexAttribArray(0)
  57.     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 16 ,0)
  58.  
  59.     glBindBuffer(GL_ARRAY_BUFFER, 0)
  60.  
  61.     vertexShader = """
  62.    #version 400
  63.    layout(location = 0) in vec4 position;
  64.  
  65.    void main() {
  66.         gl_Position = position
  67.    }
  68.    """
  69.  
  70.     shader = create_vertex_shader(vertexShader)
  71.     glUseProgram(shader);
  72.  
  73.     # prm.draw_quad(30, [0.1, 0.8, 0.2, 1], [[-1/2, 1/2, 0],[1/2, 1/2, 0],
  74.     # [1/2, -1/2, 0],[-1/2, -1/2, 0]], 'fill')
  75.  
  76.     glutSwapBuffers()
  77.  
  78.  
  79.  
  80. def Init_GL_Window(num_window, width, height) :
  81.     glutInit()
  82.     glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
  83.     glutInitWindowSize(width, height)
  84.     glutInitWindowPosition(300, 300)
  85.     window = glutCreateWindow("My First app on OpenGL")
  86.  
  87.     glutDisplayFunc(draw)
  88.     glClearColor(.6, .2, .4 , 1.0) # background color
  89.     glutMainLoop()
  90.  
  91. def main() :
  92.     Init_GL_Window(0, width, height);
  93.  
  94. if __name__ == '__main__' : main() # указываем что этот фаил является главным
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement