Bonjour,
Je recherche des idées pour accèlerer l'affichage d'une scène en 2D.
Sur un exemple simple je n'arrive pas à afficher plus de 3000 textures avec un framerate décent (~ 10 fps sur un AMD 3500+ / Geforce 6100), ce qui me parait peu
Pour l'info c'est en java avec l'API JOGL.
J'ai déjà essayé quelques techniques (display list, etc) mais le framerate n'évolue pas d'un iota :o
Initialisation :
Boucle d'affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 gl.glOrtho(-width / 2, width / 2, -height / 2, height / 2, -1, 1); gl.glBlendFunc( GL.GL_ONE, GL.GL_ONE_MINUS_SRC_ALPHA ); gl.glEnable( GL.GL_BLEND ); gl.glDisable( GL.GL_DEPTH_TEST ); gl.glDepthMask( false ); gl.glEnable (GL.GL_CULL_FACE ); gl.glCullFace ( GL.GL_BACK ); gl.glEnableClientState( GL.GL_VERTEX_ARRAY ); gl.glEnableClientState( GL.GL_COLOR_ARRAY ); gl.glEnableClientState( GL.GL_TEXTURE_COORD_ARRAY ); m_textures = new Texture[TEXTURES_COUNT]; for (int i = 0; i < TEXTURES_COUNT; i++) { m_textures[i] = TextureIO.newTexture(TextureIO.newTextureData(new File(PATH + i +".png"), GL.GL_RGBA, GL.GL_RGBA, false, TextureIO.PNG)); m_textureWidth = 128; m_textureHeight = 128; }
Si vous avez des idées, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 gl.glClear(GL.GL_COLOR_BUFFER_BIT); for(int i = 0; i < m_meshCount; ++i) { float x = random.nextFloat() * m_width - m_width * 0.5f; float y = random.nextFloat() * m_height - m_height * 0.5f; int textureId = random.nextInt(3); m_textures[textureId].enable(); m_textures[textureId].bind(); gl.glBegin(GL.GL_TRIANGLE_STRIP); gl.glTexCoord2f(0, 0); gl.glVertex3f(x, y, 0.f); gl.glTexCoord2f(1, 0); gl.glVertex3f(x+ m_textureWidth, y, 0.0f); gl.glTexCoord2f(0, 1); gl.glVertex3f(x, y + m_textureHeight, 0.0f); gl.glTexCoord2f(1, 1); gl.glVertex3f(x + m_textureWidth, y + m_textureHeight, 0.0f); gl.glEnd(); m_textures[textureId].disable(); }
Merci à tous
Partager