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 nichtIch 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