Me interesa escribir una aplicación OpenGL en JOGL 2, usando sombreadores en lugar de la interconexión de funciones fijas. Tendré que hacer una buena parte de la Matriz Matriz de precisión doble 4x4 en el lado de la CPU, para reemplazar el negocio de push/pop/transform de la tubería de función fija. La misma aplicación también incluirá algún código de aprendizaje automático que requerirá operaciones en matrices grandes. He mirado JBLAS para cosas de aprendizaje automático (y dado que ya estoy usando JNI para JOGL, hay desventajas mínimas para depender de otra biblioteca nativa)), pero no estoy seguro de si es la mejor opción para GL- matrices relacionadas. ¿Pensamientos?Biblioteca de matriz de Java rápida adecuada para JOGL + matriz matemática genérica?
Respuesta
¿Sólo se necesita para manipular matrices de 4x4? La mayoría de las bibliotecas de álgebra lineal de propósito general han sido altamente optimizadas para matrices grandes con poca atención puesta en las más pequeñas. Parte de la razón por la que escribí EJML fue abordar este problema y motivar a otros desarrolladores a optimizar las matrices pequeñas. EJML es el más rápido para matrices pequeñas, pero es posible hacerlo mejor.
Si realmente necesita mucho rendimiento, no usaría ninguno de los sospechosos habituales y, en su lugar, lanzaría su propio código altamente especializado. Debería ser posible superar las bibliotecas de propósito general varias veces.
ejemplo simple para la matriz de 2x2:
public class Matrix2x2 {
double a11,a12,a21,a22;
}
public static void mult(Matrix2x2 a , Matrix2x2 b , Matrix2x2 c) {
c.a11 = a.a11*b.a11 + a.12*b.a21;
c.a12 = a.a11*b.a12 + a.12*b.a22;
c.a21 = a.a21*b.a11 + a.22*b.a21;
c.a22 = a.a21*b.a12 + a.22*b.a22;
}
Nota No he tratado de compilar este código, es sólo un ejemplo.
Por un lado, mirando a la documentación de la API de JBLAS Creo que no es la "mejor opción" para hacer frente a las matrices de OpenGL porque echa de menos algunas funciones fundamentales:
para conseguir algo en la pantalla con OpenGL se le necesita las matrices de proyección en perspectiva habituales y posiblemente algo para calcular las transformaciones afines en sus objetos. Pero el primero es solo unos pocos LOC que puedes obtener a través de copypasta y el último es trivial porque Java ya los tiene on board, así que creo que estás listo para usar lo que tienes.
Estos puntos de referencia pueden ayudarlo a elegir algo que satisfaga sus necesidades de rendimiento.
Probablemente desee utilizar diferentes bibliotecas para el aprendizaje automático y OpenGL.
OpenGL se beneficiará significativamente del uso de matrices pequeñas, rápidas y optimizadas que tienen un diseño especial para vectores 2D, 3D y 4D. Estos se incluyen generalmente en su biblioteca OpenGL o motor de juego, por ejemplo LWJGL incluye Matrix4f y amigos. Existen otras funciones relacionadas con los gráficos que estas bibliotecas también proporcionarán, p. es posible que desee cuaterniones para las rotaciones.
Los algoritmos de aprendizaje automático, por otro lado, querrán matrices grandes optimizadas para cómputo paralelo. Algo como Parallel Colt sería apropiado.
- 1. ¿Cuál es la biblioteca matemática de vector/matriz más rápida en el juego C para iPhone?
- 2. matriz java lista rápida
- 3. Matriz de lista genérica
- 4. biblioteca de matriz opencl
- 5. Exponencialización de matriz rápida
- 6. Finanzas cuantitativas/biblioteca matemática para Java
- 7. Error: creación de matriz genérica
- 8. Inicializar una matriz genérica de Java de tipo genérico
- 9. Biblioteca matemática de alto rendimiento para .NET/C# y Java
- 10. Biblioteca matemática más rápida que glibc en x86_64/linux?
- 11. matriz java para ordenar: forma rápida de obtener una lista ordenada de los índices de una matriz
- 12. matriz genérica de niño genérico C#
- 13. Java o Python para matemática?
- 14. obtener empadronador genérica de una matriz
- 15. matriz de multiplicación de java (FAST)
- 16. ¿Cuál es la mejor biblioteca matemática para usar con Java?
- 17. ¿Existe una biblioteca matemática vectorial/matriz/cuaternión fácil de usar en C puro?
- 18. Matlab matriz de struct: Asignación rápida
- 19. Biblioteca de criptografía adecuada para Objective-C
- 20. Matriz Biblioteca estándar
- 21. Biblioteca rápida de gráficos
- 22. Una forma adecuada de crear una matriz en C++
- 23. Java: seguridad Tipo: Se crea una matriz genérica de A para un parámetro varargs
- 24. Biblioteca matemática BCD para números grandes arbitrarios?
- 25. Comparador Java para matriz de bytes (lexicográfica)
- 26. Eliminar un elemento de una matriz (Java)
- 27. ¿Implementación de cambio de matriz rápida en C#?
- 28. biblioteca de plantillas ublas vs. matriz (MTL4)
- 29. Pregunta de matriz 2D Java
- 30. Programación de Jogl Shader