Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

OpenGL初心者が3時間で基礎を学ぶ | その1

OpenGL初心者が3時間で基礎を学ぶ | その1

話している暇はありません。おそらくこのページを見に来た方はOpenGLを学ぶモチベーションがあることと思います。環境はPyOpenGL = Python + OpenGLです。前編はこちら

※ このページは「Python Programming in OpenGL」(PDF,英語)を日本語で解説してくのが目的です。

 初めてのPyOpenGLコード

helloは書きません。代わりにおしゃれなティーポットがでてきます。

# -*- coding: utf-8 -*-
##################################################################
# 
# ogl1.py
# 
# Chapter 4 Your First OpenGL Program
# http://www.math.uiuc.edu/~gfrancis/illimath/StanBlank/PyOpenGL.pdf
# 
##################################################################

""" パッケージのインポート(おまじない) """
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

def draw():
    """ 画面のクリア(おまじない) """
    glClear(GL_COLOR_BUFFER_BIT)

    """ 描画するオブジェクト(今日やること)"""
    # 適当に1つ選択
    glutWireTeapot(0.5)
    # glutSolidTeapot(0.5)
    # glutWireSphere(0.5, 10, 10)
    # glutSolidSphere(0.5, 10, 10)
    # glutWireCube(1.0)
    # glutSolidCube(1.0)
    # glutWireTetrahedron()
    # glutSolidTetrahedron()

    """ Flush!!(おまじない) """
    glFlush()

""" 
OpenGLの画面構成やら
(後に解説があるので、とりあえずはおまじない)
"""
glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutInitWindowSize(250,250)
glutInitWindowPosition(100,100)
glutCreateWindow("My Second OGL Program")
glutDisplayFunc(draw)
glutMainLoop()

結果。

Teapot

スクリーンショット 2015-04-21 21.27.00

 

Sphere

スクリーンショット 2015-04-21 21.59.14

Cube

スクリーンショット 2015-04-21 22.00.06

いろいろと書かれていますが、やっていることは一つです。

def draw():
    """ 画面のクリア(おまじない) """
    glClear(GL_COLOR_BUFFER_BIT)

    """ 描画するオブジェクト(今日やること)"""
    # 適当に1つ選択
    glutWireTeapot(0.5)
    # glutSolidTeapot(0.5)
    # glutWireSphere(0.5, 10, 10)
    # glutSolidSphere(0.5, 10, 10)
    # glutWireCube(1.0)
    # glutSolidCube(1.0)
    # glutWireTetrahedron()
    # glutSolidTetrahedron()

    """ Flush!!(おまじない) """
    glFlush()

ここの適当に選択の部分でTeapotoやSphere(球)などのオブジェクトを選んで表示させているだけです。括弧ないの数値はサイズ等のパラメータ。簡単。(大丈夫です、書けば5分でわかります)

 

とりあえず今回の学びは、描画ではなくて、おまじないの部分を知っておいてください。今後はこのおまじないをベースに拡張して行く事になります。

 

では。

その2へ続く

GLUT/freeglutによるOpenGL入門 (I・O BOOKS)

GLUT/freeglutによるOpenGL入門 (I・O BOOKS)

OpenGLによる3次元CGプログラミング

OpenGLによる3次元CGプログラミング

実例で学ぶゲーム3D数学

実例で学ぶゲーム3D数学

理系が恋に落ちたので証明してみた。(1) (メテオCOMICS)

理系が恋に落ちたので証明してみた。(1) (メテオCOMICS)

僕の彼女がマジメ過ぎる処女ビッチな件 (2) (角川コミックス・エース)

僕の彼女がマジメ過ぎる処女ビッチな件 (2) (角川コミックス・エース)