2017-04-03 4 views
0

저는 얼마 동안 제 2d 라이브러리 jbox2d를 사용 해왔고 최근에는 총알 3d 물리 엔진에 대해 조사했습니다.CPU 사용법 : Bullet 대 Box2d 엔진

일반적인 쿼드 코어의 CPU 사용량은 i5 (총알이 멀티 스레드라고 가정)라고 할 수 있습니다.

심지어 jbox에서도 지연을 생성하고 너무 많은 프로세싱으로 완전히 충돌을 일으키기 쉽습니다. Bullet 엔진을 사용하여 3d physics 로의 전환에서 처리 능력이 얼마나 손실 될지 궁금합니다.

+0

확인 요청 : "bullet3D (C++)"와 "jbox2d (Java)"를 비교 하시겠습니까? – javaLover

+0

C + 라이브러리입니다. 그렇습니다. Bullet3D가 많은 플랫폼으로 이식 되었기 때문에 http://bulletphysics.org – bigcodeszzer

+0

을 부탁했습니다. – javaLover

답변

0

대형 면책 조항 : - 모두 물리 엔진에 대한

  • 내가 사용한 적이 멀티 스레드.
  • 하나는 2D이고 다른 하나는 3D이기 때문에 동일한 응용 프로그램을 만드는 데 사용하지 않았습니다.
  • 벤치 마크 대신 내 메모리으로 대답합니다. 나는 그것이 좋은 습관이 아니라고 인정한다.

나는 몸 (JBox2d에서 2D-rectange 글 머리 기호, 3 차원 큐브)의 ~ 100 양을 시뮬레이션 할 수있는 경우 : -

  • 릴리스 모드 (에 최적화 차례)로 컴파일

    • C++를 자바 ctrl+F11 이클립스
    • 컴퓨터를 사용하여 릴리스 모드 (안 디버그 모드)로 컴파일 두 심령 엔진 (minium 프로그램을 열)
    • 없음 제약 (글 머리 기호 Box2D의, btConstraint에 대한 공동) 스트레스 상태에 있지 않습니다.
    • 몸체가 흩어져 있습니다 (때로는 서로 충돌합니다). 스태킹되지 않습니다.
    • 모든 시체가 너무 멀리 있지 않습니다. 대략 1 개의 화면에 모두 표시됩니다.
    • 게임 로직이 있지만 너무 무겁지는 않습니다.
    • C++ 프로그램이 C에서 잘 코딩 ++ 스타일
    • 윈도우 7 최신 PC 게임 (2017)을 재생할 수 있습니다 사양 (new/delete, share_ptr 많이 남용하지).

    나는 C++ & Bullet - 프로그램 실행 속도 Java & Box2D 주변에 비해 기대할 수 있습니다 : - 3 회 (보수적) - 10 회 (공통).

    편집 : -

    난 그냥 몇 년 전에 내 이전 컴퓨터에서 실제 테스트 케이스를 기억했다.

    JBox2D에서 400 개의 직사각형을 실행할 때 Physic 측에서 10-30 %의 CPU로 60fps까지 거의 도달 할 수 없었습니다.
    그러나 C++ Bullet에 약 4000 큐브를 추가 할 수 있으며 Physic의 부분 (프로필)에서 10-30 % CPU로 약 60fps를 얻을 수 있습니다.

    (정확한 숫자를 기억할 수 없기 때문에 10-30 %를 기록합니다.)

  • +0

    일반적으로 수학이 더 복잡해야하기 때문에 box2d가 5-10x 빠르게 실행될 것으로 기대합니다. 특히 충돌의 경우에는 3d로 처리해야합니다. 그렇지 않다면 분명히 jbox가 매우 잘 실행되고 있지 않습니다. – bigcodeszzer

    +1

    @bigcodeszzer 예, 그 당시 저에게는 놀랍습니다. 그러나 다른 언어의 실적을 비교하고 있다고 생각하십시오. C++은 특정 상황에서 제대로 코딩되고 테스트되는 경우 Java보다 훨씬 빠르게 진행될 수 있습니다. 이것은 C++가 일반적으로 우승하는 경우 중 하나입니다. ...... 공정하게하려면'C++ Box2D'와'C++ Bullet'을 테스트 해주십시오. (나는 그것을 테스트 해본 적이 없다.) – javaLover