OpenGL et allocation dynamique
Bonjour à tous,
Je viens de tomber sur un drôle de problème, et j'aurais aimé savoir si quelqu'un a déjà recontré ce cas avec une autre librairie.
Voici un code que j'ai ramené au plus simple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
#include <iostream>
int
main (int argc, char * argv[])
{
unsigned int * a = new unsigned int[16];
for ( unsigned int i = 0; i < 16; i++ )
std::cout << i << " : " << (unsigned int)a[i] << std::endl;
return 0;
} |
Si je le compile en tant que projet C++ simple, j'ai une série de zéros qui s'affichent, comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
0 : 0
1 : 0
2 : 0
3 : 0
4 : 0
5 : 0
6 : 0
7 : 0
8 : 0
9 : 0
10 : 0
11 : 0
12 : 0
13 : 0
14 : 0
15 : 0 |
Mais si je rajoute au compilateur -lGL pour lier la bibliothèque d'OpenGL et sans rien modifier d'autre dans le code source, j'obtient ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
0 : 841837922
1 : 775106862
2 : 923430771
3 : 909193830
4 : 1701013045
5 : 758132784
6 : 825386551
7 : 1667642678
8 : 808464486
9 : 757953056
10 : 808460400
11 : 808466480
12 : 807415856
13 : 825244216
14 : 892613664
15 : 808530231 |
Et c'est la que je commence à ne plus rien comprendre ...
Donc j'ai un projet utilisant OpenGL, et là ou je pensais allouer des valeurs à 0, je me retrouve avec de larges buffers pleins de valeurs à la noix, ce qui m'embête légèrement. Je peux toujours remettre des boucles un peu partout, mais je trouve ça tout même bizarre.
L'opérateur new n'est pas censé initialiser les valeurs a 0 en toutes circonstances?
Je suis sur une debian 64, avec le dernier pilote nvidia du site proprio (sans quoi pas de 3D).
Voila, celui qui a une idée :)