Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(693)

Unified Diff: samples/simplegl/web/raytrace.dart

Issue 11883013: Refactored OpenGL embedder that works on Android, Mac or Linux. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: samples/simplegl/web/raytrace.dart
===================================================================
--- samples/simplegl/web/raytrace.dart (revision 16976)
+++ samples/simplegl/web/raytrace.dart (working copy)
@@ -171,8 +171,10 @@
var ratio;
void initShaders() {
- var vertexShader = loadShader(WebGLRenderingContext.VERTEX_SHADER, VERTEX_PROGRAM);
- var fragmentShader = loadShader(WebGLRenderingContext.FRAGMENT_SHADER, FRAGMENT_PROGRAM);
+ var vertexShader = loadShader(WebGLRenderingContext.VERTEX_SHADER,
+ VERTEX_PROGRAM);
+ var fragmentShader = loadShader(WebGLRenderingContext.FRAGMENT_SHADER,
+ FRAGMENT_PROGRAM);
shaderProgram = gl.createProgram();
if (shaderProgram == 0) {
@@ -202,6 +204,13 @@
sphere3Center = gl.getUniformLocation(shaderProgram, "sphere3Center");
}
+// TODO(gram): This should go away at some point. For now it is a kludge to allow
vsm 2013/01/16 05:16:02 line len
+// use to run same .dart file with WebGL and natively; the WebGL version will
+// set this to (a) => new Float32Array.fromList(a).
+var wrapVertexArray = false;
+
+wrapVertices(a) => wrapVertexArray ? (new Float32Array.fromList(a)) : a;
+
void initBuffers() {
var vertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(WebGLRenderingContext.ARRAY_BUFFER, vertexPositionBuffer);
@@ -212,22 +221,26 @@
-1.0, -1.0,
];
- gl.bufferData(WebGLRenderingContext.ARRAY_BUFFER, new Float32Array.fromList(vertices), WebGLRenderingContext.STATIC_DRAW);
- gl.vertexAttribPointer(aVertexPosition, 2, WebGLRenderingContext.FLOAT, false, 0, 0);
+ gl.bufferData(WebGLRenderingContext.ARRAY_BUFFER, wrapVertices(vertices),
+ WebGLRenderingContext.STATIC_DRAW);
+ gl.bindBuffer(WebGLRenderingContext.ARRAY_BUFFER, vertexPositionBuffer);
+ gl.vertexAttribPointer(aVertexPosition, 2, WebGLRenderingContext.FLOAT,
+ false,0, 0);
var plotPositionBuffer = gl.createBuffer();
gl.bindBuffer(WebGLRenderingContext.ARRAY_BUFFER, plotPositionBuffer);
- gl.vertexAttribPointer(aPlotPosition, 3, WebGLRenderingContext.FLOAT, false, 0, 0);
+ gl.vertexAttribPointer(aPlotPosition, 3, WebGLRenderingContext.FLOAT,
+ false, 0, 0);
}
class Vector {
var x;
var y;
var z;
-
Vector(this.x, this.y, this.z);
}
+// TODO(gram): This should be using vector_math.
crossProd(v1, v2) =>
new Vector(v1.y*v2.z - v2.y*v1.z,
v1.z*v2.x - v2.z*v1.x,
@@ -285,14 +298,13 @@
var cameraBotRight = vectSub(vectSub(cameraCenter, cameraUp),
vectMul(cameraLeft, ratio));
- // corners = [1.2, 1, -12, -1.2, 1, -12, 1.2, -1, -12, -1.2, -1, -12];
var corners = [];
pushVec(cameraTopRight, corners);
pushVec(cameraTopLeft, corners);
pushVec(cameraBotRight, corners);
pushVec(cameraBotLeft, corners);
- var cornersArray = new Float32Array.fromList(corners);
- gl.bufferData(WebGLRenderingContext.ARRAY_BUFFER, cornersArray,
+
+ gl.bufferData(WebGLRenderingContext.ARRAY_BUFFER, wrapVertices(corners),
WebGLRenderingContext.STATIC_DRAW);
gl.uniform3f(cameraPos, cameraFrom.x, cameraFrom.y, cameraFrom.z);
@@ -308,11 +320,12 @@
}
}
-void setup() {
+void setup(int width, int height) {
initShaders();
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clearDepth(1.0);
initBuffers();
+ resize(width, height);
}
void resize(int width, int height) {
@@ -322,6 +335,21 @@
drawScene();
}
-void draw() {
+void update() {
drawScene();
}
+
+/*
+onMotionDown(num when, num x, num y) {}
+onMotionUp(num when, num x, num y) {}
+onMotionMove(num when, num x, num y) {}
+onMotionCancel(num when, num x, num y) {}
+onMotionOutside(num when, num x, num y) {}
+onMotionPointerDown(num when, num x, num y) {}
+onMotionPointerUp(num when, num x, num y) {}
+onKeyDown(num when, int flags, int keycode, int metastate, int repeat) {}
+onKeyUp(num when, int flags, int keycode, int metastate, int repeat) {}
+onKeyMultiple(num when, int flags, int keycode, int metastate, int repeat) {
+}
+*/
vsm 2013/01/16 05:16:02 delete?
+

Powered by Google App Engine
This is Rietveld 408576698