require 'gl2 gles ide/qt/opengl'
coinsert 'jgl2 jgles qtopengl'
GL3LAB_WINDOW=: wd rplc&(' opengl ';' opengl version 4.1 ')^:('Darwin'-:UNAME) 0 : 0
pc gl3lab closeok;
minwh 300 300;cc g opengl flush;
)
gl3lab_run=: 3 : 0
wd GL3LAB_WINDOW
wd 'pshow'
OGL=: ".wd'qhwndc g' NB. perhaps unnecessary?
)
gl3lab_patch_version_issues=: 3 :0
NB. todo: search and replace to address any significant versioning issues.
y
)
GL3LAB_SHADER_VERTEX=: gl3lab_patch_version_issues 0 : 0
#version 410 core
in vec3 gl3lab_vertex;
in vec3 gl3lab_color;
out vec4 gl3lab_color_of_vertex;
void main(void){
gl_Position= vec4(gl3lab_vertex,1.0);
gl3lab_color_of_vertex= vec4(gl3lab_color,1.0);
}
)
GL3LAB_SHADER_FRAGMENT=: gl3lab_patch_version_issues 0 : 0
#version 410 core
in vec4 gl3lab_color_of_vertex;
out vec4 fragColor;
void main(void){
fragColor= gl3lab_color_of_vertex;
}
)
shaderprogram=: 0
gl3lab_g_initialize=: 3 : 0
shaderprogram=: 0
wglPROC''
'err prog'=. gl_makeprogram GL3LAB_SHADER_VERTEX; GL3LAB_SHADER_FRAGMENT
if. #err do. smoutput err return. end.
shaderprogram=: prog
)
gl3lab_g_paint=: gl3lab_default_paint=: 3 : 0
if. 0=shaderprogram do. return. end.
NB. glViewport 0 0,wh=: gl_qwh'' NB. https://docs.gl/gl3/glViewport
gl3lab_draw''
)
gl3lab_draw=: 3 : 0
glClearColor 0 0 1 0 NB. https://docs.gl/gl3/glClearColor
glClear GL_COLOR_BUFFER_BIT NB. https://docs.gl/gl3/glClear
glBegin GL_POLYGON NB. https://docs.gl/gl3/glBegin
glColor3d ?0 0 0 NB. https://docs.gl/gl3/glColor
glVertex3i 1,0,0 NB. https://docs.gl/gl3/glVertex
glVertex3i 0,1,0
glVertex3i _1,0,0
glEnd '' NB. https://docs.gl/gl3/glBegin
)
NB. press Ctrl+f to report frames/second
gl3lab_fctrl_fkey=: 3 : 0
start=. 6!:1''
for. i.100 do.
gl3lab_g_paint''
gl_paintx''
end.
time=. (6!:1'')-start
smoutput 'w h: ',(":gl_qwh''),' frames/sec: ',":100%time
)
gl3lab_run''