sf::Image copyToImage (const sf::String & alias) const { assert(("The texture requested does not exist", hasTexture(alias))); return textures.at(alias).copyToImage(); }
// Accessors const sf::Texture & getTexture(const sf::String & alias) const { assert(("The texture requested does not exist", hasTexture(alias))); return textures.at(alias); }
// Draw function void Quad::drawFunc() { bool ok = false; // Draw with texture const unsigned int nv = getNumberOfVertices(); if (nv > 3) { if (!strip) { int rem = nv % 4; if (rem != 0) std::cerr << "Quad::drawFunc() - Quad have to have multiple of 4 vertices, add or remove vertices!!" << std::endl; else { BEGIN_DLIST glBegin(GL_QUADS); ok = true; } } else { int rem = nv % 2; if (rem != 0) std::cerr << "Quad::drawFunc() - quad strips have to have multiple of 2 vertices, add or remove vertices!!" << std::endl; else { BEGIN_DLIST glBegin(GL_QUAD_STRIP); ok = true; } } if (ok) { // get our regular vertices here const osg::Vec3* v = getVertices(); const unsigned int ntc = getNumberOfTextureCoords(); // draw with texture if (ntc > 0 && hasTexture()) { const osg::Vec2* texCoord = getTextureCoord(); unsigned int tc = 0; // texture count for (unsigned int i = 0; i < nv; i++) { // add our textures coordinates if (tc < ntc) lcTexCoord2v(texCoord[tc++].ptr()); // now our vertices lcVertex3v( v[i].ptr() ); } } // draw without texture else { // get our color gradient and apply it (if we have one) ColorGradient* colGradient = dynamic_cast<ColorGradient*>(getColor()); for (unsigned int i = 0; i < nv; i++) { if (colGradient != nullptr) { Basic::Color* col = colGradient->getColorByIdx(i+1); if (col != nullptr) glColor4f(static_cast<GLfloat>(col->red()), static_cast<GLfloat>(col->green()), static_cast<GLfloat>(col->blue()), static_cast<GLfloat>(col->alpha())); } // now add our vertex lcVertex3v( v[i].ptr() ); } } glEnd(); END_DLIST } } else std::cerr << "Quad::drawFunc() - Quad or QuadStrip needs at least 4 vertices!" << std::endl;