2012-11-01 3 views
0

지금은 DirectX 엔진에 응용 프로그램, 그래픽, 사운드 및 각각 약 1k 라인이 있으며 각각 서로를 참조합니다. 처음에는 D3D 장치를 전달하는 것과 같은 클래스 사용을 제한하려고했습니다. 대신에 모든 클래스가 전역으로 사용하도록 만들었지 만 모든 사람들이 모든 것을 여러 클래스로 나눠서 볼 수 있으며 Engine-> GetRenderer-> Render (MyD3DContext)와 같은 것들을 볼 수 있습니다. MyD3DContext를 전역으로 만들고 Render 함수에서 직접 사용하는 것이 가장 좋은 방법입니다. 그리고 내가 얻지 못한 마지막 한 가지는 서로 어떻게 독립적으로 작동하는 클래스를 만드는 것입니까? 이상하게 들립니다.객체 지향 프로그래밍 (블랙 박스)으로 이동해야합니까?

+2

그래픽이 응용 프로그램에 연결되어있는 경우 그래픽을 변경하려고 할 때 무엇을합니까? 그래픽이 변경 되었기 때문에 응용 프로그램을 변경할 필요가 없습니다! – corsiKa

답변

1

별로 비효율적이지 않습니다. OOP에 대한 소개가 필요합니다. 어쩌면 심지어 something online

0

예. 그렇습니다.

프로젝트가 커지면서 글로벌이 하나가되면 많은 문제가 발생합니다. 또한 몇 가지 포인터를 트래버스하는 것이 특히 비효율적이지 않습니다. 올바른 영역의 효율성에 대해 걱정할 필요가 없습니다. 테스트를 실행하여 입증 된 영역은 비효율적이며 항상 코드 명확성과 분리를 유지하고 유지하십시오.

비효율에 대해 걱정할 필요가있는 이유는 정확히 그런 종류의 구조와 시간을 소요하는 테스트 응용 프로그램을 함께 사용하지 않는 이유입니다. 당신은 폴리곤리스트를 만드는 것이 중요하지 않다는 것을 알게 될 것입니다.

잘 캡슐화 된 비전 역이 아닌 개체를 사용하면 프로젝트가 성장하고 주변 환경을 변화시킬 수있는 이점이 있습니다.

0

OO 설계의 몇 가지 큰 입주자가 있습니다 : 특히 코드 재사용/모듈화 및 범위/격리. 일반적으로 대규모 개발 노력으로 확장되지 않고 항상 문제를 야기하기 때문에 일반적으로 전역에 대해 눈살을 찌푸 리기 때문에 OO는 주어진 호출의 범위를 기능을 수행하는 데 필요한 최소 범위로 제한하려고 시도합니다.

모듈성/재사용의 경우 하위 모듈이 커질수록 일반적으로 더 구체적이되고 모듈러 덩어리로 분리되면 모든 목적에 부합하지 않을 가능성이 적습니다. 결과적으로 약간의 수정을 위해 동일한 코드를 다시 작성하는 데 소요되는 시간을 줄일 수 있으며 새로운 목적을 위해 코드를 구현하는 동안 발생할 수있는 인접한 목적을 줄일 수 있습니다. 런타임시 약간의 비용이 들거나 없을지라도 구현하기가 더 효율적입니다. 가능성은 없다. Render()가 루트 모듈에 정의되어 있는지 또는 구성된 객체의 여러 층으로 구성되어 있는지 여부에 관계없이 Render()를 실행하는 데 더 많은 바이너리가 필요하지 않음을 기억하십시오. 여전히 함수 포인터입니다.

이들은 단지 일반적인 개념이므로 원하는 것을 선택하십시오.

희망이 도움이됩니다.

2

왜 처음에는 왜 그렇게 비효율적이라고 생각합니까? 코드 작성과 관리가 훨씬 쉬워 짐과 동시에 엄청나게 빠릅니다. OOP은 병목 현상이 아니며, 여러 개발자와 다수의 관심사가있는 대규모 프로젝트 (예 : 실제 게임)에 도움이됩니다.

게임은 시뮬레이션 엔티티 (개체)를 포함하는 시뮬레이션 입니다 개체 수 일을하고 속성이 있습니다

당신은 "게임"을 언급 한 이후, 한 가지 예를 들어 보겠습니다. 그러므로 객체는 속성과 동작의 캡슐화와 같습니다.이것은 "객체 지향 프로그래밍"에서 "객체"를 만드는 것입니다. 시뮬레이터의 허구적인 공장에서 이들이 (객체가) 생성되었다고 생각할 수 있습니다. 객체의 청사진은 "클래스"이며 encapsulation이라고합니다.

이러한 각 개체는 고도의 수학적 Half-Life-2 (원본) 수준의 Physics 엔진을 통해 여러분의 세계에 묶여 있습니다. 당신은 각 클래스에 대해 "물리학"을 코딩하고 싶지 않을 것입니다. 대신 당신은 클래스 (또는 인터페이스) "IPhysics"에서 상속 받게됩니다. 그리고 중력을 10.0에서 15.0으로 변경할 때마다이 값은 "전 세계"시나리오에 전파됩니다. 이것은 inheritance입니다.

고뇌 프리먼 (Half-Life-2)은 게임 내 각 개체가 "플레이어"와 "스크립트 작성자"의 역할을 동시에 수행 할 수 있다고 말합니다. 이것은 다형성입니다. 하나의 객체가 다른 유형으로 작동합니다.

OOP에서 허구의 게임을 모델링하고 발표하는 것은 매우 쉽습니다 (그리고 대단히 효율적입니다).

관련 문제