이 코드 형식은 &이며, 아마도 tradeoffs를 다루고 있습니다. 아마 분명합니다.OpenGL 및 자체 라이브러리에서 벡터 (및 다른 구조체)를 전달합니다.
스토리 :
것은 내가 지금 처리하는 방법을 잘 모르겠습니다 차이가 발생 자바, C++에서 마이그레이션.
모든 OpenGL 호출에서 전달 된 배열의 구조를 함수에 알려주는 오프셋 및 추가 매개 변수가있는 배열을 전달합니다. 예를 들어 glDrawArrays을 가져 가십시오.
그래서 드로잉을 할 때 모든 정점을 배열, 즉 FloatBuffer로 갖는 것이 가장 좋습니다. 그러나 물리학 호출에 대한 정점이 필요합니다.
질문 :
나는 그들이 OpenGL을 함수에 전달 될 수 있기 때문에 Vec3f 및 Point3f 클래스를 다루는 모든 업데이 트를 물리학에 대한 별도의 버퍼를 생성하고 FloatBuffer에 그 결과를 복사해야합니다 그들은 수 있기 때문에 (또는 그럴 수 있습니까?).
또는 배열과 함께 오프셋을 사용하는 구조체를 다루기 위해 별도의 클래스를 사용해야합니까?
public static void addVec3(float[] vec3in_a, int offset_a, float[] vec3in_b, int offset_b, float[] vec3out, int offset_out)
오프셋은 무엇을 나타냅니다. 그들은 vec3 크기를 고려해야하고 적절히 이동해야합니다 (offset_a * = 3). Vec3의 배열이 정상적으로 동작하거나 정상적인 부동 배열로 오프셋되어야합니다.
당신 : 당신은 GPU의 물리 계산을 할 수 없습니다
더 설명하려면 : 나는 안드로이드 용으로 개발 중입니다. 이제는 FB가 시스템 메모리이고 부동 소수점 배열이 Java 가상 공간에 있다는 것을 알고 있습니다. 하나의 큰 배치로 복사하면 성능이 향상됩니다. 그러나 그 해답은 주목 받았다. 감사:) – Greg