#coding:utf-8
#ウィンドウのサイズが変更された時に、glViewport、glOrthoの動作がわから
#なかったのでメモ。
#1. 流れ
#ウィンドウサイズ変更
#glutReshapeFunc(resize)
#resize()
#glViewport
#glLoadIdentity
#glOrtho
#2. 以下ファイルで検証
#window_viewport_2_.py
#coding:utf-8
#2010/04/24 09:51〜
#[2019-07-03]更新
#参考サイト
#GLUTによる「手抜き」OpenGL入門
#https://tokoik.github.io/opengl/libglut-old.html
# http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html#4
#これまでのプログラムでは, ウィンドウのサイズを変更すると表示内容もそれにつれて
#拡大縮小していました. これを表示内容の大きさを変えずに表示領域のみを広げるように
#します
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def display():
glClear(GL_COLOR_BUFFER_BIT)
#実際に色を塗る関数
glColor3d(1.0, 0.0, 0.0)
#これから描画する物の色を設定する
#通常なら画面いっぱいに描画するようにする
glBegin(GL_POLYGON)
glVertex2d(-1.0, -1.0)
glVertex2d(1.0, -1.0)
glVertex2d(1.0, 1.0)
glVertex2d(-1.0, 1.0)
glEnd()
glFlush()
def resize(w, h):
#libglut4.gif
#このコードではw,hはデフォルトで300,300
print w,h
#glViewportのデフォルトコード
glViewport(0,0,w,h)
#glOrthoを以下の四角形がギリギリ見える設定にして
#glViewportを変化させてみる。------------------------
#glViewport.png
#glOrtho(-w/290.0, w/290.0, -h/290.0, h/290.0, -1.0, 1.0)
#1. ウィンドウの左端下端よりw/2,h/2が描画領域とする。
# 0,0が左下端を示す。
# glViewport00-半分.png
#glViewport(0,0,w/2,h/2)
#2. ウィンドウの左端上端よりw/2,h/2が描画領域とする。
# glViewport0高さ半分-半分.png
#glViewport(0,h/2,w/2,h/2)
#3 glViewport の幅高さをウィンドウより大きくした。
# glViewport00-ウィンドウより大きく.png
glViewport(0,0,w+10,h+10)
#glViewportを変化させてみる。end -------------------
glLoadIdentity()
#glOrthoのデフォルトコード
#glOrtho_default.png
#glOrtho(-w/200.0, w/200.0, -h/200.0, h/200.0, -1.0, 1.0)
#以下glOrthoをなぶる。--------------------------------
#glOrtho.png
#1. 100として各数値を2倍にすると視野が2倍となる。
# つまり遠くから見た事になり図形が小さくなる
# glOrtho_2倍.png
#glOrtho(-w/100.0, w/100.0, -h/100.0, h/100.0, -1.0, 1.0)
#2. 各数値を1/2にすると視野が狭くなる。というより画面いっぱい
#glOrtho(-w/400.0, w/40書いて0.0, -h/400.0, h/400.0, -1.0, 1.0)
#3. 2で画面いっぱいになったのでもうそこし視野を広げてw,hの300
# と同じにしてみる。 -> 画面いっぱい
# glOrtho_ウィンドウと同じ.png
#glOrtho(-w/300.0, w/300.0, -h/300.0, h/300.0, -1.0, 1.0)
#glVertex2d(-1.0, -1.0)
#....
#....
#と画面いっぱいに図形を書いて glViewport(0,0,w,h)とウィンドウ
#全体を画像表示に使い glOrtho(-1.0, 1.0,-1.0, 1,0, -1.0, 1.0)
#と視野をした時図形は画面いっぱいに表示される。
#4. もう少し視野を広くして四角形が見られるようにする。
# glOrtho四角形見える.png
glOrtho(-w/290.0, w/290.0, -h/290.0, h/290.0, -1.0, 1.0)
#5. 左端の数値を大きく。-> 左側視野が広くなるがそれを
# -1.0, 1.0, -1.0, 1.0 の中に収めるため画像がx軸で縮んで見
# える。
# glOrtho左端の数値を大きく.png
#glOrtho(-w/150.0, w/290.0, -h/290.0, h/290.0, -1.0, 1.0)
#glOrthoをなぶる。 end -------------------------
検索キーワード
pyode
0 件のコメント:
コメントを投稿