我的项目使用Box2D作为pysics引擎,使用SDL进行渲染。
我试图渲染一个能够旋转的移动物体,但看起来我做错了。
要修复渲染问题,我需要了解我应该如何绘制它。
假设我在Box2D有一辆车,位置10,10,角度为60度。该物体具有4个宽度和10个高度的夹具。我应该如何呈现它?
答案 0 :(得分:0)
我使用SDL / Box2D处理的项目的一些渲染代码:
void Something::Render()
{
SDL_Rect stretchRect;
stretchRect.x = (m_body->GetPosition().x * Constants::METRESTOPIXELS) - (m_dimensions.x / 2);
stretchRect.y = (-m_body->GetPosition().y * Constants::METRESTOPIXELS) - (m_dimensions.y / 2);
stretchRect.w = m_dimensions.x;
stretchRect.h = m_dimensions.y;
float angle = m_body->GetAngle() * Constants::TODEGREES;
SDL_RenderCopyEx ( m_renderer, m_texture, NULL, &stretchRect, angle, NULL, SDL_RendererFlip::SDL_FLIP_NONE );
}
METRESTOPIXLES
是Box2d到像素的缩放比例。 TODEGREES
用于将弧度转换为度数。 m_body
是Box2D正文,m_dimensions
是图像的大小。 m_renderer
是SDL_Renderer
,我们将对它的引用传递给对象构造函数中的对象。