JRuby+LWJGLでGLSLを試してみる
はじめてということで、手始めに動くかどうかだけ試します。
GLSLのfragment側で色を緑にしてみます。
$:.unshift File.dirname(__FILE__) require 'java' require 'lwjgl.jar' import org.lwjgl.opengl.Display import org.lwjgl.opengl.DisplayMode GL11 = org.lwjgl.opengl.GL11 GL20 = org.lwjgl.opengl.GL20 Display.setDisplayMode DisplayMode.new(300, 200) Display.setTitle "sample" Display.create v_str = <<VERT void main(void) { gl_Position = ftransform(); } VERT f_str = <<FRAG void main(void) { gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); } FRAG vid = GL20.glCreateShader(GL20::GL_VERTEX_SHADER) GL20.glShaderSource(vid, v_str) GL20.glCompileShader(vid) fid = GL20.glCreateShader(GL20::GL_FRAGMENT_SHADER) GL20.glShaderSource(fid, f_str) GL20.glCompileShader(fid) pid = GL20.glCreateProgram GL20.glAttachShader(pid, vid) GL20.glAttachShader(pid, fid) GL20.glLinkProgram(pid) linked = GL20.glGetProgram(pid, GL20::GL_LINK_STATUS) puts "linked err." if linked==GL11::GL_FALSE GL20.glUseProgram(pid) GL11.glClearColor 0.1,0.1,0.1,1 while !Display.isCloseRequested GL11.glClear GL11::GL_COLOR_BUFFER_BIT #GL11.glColor3d(1,0,0) GL11.glBegin GL11::GL_POLYGON GL11.glVertex2d(-0.5,-0.5) GL11.glVertex2d( 0.5,-0.5) GL11.glVertex2d( 0.5, 0.5) GL11.glVertex2d(-0.5, 0.5) GL11.glEnd Display.update end
とくに難しいことなく動きました。
めでたしめでたし。
とりあえず、ここまで。