Bonjour,
Je fais un moteur de lumière 2d qui fonctionne de cette façon:
-j'ai un tableau data, qui contiens a la fois une lightmap et une collisionmap (4 octets de light suivis de 4 octets de collisions, a chaque fois, pour utiliser le cache au mieux)
-je fais divers opérations assez coûteuses sur ce tableau, cela modifie la lightmap
Une fois cela fait j'envoie la lightmap sur un FBO, et la collision map sur un autre FBO.
Un shader me permet ensuite de faire d'autres traitements.
Actuellement j'utilise la chose la plus horrible qui soit pour envoyer mes données, a coup de vertex (c'était juste pour voir si l'algo de lighting fonctionne):
Sauf que maintenant, l'algo étant finis, j'aimerais bien connaître une solution efficace pour envoyer mes pixels a mes FBO.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 glBegin(GL_POINTS); for(int i=0; i<mapWid; ++i) for(int j=0; j<mapHei; ++j) { int c = t[ (i+j*mapWid)<<1 ]; glColor3ub(c&0xFF, (c&0xFF00)>>8, (c&0xFF0000)>>16); glVertex2i(i, j); } glEnd();
J'ai vu qu'il était toujours indiqué de passer par glTexImage2D, sauf que dans mon cas je me retrouve obligé a copier mes données de pixels
dans un tableau affin de pouvoir lui passer, cette fonction ne donnant pas de paramètre 'step' (comme quand on utilise des VBO par exemple).
C'était donc pour connaître le moyen le plus efficace dans mon cas en terme de performances.
Merci d'avance, et bonne journée.
Partager