https://github.com/ohbumjun/GameEngineTutorial/commit/df6a2040d19c31bca017df9971f0ee6b272cb56e
사각형을 그릴 때 rotation 도 적용하고자 한다.
이를 위해서는 각 사각형의 transform 관련 uniform variable 을 계산할 때
rotation 도 반영해서 계산해주면 된다.
void Renderer2D::DrawRotatedQuad(const glm::vec3& pos, const glm::vec2& size, float rotation, const glm::vec4& color)
{
HZ_PROFILE_FUNCTION();
// 혹시나 문제 생기면, 여기에 Shader 한번 더 bind
s_Data.TextureShader->SetFloat4("u_Color", color);
s_Data.TextureShader->SetFloat("m_TilingFactor", 1.0f);
// Bind Default White Texture
s_Data.WhiteTexture->Bind();
// x,y 축 기준으로만 scale 을 조정할 것이다.
glm::mat4 scale = glm::scale(glm::mat4(1.f), { size.x, size.y, 1.0f });
glm::mat4 transform = glm::translate(glm::mat4(1.0f), pos)
// 2D renderer 이므로 z 축 회전을 적용한다.
* glm::rotate(glm::mat4(1.f), rotation, {0.f, 0.f, 1.f})
* scale;
s_Data.TextureShader->SetMat4("u_Transform", transform);
// actual draw call
s_Data.QuadVertexArray->Bind();
RenderCommand::DrawIndexed(s_Data.QuadVertexArray);
}
위와 같이 transform 이라는 matrix 를 계산할 때
rotation 행렬도 같이 중간에 곱해줌으로써 사각형을 원하는 만큼 회전시켜서
그려낼 수 있게 되는 것이다.
'게임엔진 > 크로스플랫폼 : HazelEngine' 카테고리의 다른 글
230516 자체 엔진 개발 : Batch Rendering (Texture) (0) | 2023.06.04 |
---|---|
230514 자체 엔진 개발 : Batch Rendering (0) | 2023.05.31 |
230510 자체 엔진 개발 : Visual Profiling (0) | 2023.05.29 |
230508 자체 엔진 개발 : Renderer2D (0) | 2023.05.26 |
230506 자체 엔진 개발 : Resize (0) | 2023.05.09 |