Rotate placefile icons

This commit is contained in:
Dan Paulat 2023-08-05 01:28:34 -05:00
parent e66c202edf
commit 6c0b62709f
4 changed files with 29 additions and 3 deletions

View file

@ -54,6 +54,23 @@ void DrawItem::UseDefaultProjection(
uMVPMatrixLocation, 1, GL_FALSE, glm::value_ptr(projection));
}
void DrawItem::UseRotationProjection(
const QMapLibreGL::CustomLayerRenderParameters& params,
GLint uMVPMatrixLocation)
{
glm::mat4 projection = glm::ortho(0.0f,
static_cast<float>(params.width),
0.0f,
static_cast<float>(params.height));
projection = glm::rotate(projection,
glm::radians<float>(params.bearing),
glm::vec3(0.0f, 0.0f, 1.0f));
p->gl_.glUniformMatrix4fv(
uMVPMatrixLocation, 1, GL_FALSE, glm::value_ptr(projection));
}
// TODO: Refactor to utility class
static glm::vec2
LatLongToScreenCoordinate(const QMapLibreGL::Coordinate& coordinate)

View file

@ -36,6 +36,9 @@ protected:
void
UseDefaultProjection(const QMapLibreGL::CustomLayerRenderParameters& params,
GLint uMVPMatrixLocation);
void
UseRotationProjection(const QMapLibreGL::CustomLayerRenderParameters& params,
GLint uMVPMatrixLocation);
void UseMapProjection(const QMapLibreGL::CustomLayerRenderParameters& params,
GLint uMVPMatrixLocation,
GLint uMapScreenCoordLocation);

View file

@ -218,7 +218,7 @@ void PlacefileIcons::Render(
p->Update();
p->shaderProgram_->Use();
UseDefaultProjection(params, p->uMVPMatrixLocation_);
UseRotationProjection(params, p->uMVPMatrixLocation_);
UseMapProjection(
params, p->uMapMatrixLocation_, p->uMapScreenCoordLocation_);