I am trying to implement a minimal example of using a shader within J.
This means: no vertex shader. I just want to paint the screen a solid color.
This means: no #version header (which I believe is equivalent to #version 110).
Unfortunately, while this should work in principle, a number of
variations on the implementation have not worked for me.
I can show that opengl is working, using the glClear mechanism, but
while that accomplishes the "set the screen to a single color"
subtask, it does not get me my minimal shader which was the point of
the exercise.
Here's an example:
load 'pacman'
'install' jpkg 'graphics/gl2 api/gles'
require 'graphics/gl2 api/gles'
coinsert 'jgl2 jgles'
FORM=: 0 : 0
pc form closeok;
minwh 320 240; cc gl opengl flush;
)
fshader=: 0 :0
void main(void) {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
)
form_run=: 3 : 0
wd FORM
'err program'=: gl_makeprogram '';fshader
if.#err do. smoutput err return. end.
wd 'pshow'
gl_paint ''
)
form_gl_paint=: 3 : 0
smoutput 'painting'
glClearColor 0 0 1 1
glClear GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
glUseProgram program
)
form_run''
Now...
Part of the problem is that I do not know what is happening in libjqt,
and those entry points are not documented. But I do not necessarily
need that, I hope, not right now anyways.
Anyways, if I eliminate the glClearColor and glClear statements, the
image is black. But if the shader were to be used, the image would be
red.
How do I make this work?
Thanks,
--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm