2012-07-02 3 views
1

C#의 내장 Vector3 구조체를 부동 소수점 Singles를 사용하지 않고 대신 성능상의 이유로 int 또는 바이트를 사용하도록 변경할 수 있습니까?Vector3 부동 소수점?

+0

* 스왑 아웃 *에서와 같이 변경할 수 있습니까? No. – user7116

답변

5

정수 또는 바이트 연산을 기반으로 자신의 Vector3 구조체를 만들어야합니다. 이것은 하나의 "내장"Vector3이 없기 때문에 가능합니다 (프레임 워크에 3D 벡터가 여러 개 구현되어 있음).

프레임 워크 API 호출에서 사용할 계획이라면 프레임 워크 버전으로 변환해야합니다.

3

자신의 벡터 3을 만들거나 Tuple을 사용할 수 있습니다.

그러나 Vector3이 필요하다고 예상되는 전화를 걸면 이 아니며이 예상 유형이됩니다. 이러한 상황에서는 표준 Vector3을 사용해야합니다.

+0

프레임 워크 튜플 유형은 구조체가 아닌 모든 클래스입니다. 목표에 따라 여기가 적절하지 않을 수도 있습니다 ... –

1

이미 지적했듯이 기존 유형 (Vector3d 포함)을 변경하여 해당 유형의 구성원을 사용할 수는 없습니다. 자신을 직접 만들어야합니다 (그렇게 할 때 classstruct의 차이점을 알고 있어야합니다).

성능에 문제가있는 경우 특정 사례에 대해 신중하게 측정해야합니다. 이러한 변경으로 인해 상당한 비용 절감 효과가 나타나는지 여부는 매우 분명하지 않습니다.

float를 int로 변경해도 공간을 절약 할 수없고 계산이 복잡해질 수 있습니다 (예 : 1.5 * 1.5는 float으로 쉽게 처리 할 수 ​​있지만 스케일 된 int를 사용하는 경우 추가 작업 15 * 15/100 및 sin/cos 회전에 사용하면 잘 작동하지 않을 수도 있습니다).

float를 byte로 변경하면 공간을 절약 할 수 있지만 수학 연산이 복잡해지고 모든 조작에 대해 int에서 /로 int 변환이 강제됩니다.