1
Graphique / avertissement pour depassement arithmetrique
« le: Mars 17, 2023, 04:27:04 pm »
Bonjour à tous!
difficile de trier les messages alors j'expose le soucis que j'ai.
J'ai besoin d'un tableau 2d, alors j'ai recopié fidèlement (sur visual stud 2019) les explications SFML, et je suis étonné de trouver du code souligné (vert ->avertissement pour dépassement arithmétique) sur un .resize et
plus bas tjs sur une variable int width.
ça compile mais bon......
Est ce que quelqu'un pourrait me dire comment palier à ce défaut .
Je mets le bout de code et merci si quelqu'un a les compétences et surtout le temps de m'aider.
BM
c'est width * height * 4 et [(i+j * width)* 4] qui sont soulignés
difficile de trier les messages alors j'expose le soucis que j'ai.
J'ai besoin d'un tableau 2d, alors j'ai recopié fidèlement (sur visual stud 2019) les explications SFML, et je suis étonné de trouver du code souligné (vert ->avertissement pour dépassement arithmétique) sur un .resize et
plus bas tjs sur une variable int width.
ça compile mais bon......
Est ce que quelqu'un pourrait me dire comment palier à ce défaut .
Je mets le bout de code et merci si quelqu'un a les compétences et surtout le temps de m'aider.
BM
c'est width * height * 4 et [(i+j * width)* 4] qui sont soulignés
public:
bool load(const string& tileset, Vector2u tileSize, const int* tiles,
unsigned int width, unsigned int height)
{
// charge texture du tileset
if (!m_tileset.loadFromFile(tileset))
return false;
//on redimentionne tableau vertex
m_vertices.setPrimitiveType(Quads);
m_vertices.resize([u]width * height * 4);[/u]
// on rempli tableau de vertex avec un quad par tuile
for (unsigned int i = 0; i < width; ++i)
for (unsigned int j = 0; j < height; ++j)
{
// on recupere n° de tuile courant
int tileNumber = tiles[i + j * width];
// on deduit position dans texture tileset
int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);
//recp pointeur vers quad à definir dans tableau vertex
Vertex* quad = &m_vertices[[u](i + j * width) * 4][/u];
bool load(const string& tileset, Vector2u tileSize, const int* tiles,
unsigned int width, unsigned int height)
{
// charge texture du tileset
if (!m_tileset.loadFromFile(tileset))
return false;
//on redimentionne tableau vertex
m_vertices.setPrimitiveType(Quads);
m_vertices.resize([u]width * height * 4);[/u]
// on rempli tableau de vertex avec un quad par tuile
for (unsigned int i = 0; i < width; ++i)
for (unsigned int j = 0; j < height; ++j)
{
// on recupere n° de tuile courant
int tileNumber = tiles[i + j * width];
// on deduit position dans texture tileset
int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);
//recp pointeur vers quad à definir dans tableau vertex
Vertex* quad = &m_vertices[[u](i + j * width) * 4][/u];