[C# - TAOFramework] - Utilisation de VBO
Bonjour,
Je suis en train de faire de l'affichage 3D de pièces.
Après avoir affiché cette dite-piece de façon brute.
Ensuite, l'ai réussi à l'afficher via l'optimisation VBO
Le probleme est que quand je perds le focus de la fenetre sans forcement la mettre derriere une autre fenetre, le driver de la carte graphique ne réponds plus pendant quelques secondes avant de revenir.
Pourriez vous m'aider ?
Merci.
Flow
Mon code:
Code:
1 2 3 4 5 6 7
| void LoadVBO()
{
Gl.glGenBuffersARB(1, out VBOObject.VBOid);
Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER, VBOObject.count);
Gl.glBufferDataARB(Gl.GL_ARRAY_BUFFER_ARB, (IntPtr)(VBOObject.count * 3 * sizeof(float)), VBOObject.xyz, Gl.GL_STATIC_DRAW_ARB);
} |
Code:
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
| Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
LoadVBO();
Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background
Gl.glClearDepth(1.0f); // Depth Buffer Setup
Gl.glDepthFunc(Gl.GL_LEQUAL); // The Type Of Depth Testing (Less Or Equal)
Gl.glEnable(Gl.GL_DEPTH_TEST); // Enable Depth Testing
Gl.glShadeModel(Gl.GL_SMOOTH); // Select Smooth Shading
Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST); // Set Perspective Calculations To Most Accurate
Gl.glEnable(Gl.GL_TEXTURE_2D); // Enable Textures
Gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); // Set The Color To White
Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER_ARB, VBOObject.count);
Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, null);
while (!toquit)
{
DrawGLScene();// Loop That Runs While done = false
Application.DoEvents(); // Process Events
bool res = Gdi.SwapBuffers(hDC);
}
Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| private void DrawGLScene()
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
Glu.gluLookAt(212, 60, 194, 186, 55, 171, 0, 1, 0);
Gl.glRotatef(xv, 1f, 0f, 0f);
Gl.glRotatef(yv, 0f, 1f, 0f);
Gl.glRotatef(zv, 0f, 0f, 1f);
Gl.glDrawArrays(Gl.GL_LINES, 0, VBOObject.count);
} |