ProgrammingのTipなど

GLUTの基本

LinuxではGLUTをインストールしてください

LinuxでSWI-PrologとplOpenGLパッケージを使います
plOpenGLパッケージをインストールしてなければSWI-Prologにインストールしてください

SWI-Prologインタープリタを起動したら
$swipl sample1.pl
クエリでmain関数を呼び出すと
?-main.
プログラムが動作します
sample1.pl
:- use_foreign_library(foreign(plOpenGL)).
:- use_module(library(plOpenGL)).
:- use_module(library(plGL_defs)).
:- use_module(library(plGLU_defs)).
:- use_module(library(plGLUT_defs)).
:- use_module(library(plGL)).
:- use_module(library(plGLU)).
:- use_module(library(plGLUT)).

win_width(940).
win_height(680).

display:-
	kGL_COLOR_BUFFER_BIT(GL_COLOR_BUFFER_BIT),
	kGL_DEPTH_BUFFER_BIT(GL_DEPTH_BUFFER_BIT),
	kGL_TRIANGLES(GL_TRIANGLES),
	glClear(GL_COLOR_BUFFER_BIT \/ GL_DEPTH_BUFFER_BIT),
	glLoadIdentity,
	glTranslatef(0.0, 0.0, -5.0),
	glBegin(GL_TRIANGLES),
	glColor3f(0.0, 1.0, 0.0),
	glVertex3f( -1.0, -1.0, 0.0),
	glColor3f(1.0, 0.0, 0.0),
	glVertex3f( 0.0,1.0, 0.0),
	glColor3f(0.0, 0.0, 1.0),
	glVertex3f(1.0,-1.0, 0.0),
	glEnd,
	glutSwapBuffers.

keyboard(27,_,_) :- 	glutDestroyWindow.

reshape:-
	kGL_PROJECTION(GL_PROJECTION),
	kGL_MODELVIEW(GL_MODELVIEW),
	X is 0,
	Y is 0,
	win_width(W),
	win_height(H),
	ASPECT is float(W) / float(H),
	write("reshape OK"),nl,
	glViewport(X,Y,W,H),
	glMatrixMode(GL_PROJECTION),
	glLoadIdentity,
	gluPerspective(45.0,ASPECT,0.1,100.0),
	glMatrixMode(GL_MODELVIEW),
	glLoadIdentity.

init:-
	kGL_LEQUAL(GL_LEQUAL),
	kGL_DEPTH_TEST(GL_DEPTH_TEST),
	kGL_SMOOTH(GL_SMOOTH),
	kGL_PERSPECTIVE_CORRECTION_HINT(GL_PERSPECTIVE_CORRECTION_HINT),
	kGL_NICEST(GL_NICEST),
	write("init OK"),nl,
	glClearColor(0.9, 0.9, 0.9, 1.0),
	glShadeModel(GL_SMOOTH),
	glClearDepth(1.0),
	glEnable(GL_DEPTH_TEST),
	glDepthFunc(GL_LEQUAL),
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST).

idle:- 
	display.

main:-
	win_width(W),
	win_height(H),
	kGLUT_DOUBLE(GLUT_DOUBLE),
	kGLUT_RGB(GLUT_RGBA),
	kGLUT_DEPTH(GLUT_DEPTH),
	glutInit,
	glutInitDisplayMode(GLUT_DOUBLE \/ GLUT_RGBA \/ GLUT_DEPTH),
	glutInitWindowSize(W, H), 
	glutInitWindowPosition(0,0),
	glutCreateWindow('OpenGL sample1'),
	init,
	glutDisplayFunc,
	glutIdleFunc(idle),
	glutReshapeFunc,
	glutKeyboardFunc,
	glutMainLoop.

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます