2011-08-22 17 views
9

Finalmente, decidí hacer mi propio motor WebGL 3D desde el principio, comienzo tutoriales de http://www.khronos.org/webgl/ y http://learningwebgl.com y https://developer.mozilla.org/en/WebGL¿Elegir entre glMatrix, Sylvester y CanvasMatrix?

Pero el problema es que cada tutorial usado/recomendar diferentes biblioteca para los cálculos de la matriz, así que estoy ¡confuso!

  • Khronos recomiendan CanvasMatrix (pero ahora cambian a J3DI.js de Apple?)
  • Mozilla recomiendan Sylvester hasta el final!
  • Learningwebgl.com recomiendan glMatrix

La pregunta es: ¿Cuál es muy adecuado para aplicaciones 3D WebGL, gráficos y juegos? (ambos de rendimiento y usabilidad asuntos)

, gracias

Respuesta

7

Mira http://glmatrix.googlecode.com/hg/benchmark/matrix_benchmark.html

utilizo glMatrix, y funciona bien. La API es un poco rara.

var in = vec3.create([1, 2, 3]); 

//overwrite 'in' in-place 
vec3.scale(in, 2); 

//write output to a different vector 
var out = vec3.create(); 
vec3.scale(in, 2, out); 

O para glMatrix 2

var in = vec3.fromValues(1, 2, 3); 

//overwrite 'in' in-place 
vec3.scale(in, in, 2); 

//write output to a different vector 
var out = vec3.create(); 
vec3.scale(out, in, 2); 

pero es rápido, es compatible con las operaciones que quiero, y es sencillo. La fuente en entendible.

No tengo experiencia con los demás, sin embargo.

Actualización:

Hay puntos de referencia de más bibliotecas disponibles en http://stepheneb.github.com/webgl-matrix-benchmarks/matrix_benchmark.html. En Chrome en mi Mac, Closure gana muy fácilmente. En Chrome en mi PC, es mucho más que una sacudida. Todavía estoy usando glMatrix por ahora, ya que vive en un solo archivo Javascript.

+0

Una pena que no se comparen con numeric.js y Sylvester. Según [el punto de referencia numeric.js] (http://www.numericjs.com/benchmark.html), Sylvester es en realidad más rápido que Google Closure para matrices 3x3 (y superiores) mediante multiplicaciones de matrices, al menos en mi sistema (WinXP/32 con Chrome 20). – feklee

+1

I [acaba de agregar a Sylvester] (https://github.com/feklee/webgl-matrix-benchmarks) al punto de referencia (la solicitud de extracción está pendiente). Sylvester es * lento *. ¿Por qué es más rápido que Closure en el [punto de referencia numérico de Javascript] (http://www.numericjs.com/benchmark.html)? La respuesta: ese benchmark prueba las funciones matriciales genéricas de Closure, no las dedicadas a WebGL. – feklee

+1

bueno, en glMatrix 2.2.0 vec3.create no toma un parámetro y crear uno como se muestra aquí creará un vec3 de longitud cero, pero vec3.fromValues ​​(1,2,3) funcionará – Octopus

Cuestiones relacionadas