前回は頂点配列にPythonの組み込みのタプルとリストを使用したが、numpyを使うこともできる。
座標変換はOpenGLの機能で行った方が簡単だが、場合によってはnumpyを使用できると便利である。
import sys from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * import numpy as np def display(): glClear(GL_COLOR_BUFFER_BIT) glEnableClientState(GL_VERTEX_ARRAY) glColor3f(1.0, 0.0, 0.0) glVertexPointerf(np.array([ [ 0.0, 1.0, 0.0], [-0.5, 0.0, 0.0], [ 0.5, 0.0, 0.0], ], dtype=np.float)) glDrawArrays(GL_TRIANGLES, 0, 3) glColor3f(0.0, 1.0, 0.0) glVertexPointerf(np.array([ [-0.5, 0.0, 0.0], [-0.5, -1.0, 0.0], [ 0.5, 0.0, 0.0], [ 0.5, -1.0, 0.0], ], dtype=np.float)) glDrawArrays(GL_TRIANGLE_STRIP, 0, 4) glFlush() def main(): glutInit(sys.argv) glutInitDisplayMode(GLUT_RGBA) glutInitWindowSize(300, 300) glutCreateWindow(b"sample3") glutDisplayFunc(display) glClearColor(0.0, 0.0, 1.0, 1.0) glutMainLoop() if __name__ == '__main__': main()
glVertexPointerfに渡すndarrayのshapeは、(N, 3)である必要がある。