Форум программистов, компьютерный форум, киберфорум
Наши страницы
8Observer8
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Инструкция по установке всего необходимого для работы с шейдерным OpenGL из языка Python

Запись от 8Observer8 размещена 25.03.2018 в 21:07
Обновил(-а) 8Observer8 25.03.2018 в 21:11

Запускаем терминал от администратора и вводим команды:
Цитата:
pip install glfw
pip install pyopengl
pip install pyrr
pip install pillow
pip install pyassimp
Кратко, что это за библиотеки:
  • glfw - окно, обработка событий от мыши и клавиатуры
  • pyopengl - библиотека для работы с OpenGL
  • pyrr - библиотека линейной алгебры
  • pillow - библиотека для загрузки изображений
  • pyassimp - библиотека для загрузки 3D моделей

Видео инструкция по работе с PyAssimp: https://www.youtube.com/watch?v=Nbbf...f8uCtA4oXdXBJm
youtube


Программа рисующая треугольник:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import glfw
from OpenGL.GL import *
import OpenGL.GL.shaders
import numpy
 
def main():
 
    # initialize glfw
    if not glfw.init():
        return
 
    window = glfw.create_window(800, 600, "Triangle", None, None)
 
    if not window:
        glfw.termimate()
        return
 
    glfw.make_context_current(window)
 
    #           positions           colors
    triangle = [-0.5, -0.5, 0.0,    1.0, 0.0, 0.0,
                0.5, -0.5, 0.0,     0.0, 1.0, 0.0,
                0.0, 0.5, 0.0,      0.0, 0.0, 1.0]
 
    triangle = numpy.array(triangle, dtype=numpy.float32)
 
    vertex_shader = """
    #version 330
    in vec3 position;
    in vec3 color;
 
    out vec3 newColor;
 
    void main() {
        gl_Position = vec4(position, 1.0f);
        newColor = color;
    }
    """
 
    fragment_shader = """
    #version 330
    in vec3 newColor;
 
    out vec4 outColor;
 
    void main() {
        outColor = vec4(newColor, 1.0f);
    }
    """
 
    shader = OpenGL.GL.shaders.compileProgram(OpenGL.GL.shaders.compileShader(vertex_shader, GL_VERTEX_SHADER),
                                              OpenGL.GL.shaders.compileShader(fragment_shader, GL_FRAGMENT_SHADER))
 
    VBO = glGenBuffers(1)
    glBindBuffer(GL_ARRAY_BUFFER, VBO)
    glBufferData(GL_ARRAY_BUFFER, 72, triangle, GL_STATIC_DRAW)
 
    position = glGetAttribLocation(shader, "position")
    glVertexAttribPointer(position, 3, GL_FLOAT, GL_FALSE, 24, ctypes.c_void_p(0))
    glEnableVertexAttribArray(position)
 
    color = glGetAttribLocation(shader, "color")
    glVertexAttribPointer(color, 3, GL_FLOAT, GL_FALSE, 24, ctypes.c_void_p(12))
    glEnableVertexAttribArray(color)
 
    glUseProgram(shader)
 
    glClearColor(0.2, 0.3, 0.2, 1.0)
 
    while not glfw.window_should_close(window):
        glfw.poll_events()
 
        glClear(GL_COLOR_BUFFER_BIT)
 
        glDrawArrays(GL_TRIANGLES, 0, 3)
 
        glfw.swap_buffers(window)
 
    glfw.terminate()
 
if __name__ == "__main__":
    main()
Размещено в Без категории
Просмотров 375 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru