PhysX Sample 정리

jjuiddong
이동: 둘러보기, 찾기

Sample 일반

  • sample 은 오른손좌표계를 사용한다. (OpenGL과 동일)
  • matrix 연산은 mt3 * mt2 * mt1 * mt0 * vertex 형태로 계산된다. 즉 뒤에서 앞으로 전진하면서 계산된다.


Bridge Sample 정리

PxReal = float

PxF32 = float

PXF64 = double

PxU32 = unsigned int

PxU8 = unsigend char

Sample 소스 분석

Framework 분석.

SampleUserInput

  • 추상클래스
  • 입력을 받아서 리스너에게 전달한다.

RendererWindow

  • 추상클래스
  • SamplePlatform 래핑 클래스.
  • update() 함수에서 모든걸 처리한다.

SampleApplication

  • RendererWindow, InputEventListener 상속
  • Renderer 관리
  • SampleAssetManager 관리
  • 어플리케이션 매인 클래스.

SampleAsset

  • materal, texture, input 경로 관리.
  • 한번 읽은 데이타를 재활용할 목적으로 만듬.

SampleAssetManager

  • SampleAsset 관리.



Rederer 분석.


SampleRenderer::Renderer

D3D9Renderer

  • Renderer 상속
  • DirectX9

RendererVertexBuffer

  • RendererInteropableBuffer
    • 간단한 정보 저장
  • 추상클래스
  • 기본적인 버텍스 버퍼를 정의한다.
  • 버텍스 버퍼를 생성하고, 관리한다.

RendererIndexBuffer

  • RendererInteropableBuffer
  • 추상클래스
  • 인덱스 버퍼에 관련된 기본적인 정보 관리.

RendererInstanceBuffer

  • RendererInteropableBuffer
  • 추상클래스
  • 인스턴스에 관련된 정보를 묶어서 buffer처럼 관리한다.

RendererTexture2D

  • 추상클래스
  • 텍스쳐를 관리한다.


RendererTarget

  • 인터페이스
  • bind(), unbind()

RendererMaterial

  • 추상클래스
  • 텍스쳐 필터 함수 관리.

RendererMaterialInstance

  • RendererMaterial 클래스에 data 정보를 추가함.

RendererMesh

  • 추상클래스
  • 메쉬를 정보 관리, 출력.

RendererLight

  • 추상클래스
  • 광원 관리.

RendererColor

  • b,g,r,a 컬러값 관리.


RendererProjection

  • 투영 행렬 관리.

RendererMeshContext

  • mesh, material, instance 관리
  • mesh를 다루는데 필요한 최소한의 정보를 관리한다.

RendererShape

  • userData와 mesh 를 가진다.

RendererMeshShape

  • RendererShape 상속
  • Mesh vertexBuffer, indexBuffer 생성 관리.

RendererBoxShape

  • RendererShape 상속
  • Box vertexBuffer, indexBuffer 생성 관리.



SampleBase 정리.


RAWMesh

  • vertex, normal, color, uv, index 를 가지는 기본적은 메쉬정보를 처리하는 클래스다. 구조체에 가깝다.


PxSampleAllocator

  • 16bit aligned
  • 메모리를 동적으로 할당해주는 클래스다.
  • VPD 와 연계되는 것과는 관련 없다.

SampleAllocateable

  • new, delete 인라인 오버라이딩.


SampleFramework::SamplePlatform

  • 싱글톤.
  • 가상클래스.
  • 플랫폼을 일반화한 클래스.


PhysXSampleApplication

  • sample 프래임워크 클래스.
  • SampleFramework::SampleApplication 상속받음.
  • Console
    • 입출력?
  • Camera
  • DefaultCameraController
    • CameraController
      • interface
    • 입력을 받아서 카메라를 조정하는 역할을 한다.
  • RenderMaterial
    • RenderBaseObject
      • 기본정보 저장.
  • RenderPhysX3Debug 관리.
  • PhysXSample 관리.


RenderBaseObject

  • 이름, userData 저장.


RenderBaseActor

  • RenderBaseObject 상속
  • RenderShape 관리.
  • Actor 를 출력한다.

RenderMeshActor

  • RenderBaseActor 상속
  • RendererMeshShape 생성.

RenderBoxActor

  • RenderBaseActor 상속
  • RendererBoxShape 생성.

RenderSphereActor RenderGridActor RenderCapsuleActor


PhysXSample

  • 물리연산 과 출력할 actor를 관리한다.
  • 게임에 연관된 기능을 담당한다. (GameMain 과 비슷하다)


ControlledActor

  • SampleBridge 에서만 쓰이는 클래스
  • standup, crouching, jump, telport 동작을 정의한다.




==================================================

SampleApplication::OnDraw 분석.

  • onTickPreRender()
  • PhysXSampleApplication::OnRender()
    • mCamera.BuildFrustum();
    • renderer->clearBuffers();
    • renderer->drawScreenQuad(sq);
    • renderer->queueLightForRender(*mLights[i]);
    • mSample->render();
      • mRenderActors 출력.
    • renderer->render(mCamera.getViewMatrix(), mCamera.getProjMatrix());
    • mSample->customizeRender();
    • mSample->displayFPS();
    • getRenderer()->finalizeTextRender();
  • onTickPostRender()
  • m_renderer->swapBuffers();
  • 카메라 위치 이동, m_worldToView 업데이트.
개인 도구
이름공간

변수
행위
둘러보기
도구모음