1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-15 06:52:34 +02:00

Extract common rect rendering code

This commit is contained in:
Daniel Evans 2018-08-19 10:41:00 +01:00
parent 2aa0f3a371
commit 34b8976856
2 changed files with 8 additions and 24 deletions

View File

@ -500,32 +500,14 @@ void GameRenderer::renderEffects(GameWorld* world) {
}
void GameRenderer::drawTexture(TextureData* texture, glm::vec4 extents) {
// Move into NDC
extents.x /= renderer->getViewport().x;
extents.y /= renderer->getViewport().y;
extents.z /= renderer->getViewport().x;
extents.w /= renderer->getViewport().y;
extents.x += extents.z / 2.f;
extents.y += extents.w / 2.f;
extents.x -= .5f;
extents.y -= .5f;
extents *= glm::vec4(2.f, -2.f, 1.f, 1.f);
renderer->useProgram(ssRectProg.get());
renderer->setUniform(ssRectProg.get(), "colour", glm::vec4{0.f, 0.f, 0.f, 1.f});
renderer->setUniform(ssRectProg.get(), "size", glm::vec2{extents.z, extents.w});
renderer->setUniform(ssRectProg.get(), "offset", glm::vec2{extents.x, extents.y});
Renderer::DrawParameters wdp;
wdp.depthMode = DepthMode::OFF;
wdp.blendMode = BlendMode::BLEND_ALPHA;
wdp.count = ssRectGeom.getCount();
wdp.textures = {texture->getName()};
renderer->drawArrays(glm::mat4(1.0f), &ssRectDraw, wdp);
drawRect({0.f, 0.f, 0.f, 1.f}, texture, extents);
}
void GameRenderer::drawColour(const glm::vec4& colour, glm::vec4 extents) {
drawRect(colour, nullptr, extents);
}
void GameRenderer::drawRect(const glm::vec4& colour, TextureData* texture, glm::vec4& extents) {
// Move into NDC
extents.x /= renderer->getViewport().x;
extents.y /= renderer->getViewport().y;
@ -546,7 +528,7 @@ void GameRenderer::drawColour(const glm::vec4& colour, glm::vec4 extents) {
wdp.depthMode = DepthMode::OFF;
wdp.blendMode = BlendMode::BLEND_ALPHA;
wdp.count = ssRectGeom.getCount();
wdp.textures = {0};
wdp.textures = {texture ? texture->getName() : 0};
renderer->drawArrays(glm::mat4(1.0f), &ssRectDraw, wdp);
}

View File

@ -170,6 +170,8 @@ private:
ClumpPtr getSpecialModel(SpecialModel usage) const {
return specialmodels_[usage];
}
void drawRect(const glm::vec4& colour, TextureData* texture, glm::vec4& extents);
};
#endif