V8-GLより。
まだ開発途中ではあるのだが、Googleが開発したJavaScriptEngineであるV8を使ってOpenGLが動作するようになった。 ハードウェアアクセラレータも利用しているので、結構早いらしい。 OpenGL APIの実装は80%程が完了しているそうだ。
ソースコードはphilogb’s v8-gl at master – GitHubで公開しているので、ダウンロードしてクールなサンプルを作って欲しいとの事。ブラウザでOpenGL使えるとなると、いろいろできるので夢は広がる。3D CADも作れるようになる。これ、おもしろそうだな。
サンプルソース
そのままOpenGLなコード。その前に、OpenGLをJavaScriptで書ける事自体が素晴しい。
//Add array iteration method Array.prototype.each = function(f) { var len = this.length; for ( var i = 0; i < len; i++) f(this[i]); }; //Initializes 3D rendering function initRendering() { "DEPTH_TEST COLOR_MATERIAL LIGHTING LIGHT0 NORMALIZE COLOR_MATERIAL" .split(" ").each(function(elem) { Gl.Enable(Gl[elem]); }); } //angle variable var angle = 0; //Draws the 3D scene function drawScene() { //Set global color and drawing properties Gl.Clear(Gl.COLOR_BUFFER_BIT | Gl.DEPTH_BUFFER_BIT); Gl.MatrixMode(Gl.MODELVIEW); Gl.LoadIdentity(); Gl.Translatef(0.0, 0.0, -5.0); //Set diffuse and positioned lights Gl.LightModelfv(Gl.LIGHT_MODEL_AMBIENT, [0.3, 0.3, 0.3, 1.0]); Gl.Lightfv(Gl.LIGHT0, Gl.DIFFUSE, [0.4, 0.4, 0.4, 1.0]); Gl.Lightfv(Gl.LIGHT0, Gl.POSITION, [5.0, 5.0, 5.0, 1.0]); //Rotate and plot Icosahedron Gl.Rotatef(angle, 1.0, 1.0, 1.0); Gl.Color3f(0.5, 0.0, 0.8); Glut.SolidIcosahedron(2.5); //Render Glut.SwapBuffers(); } (function() { //Initialize Glut Glut.Init(); Glut.InitDisplayMode(Glut.DOUBLE | Glut.RGB | Glut.DEPTH); Glut.InitWindowSize(400, 400); //Set the window size //Create the window Glut.CreateWindow("OpenGL on V8 baby!"); initRendering(); //Set drawing callback Glut.DisplayFunc(drawScene); //Set resize window callback Glut.ReshapeFunc(function(w, h) { var gl = { 'Viewport': [0, 0, w, h], 'MatrixMode': [Gl.PROJECTION], 'LoadIdentity': [] }; for (var i in gl) Gl[i].apply(this, gl[i]); Glu.Perspective(45.0, w / h, 1.0, 200.0); }); //Set timeout callback Glut.TimerFunc(25, function() { angle += 2.0; if (angle > 360) angle -= 360; Glut.PostRedisplay(); Glut.TimerFunc(25, arguments.callee, 0); }, 0); //Start the main loop. Glut.MainLoop(); })();




2009年12月07日 14:28
[...] This post was mentioned on Twitter by igi, 夜猫 and topsy_top20k, topsy_top20k_ja. topsy_top20k_ja said: ブラウザでOpenGLを動かす方法をさらって見た[http://blog.cnu.jp/2009/06/23/v8-gl/]ステキだが、データを [...]