43 lines
1.1 KiB
Factor
43 lines
1.1 KiB
Factor
! Copyright (c) 2012 Anonymous
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: kernel math math.rectangles opengl.gl sequences ui
|
|
ui.gadgets ui.render ;
|
|
IN: rosetta-code.opengl
|
|
|
|
! http://rosettacode.org/wiki/OpenGL
|
|
|
|
! In this task, the goal is to display a smooth shaded triangle
|
|
! with OpenGL.
|
|
|
|
TUPLE: triangle-gadget < gadget ;
|
|
|
|
: reshape ( width height -- )
|
|
[ 0 0 ] 2dip glViewport
|
|
GL_PROJECTION glMatrixMode
|
|
glLoadIdentity
|
|
-30.0 30.0 -30.0 30.0 -30.0 30.0 glOrtho
|
|
GL_MODELVIEW glMatrixMode ;
|
|
|
|
: paint ( -- )
|
|
0.3 0.3 0.3 0.0 glClearColor
|
|
GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor glClear
|
|
GL_SMOOTH glShadeModel
|
|
glLoadIdentity
|
|
-15.0 -15.0 0.0 glTranslatef
|
|
GL_TRIANGLES glBegin
|
|
1.0 0.0 0.0 glColor3f 0.0 0.0 glVertex2f
|
|
0.0 1.0 0.0 glColor3f 30.0 0.0 glVertex2f
|
|
0.0 0.0 1.0 glColor3f 0.0 30.0 glVertex2f
|
|
glEnd
|
|
glFlush ;
|
|
|
|
M: triangle-gadget pref-dim* drop { 640 480 } ;
|
|
M: triangle-gadget draw-gadget*
|
|
rect-bounds nip first2 reshape paint ;
|
|
|
|
: triangle-window ( -- )
|
|
[ triangle-gadget new "Triangle" open-window ] with-ui ;
|
|
|
|
MAIN: triangle-window
|
|
|