From e712fdb0a5d28fb1ea4958ef961c7114a128c6ff Mon Sep 17 00:00:00 2001 From: Andrey Sidorov Date: Tue, 11 Dec 2012 14:13:39 +1100 Subject: [PATCH] draw first frame immediately --- examples/opengl/test1.js | 46 ++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/examples/opengl/test1.js b/examples/opengl/test1.js index 3b1e1d2..9b0207b 100644 --- a/examples/opengl/test1.js +++ b/examples/opengl/test1.js @@ -18,7 +18,7 @@ x11.createClient(function(display) { var visuals = display.screen[0].depths[24]; for (visual in visuals) { if (visuals[visual].class == 4 || visuals[visual].class == 5) - break; + break; } var win = X.AllocID(); @@ -27,6 +27,28 @@ x11.createClient(function(display) { var ctx = X.AllocID(); GLX.CreateContext(ctx, visual, 0, 0, 0); GLX.MakeCurrent(win, ctx, 0, function(err, ctx) {}); // do we need to wait for reply here? + + function draw(ev) { + var gl = GLX.renderPipeline(); + gl.Enable(0x0B71); + gl.Viewport(0, 0, 800, 800); + gl.MatrixMode(0x1701); + gl.LoadIdentity(); + gl.Ortho(-30.0, 30.0, -30.0, 30.0, -300.0, 300.0); + //gl.Frustum(-30.0, 30.0, -30.0, 30.0, 30, 300.0); + + gl.Rotatef(ev.y, 0, 0, 1); + gl.Rotatef(ev.x, 1, 0, 0); + gl.MatrixMode(0x1700); + gl.ClearColor(0.3,0.3,0.3,0.0); + gl.Clear(0x00004000|0x00000100); + gl.ShadeModel(0x1D01); + gl.LoadIdentity(); + gl.CallList(listId); + gl.render(ctx); + GLX.SwapBuffers(ctx, win); + } + GLX.GenLists(ctx, 1, function(err, startListIndex) { listId = startListIndex; GLX.NewList(ctx, listId, 0x00001300); @@ -40,28 +62,10 @@ x11.createClient(function(display) { gl.End(); gl.render(ctx); GLX.EndList(ctx); + draw({x: 10, y: 10}); }); - X.on('event', function(ev) { - var gl = GLX.renderPipeline(); - gl.Enable(0x0B71); - gl.Viewport(0, 0, 800, 800); - gl.MatrixMode(0x1701); - gl.LoadIdentity(); - gl.Ortho(-30.0, 30.0, -30.0, 30.0, -300.0, 300.0); - //gl.Frustum(-30.0, 30.0, -30.0, 30.0, 30, 300.0); - - gl.Rotatef(ev.y, 0, 0, 1); - gl.Rotatef(ev.x, 1, 0, 0); - gl.MatrixMode(0x1700); - gl.ClearColor(0.3,0.3,0.3,0.0); - gl.Clear(0x00004000|0x00000100); - gl.ShadeModel(0x1D01); - gl.LoadIdentity(); - gl.CallList(listId); - gl.render(ctx); - GLX.SwapBuffers(ctx, win); - }); + X.on('event', draw); }); X.on('error', function(err) { console.log(err); }); });