MCPcopy Create free account
hub / github.com/OneLoneCoder/olcPixelGameEngine / FillTexturedPolygon

Method FillTexturedPolygon

olcPixelGameEngine.h:3306–3351  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3304 }
3305
3306 void PixelGameEngine::FillTexturedPolygon(const std::vector<olc::vf2d>& vPoints, const std::vector<olc::vf2d>& vTex, const std::vector<olc::Pixel>& vColour, olc::Sprite* sprTex, olc::DecalStructure structure)
3307 {
3308 if (structure == olc::DecalStructure::LINE)
3309 {
3310 return; // Meaningless, so do nothing
3311 }
3312
3313 if (vPoints.size() < 3 || vTex.size() < 3 || vColour.size() < 3)
3314 return;
3315
3316 if (structure == olc::DecalStructure::LIST)
3317 {
3318 for (size_t tri = 0; tri < vPoints.size() / 3; tri++)
3319 {
3320 std::vector<olc::vf2d> vP = { vPoints[tri * 3 + 0], vPoints[tri * 3 + 1], vPoints[tri * 3 + 2] };
3321 std::vector<olc::vf2d> vT = { vTex[tri * 3 + 0], vTex[tri * 3 + 1], vTex[tri * 3 + 2] };
3322 std::vector<olc::Pixel> vC = { vColour[tri * 3 + 0], vColour[tri * 3 + 1], vColour[tri * 3 + 2] };
3323 FillTexturedTriangle(vP, vT, vC, sprTex);
3324 }
3325 return;
3326 }
3327
3328 if (structure == olc::DecalStructure::STRIP)
3329 {
3330 for (size_t tri = 2; tri < vPoints.size(); tri++)
3331 {
3332 std::vector<olc::vf2d> vP = { vPoints[tri - 2], vPoints[tri - 1], vPoints[tri] };
3333 std::vector<olc::vf2d> vT = { vTex[tri - 2], vTex[tri - 1], vTex[tri] };
3334 std::vector<olc::Pixel> vC = { vColour[tri - 2], vColour[tri - 1], vColour[tri] };
3335 FillTexturedTriangle(vP, vT, vC, sprTex);
3336 }
3337 return;
3338 }
3339
3340 if (structure == olc::DecalStructure::FAN)
3341 {
3342 for (size_t tri = 2; tri < vPoints.size(); tri++)
3343 {
3344 std::vector<olc::vf2d> vP = { vPoints[0], vPoints[tri - 1], vPoints[tri] };
3345 std::vector<olc::vf2d> vT = { vTex[0], vTex[tri - 1], vTex[tri] };
3346 std::vector<olc::Pixel> vC = { vColour[0], vColour[tri - 1], vColour[tri] };
3347 FillTexturedTriangle(vP, vT, vC, sprTex);
3348 }
3349 return;
3350 }
3351 }
3352
3353
3354 void PixelGameEngine::DrawSprite(const olc::vi2d& pos, Sprite* sprite, uint32_t scale, uint8_t flip)

Callers

nothing calls this directly

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected