Vorgehensweise TextureBuffer()
Übersicht

PacManiBetreff: Vorgehensweise TextureBuffer() |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo ![]() leider noch nicht viel Erfahrung mit TextureBuffer(). Habe mir zwar schon einige Beispiele angesehen, aber wenn ich etwas von neu auf programmieren muss dann hakt es in diesem Fall etwas... erstmal mein Problem. Ich möchte auf ein Mesh das Bild einer zweiten Kamera als Textur nutzen, während die erste die normale 3D-Welt zeichnet. Nun weiß ich leider nicht wie ich da genau vorgehen soll, in welcher Reihenfolge SetBuffer TextureBuffer(), muss ich die erste Kamera verstecken oder wie zeichne ich nur das Bild der zweiten Kamera in den TextureBuffer(), und ist RenderWorld benötigt? Vielleicht kann mir jemand ein paar kleine Tipps geben... |
||
![]() |
Jo0oker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rein von der Logik her funktioniert das ganze so:
->Hauptkamera verstecken ->Spiegelkamera zeigen ->Bild mit Spiegelkamera Rendern ->Bild landet im BackBuffer ->Aus dem BackBuffer in den TextureBuffer kopieren ->Spiegelkameea verstecken ->Textur auf das Mesh legen ->Nun wieder rendern ->Bild landet im BackBuffer ->BackBuffer mit flip in FrontBuffer packen Allerdings meine ich, dass B3D einige Probleme mit dem TextureBuffer hat. Schau dir außerdem mal den Befehl CopyRect an! P.S.: Wenn ich irwo falsch liege, bitte korrigieren ![]() lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke erstmal. Habe es jetzt so gemacht, aber das Ergebnis ist nicht ganz so klasse - habe ich etwas mit der Texturengröße falsch gemacht?
Code: [AUSKLAPPEN] Graphics3D 800,600
SetBuffer BackBuffer() Global FPSTimer=CreateTimer(60) Global Camera=CreateCamera() PositionEntity Camera,0,3,-10 Global Plane=CreatePlane() EntityTexture Plane,LoadTexture("texture\floor001.png") Global Car=LoadMesh("model\redcar.3ds") ScaleEntity Car,0.1,0.1,0.1 PositionEntity Car,0,2,0 Global RearMirror=CreateMesh() ;meine Auffassung von SingleSurface :D Local RearSurface=CreateSurface(RearMirror) Local RearV0=AddVertex(RearSurface,0,0,0,0,0) Local RearV1=AddVertex(RearSurface,0,1,0,0,1) Local RearV2=AddVertex(RearSurface,1,0,0,1,0) Local RearV3=AddVertex(RearSurface,1,1,0,1,1) AddTriangle(RearSurface,RearV0,RearV1,RearV2) AddTriangle(RearSurface,RearV1,RearV3,RearV2) EntityFX RearMirror,17 PositionEntity RearMirror,0,2,15 ;ScaleEntity RearMirror,2.27,0.67,1 ScaleEntity RearMirror,10,10,1 Global RearTexture=CreateTexture(227,67) Global RearCamera=CreateCamera(RearMirror) RotateEntity RearCamera,0,180,180 CameraViewport RearCamera,0,0,227,67 HideEntity RearCamera Repeat If KeyDown(200) Then MoveEntity Camera,0,0,0.1 If KeyDown(208) Then MoveEntity Camera,0,0,-0.1 If KeyDown(203) Then MoveEntity Camera,-0.1,0,0 If KeyDown(205) Then MoveEntity Camera,0.1,0,0 If KeyDown(82) Then TurnEntity Camera,0,1,0 TurnEntity Car,0,2,0 UpdateRearMirror() UpdateWorld RenderWorld WaitTimer(FPSTimer) Flip False Until KeyHit(1) End Function UpdateRearMirror() HideEntity Camera ShowEntity RearCamera RenderWorld CopyRect 0,0,227,67,0,0,BackBuffer(),TextureBuffer(RearTexture) HideEntity RearCamera ShowEntity Camera EntityTexture RearMirror,RearTexture End Function ![]() |
||
Fredko |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Falls eine Seite einer Textur (oder hier beide) nicht aus 2^n besteht, so wird
sie auf die folgende größere Zahl aus der Potenz skaliert. Du nutzt, wenn ich es richtig gelesen habe, 227 und 67 als Breite/Höhe der Textur, also kommt jeweils 256 und 128 raus. Damit die aber du aber die "echte" Größe der Textur nutzen kannst, musst du einfach dividieren: Für U musst du anstatt 1.0 227.0/256.0 benutzen, sowie für V anstatt 1.0 einfach 67.0/128.0 . Ich empfehle trotzdem dringlich, die Textur von Anfang an mit 256 und 128 zu erstellen, da manche Grafikkarten die Textur gar nicht skalieren werden, und dann kann es richtig lustig werden. |
||
! |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, sowas dachte ich mir fast schon ^_^
Sollte man Texturen dann nicht auch gleich quadratisch machen, oder ist das egal? |
||
![]() |
Jo0oker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, sollte man.
Aber mit der Zeit wird es immer unwichtiger, da die Grakas nunmehr damit gut umgehen können. lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group