PBuffer (Auf Texture rendern)



  • Hallo!
    Ich habe es geschafft einen PBuffer zu erzeugen.
    Ich möchte in meinen PBuffer etwas rendern und den PBuffer dann auf eine Texture kleben, aber es funktioniert nicht (es kommen nur wirre Farben auf die Texture und nicht die gezeichnete Szenen)

    Ich gehe folgende SChritte durch:

    //Beim der Init() - Funktion
    
    //Neuen PBuffer erzeugen
    target = new CRenderTarget;
    target->Create (512,512);
    //HDC HRC vom PBuffer als aktuelle setzen
    target->MakeCurrent();
    
    //Setup für PBuffer
    glClearColor( 0.0, 0.0, 0.0, 0.0 );
    
    glMatrixMode(GL_PROJECTION);
    gluPerspective(FOV,(float)SCREENWIDTH/(float)SCREENHEIGHT,NEAR,FAR);
    glMatrixMode(GL_MODELVIEW);
    
    //Wieder zum normalen HDC und HRC
    wglMakeCurrent(gHdc, gHrc);
    
    //Bei der RenderSzene() - Funktion:
    //Szene in PBuffer rendern
    target->MakeCurrent();
    glBindTexture(GL_TEXTURE_2D, pbufferTexture);
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    
    SceneManager.Render(Camera);
    
    //Szene in normalen HDC, HRC rendern
    if(!wglMakeCurrent(gHdc, gHrc))
       Log->Output("Unable to change current context(Window)<br>");
    
    SceneManager.Render(Camera);
    
    //Im Ortho Modus
    glBindTexture(GL_TEXTURE_2D, pbufferTexture);
    //PBuffer als Texture verwenden
    target->Bind();
    glLoadIdentity();
    glBegin(GL_QUADS);      
    glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
    glTexCoord2f(1, 0); glVertex3f(500, 0, 0);
    glTexCoord2f(1, 1); glVertex3f(500, 500, 0); 
    glTexCoord2f(0, 1); glVertex3f(0, 500, 0);
    glEnd();
    target->Unbind();
    

    Eigentlich müsste auch alle funktionieren. Habt ihr eine Idee was ich falsch mache?
    Den PBuffer erstelle ich auf jeden Fall richtig, daran kanns nicht liegen...

    Danke im vorraus
    Stefan



  • Hallo (Ich hab mich jetzt registriert).
    Wenn ich den PBuffer erzeuge und anschließend meine ganzen Models Texturen etc. lade, sind die zumindest jetzt auf dem Quad auf das ich den PBuffer rendere zu sehen ... funktionieren tuts aber immer noch nicht 😞

    Ich weiß mittlerweile auch, dass ich alle Texturen die ich im PBuffer rendern will (nochmal?!) auf die Grafikkarte "uploaden" muss, stimmt doch oder? Muss ich dann alle Texturen 2MAL laden??!!

    danke
    stefan (basc)



  • hat niemand eine idee?



  • Kannst du mir sagen was ein PBuffer ist, dann kann ich dir
    vielleicht helfen. Ich komme aus der Direct3D Richtung.



  • Bei Direct3D gibt so eine Funktion die SetRenderTarget(...) heißt, mit einem PBuffer (Pixel Buffer) kann man auch soetwas machen, indem man die ganze Szene zuerst in so einen Buffer rendert und diesen dann als Texture verwendet ...



  • schau dich mal auf der nVidia Seite um, da habe ich mal ein Beispiel gesehen wie man in eine Texture rendert.

    hab leider keinen link sorry


Anmelden zum Antworten