상세 컨텐츠

본문 제목

파이썬에서 OpenGL 사용하기 (PyOpenGL)

개발 환경/Python

by cepiloth 2021. 2. 14. 18:04

본문

728x90
반응형

안녕하세요. 임이지입니다.
오늘의 포스팅은 파이선에서 OpenGL 을
사용할 수 있도록 PyOpenGL
설치 포스팅입니다.

바로 설치하러 가시죠 고고

 

먼저 커맨드 창으로 이동합니다.
pip 명령을 이용하여 두개를 설치 합니다.
PyOpenGL_acceleate는
하드웨어 가속을 한다고합니다.

pip install PyOpenGL

pip install PyOpenGL_accelerate

 

설치가 완료되면은 pip list 명령으로
정상 설치됐는지 아래 명령을 입력합니다

pip list

 

정상 설치가 되었다면 아래와 같이
설치된 버전을 확인할 수 있습니다.

 

PyCharm으로 이동하여 아래 코드를
적었으나 빌드 에러가 발생하였습니다.

import OpenGL
import glew 

 

일단 필자의 컴퓨터의 python 버전이
2.7과 3.8 이 두가지가 설치되어 있어서
생긴 문제로 Project Interpreter: 에서
개발 환경을 3.8 버전으로 변경했어요.

 

계속 빌드 에러가 발생 하였습니다.
PyCharm IDE - FILE - Setting 으로
이동하여 설정을 확인하였습니다.

 

하단에 Project Interpeter를 확인해 보니
이전에 설치했던 pip 와 setuptools가
포함되어 있지 않았어요.

 

상단의 + 버튼을 누르고
Available Packages 대화 상자로 이동하고
이전에 추가하려고 했던
OpenGL 패키지를 추가하였습니다.

 

근대 또 안된다. 환장하겠네ㅡ,.ㅡ
마음을 추수리고 다시 시작한다는 생각으로
PyCharm 하단에 Terminal 창으로 이동
pip install glfw 수동 설치하였습니다. 

pip install glfw

 

 

ㅠㅠ 오오 드디어 다 설치가 되었어요.
OpenGL 이 잘동작 하는지 확인 하기 위해서
아래 코드를 복사하여 코드를 입력하고
PyCharm 에서 실행하였습니다.

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, "My OpenGL window", None, None)
 
    if not window:
        glfw.terminate()
        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()


짜잔! 드디어 OpenGL 실행 성공!

 

728x90
반응형

'개발 환경 > Python' 카테고리의 다른 글

No module name 'neuralgym'  (0) 2021.05.06
jupyter notebook 동작 안함 kernelRestarter: restart failed  (0) 2021.05.04
No module named 'cv2' 해결  (0) 2021.04.27
Python 3.8.1 & PyCharm 설치  (0) 2019.12.31
Phython 3.6.5 (32-bit) 설치  (0) 2018.09.04

관련글 더보기

댓글 영역