2011-08-22 13 views
9

Infine, ho deciso di fare il mio proprio motore WebGL 3D da zero, comincio tutorial da http://www.khronos.org/webgl/ e http://learningwebgl.com e https://developer.mozilla.org/en/WebGLScegliere tra glMatrix, Sylvester e CanvasMatrix?

Ma il problema è che ogni esercitazione usata/dire libreria diversa per i calcoli Matrix, quindi sono confuso!

  • Khronos raccomandano CanvasMatrix (ma ora si passa a J3DI.js da Apple?)
  • Mozilla consiglia Sylvester tutta la strada!
  • Learningwebgl.com consiglia glMatrix

domanda è: Quale è adatto per il 3D WebGL Applicazioni, Grafici e giochi? (sia in materia di prestazioni e usabilità)

Grazie

risposta

7

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

Io uso glMatrix, e funziona benissimo. L'API è un po 'strana.

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 per 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); 

ma è veloce, supporta le operazioni che voglio, ed è semplice. La fonte è comprensibile.

Non ho esperienza con gli altri, però.

Aggiornamento:

Non ci sono parametri di riferimento più librerie disponibili al http://stepheneb.github.com/webgl-matrix-benchmarks/matrix_benchmark.html. In Chrome sul mio Mac, Closure vince molto bene. In Chrome sul mio PC, è molto più di un problema. Sto ancora usando glMatrix per ora, dal momento che vive in un unico file Javascript.

+0

Un peccato che non vengano confrontati con numeric.js e Sylvester. Secondo [il benchmark numeric.js] (http://www.numericjs.com/benchmark.html), Sylvester è in realtà più veloce di Google Closure per matrice 3x3 (e superiore) per moltiplicazione di matrice, almeno sul mio sistema (WinXP/32 con Chrome 20). – feklee

+1

Ho [appena aggiunto Sylvester] (https://github.com/feklee/webgl-matrix-benchmarks) al benchmark (richiesta pull in sospeso). Silvestro è * lento *. Perché è più veloce di Chiusura nel [benchmark numerico Javascript] (http://www.numericjs.com/benchmark.html)? La risposta: Quel benchmark testa le funzioni della matrice generica di Closure, non quelle dedicate a WebGL. – feklee

+1

beh, in glMatrix 2.2.0 vec3.create non accetta un parametro e la creazione di uno come mostrato qui creerà un vec3 di lunghezza zero, ma vec3.fromValues ​​(1,2,3) funzionerà – Octopus

Problemi correlati