Je voudrais charger des textures, puis les faire utiliser par plusieurs objets. Cela fonctionnerait-il?C++: question de référence et de pointeur (exemple concernant OpenGL)
class Sprite
{
GLuint* mTextures; // do I need this to also be a reference?
Sprite(GLuint* textures) // do I need this to also be a reference?
{
mTextures = textures;
}
void Draw(textureNumber)
{
glBindTexture(GL_TEXTURE_2D, mTextures[ textureNumber ]);
// drawing code
}
};
// normally these variables would be inputed, but I did this for simplicity.
const int NUMBER_OF_TEXTURES = 40;
const int WHICH_TEXTURE = 10;
void main()
{
std::vector<GLuint> the_textures;
the_textures.resize(NUMBER_OF_TEXTURES);
glGenTextures(NUMBER_OF_TEXTURES, &the_textures[0]);
// texture loading code
Sprite the_sprite(&the_textures[0]);
the_sprite.Draw(WHICH_TEXTURE);
}
Et est-il une autre façon je le faire, même si cela fonctionnerait?
Merci.
Juste un Remarque. Si vous définissez (vs déclarant) quelque chose comme une référence, cela signifie généralement que quelque chose ne va pas avec votre conception. – Falmarri
@Falmarri, que voulez-vous dire? Êtes-vous en train de suggérer que le fait d'avoir un champ de classe comme référence ou une variable locale comme référence est faux? – Kos
@Kos: Je parle de définir un champ de classe comme référence. – Falmarri