salut,
j'ai essayé d'utiliser une texture dans un vertex shader pour faire du displacement mapping mais les performances sont horribles(une heightmap de 200 triangles me donne 0-1 fps alors que j'ai 60 fps pour le meme rendu sans shader).
dans le tuto displacement mapping, ils parlent de 2 conditions : utiliser GL_RGBA_FLOAT32_ATI et la texture doit etre en mode nearest.
je génère ma texture comme ceci :
je n'ai pas pu mettre GL_RGBA_FLOAT32_ATI car mon compilateur ne l'accepte pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
quand je fais ctrl+alt+del pendans que je lance mon prog, il utilise 99% de la puissance de mon processeur.
je ne crois pas que le probleme vienne de ma carte graphique car elle supporte la démo du tuto avec hypérion avec 60 fps
voici mon vertex shader :
quelqu'un a une idée du problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 uniform sampler2D heightmap; void main() { vec4 v = vec4(gl_Vertex.x,gl_Vertex.y,gl_Vertex.z,1.0); v.y = texture2D(heightmap,vec2(gl_Vertex.x/256.0,gl_Vertex.z/256.0)).y*10.0; gl_TexCoord[0] = vec4(gl_Vertex.x/256.0,gl_Vertex.z/256.0,0.0,0.0); gl_Position = gl_ModelViewProjectionMatrix * v; }
merci d'avance,
delfare
Partager