ビューポートを設定する

Last-modified: 2007-05-24 (木) 19:46:28

開いたウィンドウ上の、実際の描画領域を定義する。
ビューポートとウィンドウの概念については、ビューポートとウィンドウを参照のこと。

コード

#include <GL/glut.h>
void display03( void){
	glClear( GL_COLOR_BUFFER_BIT);
	glBegin( GL_POLYGON);
		glColor3d( 1.0, 0.0, 0.0);
		glVertex2d( -0.9, -0.9);
		glColor3d( 0.0, 1.0, 0.0);
		glVertex2d(  0.9, -0.9);
		glColor3d( 0.0, 0.0, 1.0);
		glVertex2d(  0.9,  0.9);
		glColor3d( 1.0, 1.0, 0.0);
		glVertex2d( -0.9,  0.9);
	glEnd();
	glFlush();
}
void resize( int w, int h){
	glViewport( 0, 0, w, h);
	glLoadIdentity();
	glOrtho( -w / 200.0, w / 200.0, -h / 200.0, h / 200.0, -1.0, 1.0);
}
void init( void){
	glClearColor( 1.0, 1.0, 1.0, 1.0);
}
int main( int argc, char **argv){
	glutInit( &argc, argv);
	glutInitDisplayMode( GLUT_RGBA);
	glutCreateWindow( "Draw Line");
	glutDisplayFunc( display03);
	glutReshapeFunc( resize);
	init();
	glutMainLoop();
	return 0;
}

実行結果

viewport.PNG

glut関数

void glViewport(GLint x, GLint y, GLsizei w, GLsizei h)
ビューポート(ウィンドウ中の描画領域)を設定する。x, yにはビューポートの左下隅の座標を、w, hにはそれぞれ幅、高さを設定する。
void glLoadIdentity(void)
座標変換行列を単位行列で初期化する。
void glOrtho(GLdouble l, GLdouble r, GLdouble b, GLdouble t, GLdouble n, GLdouble f)
glutReshapeFunc(void (*func)(int w, int h))
ウィンドウがリサイズされたときに実行する関数のポインタを指定する。