Ver Mensaje Individual
  #9 (permalink)  
Antiguo 14/04/2006, 17:04
unKnown
Usuario no validado
 
Fecha de Ingreso: julio-2001
Mensajes: 766
Antigüedad: 22 años, 10 meses
Puntos: 0
Creo yo

Creo que ya lo solucione

converti mi espacio de dibujo en un objeto que
puedo construir y destruir a mi antojo


Código PHP:
----------
#include <gl/gl.h>

// Con eto creo o destruyo segun sea el caso
class EspacioDibujo {
   private:
      
// Datos miembro
      
int PixelFormat;
      
HDC hdcFM;
      
HGLRC hrcFM;

   public:
      
      
bool EstoyViva;
      
EspacioDibujo();

      
// Funciones miembro 
      
void CrearPizarron(HDC MiHDC);
      
void DestruirPizarron();
      
void IntercambiaPixels();
};

EspacioDibujo::EspacioDibujo(){
    
//Aqui iniciamos el dibujo me servira para recargar el dibujo
   
}

void EspacioDibujo::CrearPizarron(HDC MiHDC){
    
hdcFM=MiHDC;
    
PIXELFORMATDESCRIPTOR pfd = {
        
sizeof(PIXELFORMATDESCRIPTOR),
        
1,
        
PFD_DRAW_TO_WINDOW PFD_SUPPORT_OPENGL PFD_DOUBLEBUFFER,
        
PFD_TYPE_RGBA,
        
24,
        
0,0,0,0,0,0,
        
0,0,
        
0,0,0,0,0,
        
32,
        
0,
        
0,
        
PFD_MAIN_PLANE,
        
0,
        
0,0,0
        
};
    
PixelFormat ChoosePixelFormat(hdcFM, &pfd);
    
SetPixelFormat(hdcFMPixelFormat, &pfd);
    
hrcFM wglCreateContext(hdcFM);
    
wglMakeCurrent(hdcFMhrcFM);
    
glClear (GL_COLOR_BUFFER_BIT);    // Limpiar el color y el bufer
    
glLoadIdentity();                 // Carga la matriz de identidad
    
EstoyViva=true;
}
void EspacioDibujo::IntercambiaPixels(){
         
glFlush();
     
SwapBuffers(hdcFM);
}

void EspacioDibujo::DestruirPizarron(){
            
glClear (GL_COLOR_BUFFER_BIT); 
        
glLoadIdentity();
        
ReleaseDC(hdcFM,hrcFM);
        
wglMakeCurrent(hdcFMNULL);
        
wglDeleteContext(hrcFM);
        
EstoyViva=false;
}


Lo iniciamos

      EspacioDibujo DApoyos
;
      
EspacioDibujo DCargas;


Y destruimos o construimos el dibujo segun sea necesario

  
if(DCargas.EstoyViva)
       
DCargas.DestruirPizarron();

  
DApoyos.CrearPizarron(GetDC(DibApoyos->Handle));
  
RenderGLScene(); 
Esa fue la solucion que yo le di no se si alguien me pueda decir
como hacerlo de una manera mas eficiente