2011-08-22 31 views
9

Cuối cùng, tôi quyết định làm cơ WebGL 3D của riêng tôi từ mặt đất lên, tôi bắt đầu hướng dẫn từ http://www.khronos.org/webgl/http://learningwebgl.comhttps://developer.mozilla.org/en/WebGLLựa chọn giữa glMatrix, Sylvester và CanvasMatrix?

Nhưng vấn đề là mỗi hướng dẫn sử dụng/đề nghị thư viện khác nhau để tính toán ma trận, vì vậy tôi bối rối!

  • Khronos khuyên CanvasMatrix (nhưng bây giờ họ chuyển sang J3DI.js từ Apple?)
  • Mozilla khuyên Sylvester tất cả các cách!
  • Learningwebgl.com khuyên glMatrix

Câu hỏi là: Đó là một trong rất thích hợp cho các ứng dụng 3D WebGL, Charts và tầm? (Cả hiệu suất và khả năng sử dụng các vấn đề)

Cảm ơn

Trả lời

7

Nhìn vào http://glmatrix.googlecode.com/hg/benchmark/matrix_benchmark.html

tôi sử dụng glMatrix, và nó hoạt động tốt. API hơi lạ một chút.

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

Hoặc cho 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); 

Nhưng nó nhanh, nó hỗ trợ các hoạt động tôi muốn, và đó là đơn giản. Nguồn dễ hiểu.

Tôi chưa có kinh nghiệm với những người khác.

Cập nhật:

Có tiêu chuẩn của thư viện nhiều hơn có sẵn tại http://stepheneb.github.com/webgl-matrix-benchmarks/matrix_benchmark.html. Trong Chrome trên máy Mac của tôi, Closure đóng vai trò khá dễ dàng. Trong Chrome trên máy tính của tôi, đó là nhiều hơn một toss-up. Tôi vẫn đang sử dụng glMatrix cho đến bây giờ, vì nó tồn tại trong một tệp Javascript duy nhất.

+0

Một điều đáng tiếc là họ không đạt chuẩn so với numeric.js và Sylvester. Theo [tiêu chuẩn số.js] (http://www.numericjs.com/benchmark.html), Sylvester thực sự nhanh hơn Google Closure cho ma trận 3x3 (và cao hơn) bằng phép nhân ma trận, ít nhất là trên hệ thống của tôi (WinXP/32 với Chrome 20). – feklee

+1

Tôi [vừa thêm Sylvester] (https://github.com/feklee/webgl-matrix-benchmarks) vào điểm chuẩn (yêu cầu kéo đang chờ xử lý). Sylvester là * chậm *. Tại sao nó nhanh hơn Đóng cửa trong [Điểm chuẩn Javascript số] (http://www.numericjs.com/benchmark.html)? Câu trả lời: Điểm chuẩn đó kiểm tra các hàm ma trận chung của Closure, chứ không phải các chức năng dành riêng cho WebGL. – feklee

+1

tốt, trong glMatrix 2.2.0 vec3.create không lấy tham số và tạo tham số như được hiển thị ở đây sẽ tạo vec3 có độ dài bằng không, nhưng vec3.fromValues ​​(1,2,3) sẽ hoạt động – Octopus

Các vấn đề liên quan