BOX2D 엔진의 드로잉 디버깅 기능 켜기
2567 단어 box2D
다음은 이전에 쓴 것이다.x버전에서의 오픈 방법은 분명히 번거로워서 버려도 될 것 같습니다.
물리 게임을 할 때는 그림을 디버깅하는 기능을 사용해야 한다.그러나 나는 실제 조작 중에 약간의 번거로움을 만났으니, 여기서 총괄하여 나중에 쓸 수 있도록 하자.
BOX2D에서 b2Draw 클래스를 제공했는데 그 안에 많은 그리기 방법이 포함되어 있습니다. (허함수 인터페이스가 많은 것 같아서 실현해야 할 것 같습니다.)우선 이 클래스와 하위 클래스의 대상을 하나의 그리기 모듈로 보고'세계'를 불러오고 이 모듈을 호출함으로써 디버깅 그리기 기능을 실현한다.
자세한 단계는 다음과 같습니다.
1.GLES-Render를 복제합니다.h와 GLES-Render.cpp 두 파일을 Classes 디렉토리로 이동
GLESDebugDraw는 b2Draw 클래스를 계승하여 일부 그리기 인터페이스를 실현했다.GLESDebugDraw 클래스는 이 두 파일에 정의되어 있습니다.그러나cocos2d-x 엔진은 이 헤더 파일을 제공하지 않기 때문에 수동으로 복사하고 도입해야 합니다.코코스2d-x의 Box2DTEstBed 예시 항목에서 이 두 파일을 찾을 수 있습니다.
2.GLESDebugDraw 클래스 대상 (그리기 모듈) 을 만들고, 그리기 표식 (flag) 을 설정한 다음, 그리기 모듈을 '세계' 에 불러옵니다.
GLESDebugDraw *debugDraw = new GLESDebugDraw(PTM_RATIO);
uint32 flags = 0;
flags += b2Draw::e_shapeBit;
//flags += b2Draw::e_jointBit;
//flags += b2Draw::e_aabbBit;
//flags += b2Draw::e_pairBit;
//flags += b2Draw::e_centerOfMassBit;
debugDraw->SetFlags(flags);
m_world->SetDebugDraw(debugDraw);
PTM_RATIO는 32픽셀/미터를 나타내는 사용자 정의 매크로(#define PTM RATIO 32)로, BOX2D에서 사용되는 거리 단위는 미터이므로 픽셀에서 미터로 변환해야 합니다.flags는 디버깅을 위한 그림 형식을 나타내는 이진 표식입니다.
3.장면 클래스의draw 함수를 다시 써서 '세계' 에서 디버깅 정보를 그립니다
void Test::draw()
{
CCLayer::draw();
ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position);
kmGLPushMatrix();
m_world->DrawDebugData();
kmGLPopMatrix();
}
이 코드의 내용에 대해 잘 이해하지 못하지만 이 코드도 수정할 필요가 없고 그 기능만 알면 된다.
여기서 또 하나의 문제를 주의해야 한다. 그림을 디버깅할 때 배경 그림을 추가하지 않는 것이 가장 좋다. 그렇지 않으면 그림 그리는 시각을 방해하기 쉽다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
box2d의 강체, 맞춤형 필기강체(Body): 세계를 통해 만들어진 대상, 물리 엔진 안의 모든 것이 강체 생성 방식: b2 Body Def를 정의하고, b2 World는create Body를 호출하여 이 인자를 전송합니다. 맞춤형 제작기(Fi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.