Eine Frage zu Renderstates und Renderworld

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

hamztata

Betreff: Eine Frage zu Renderstates und Renderworld

BeitragDo, Apr 23, 2009 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schauts mit den Renderstates aus, wenn man Renderworld ausführt?

Also würde man ein addon in form einer 2d engine coden wollen, und man bekommt mit SystemProperty die dx device, kann man zwar diese benutzen, aber wenn man dort dan z.b. nen alphawert ändert, wäre es gut, wenn die renderstates natürlich vor dem einsatz der eigenen engine gespeichert werden würden, und dannach wieder zurückgesetzt werden könnten.

Anders sieht es natürlich aus, wenn beim aufruf von Renderworld eh alles auf 0 gesetzt werden würde.

Habt ihr ein paar infos dazu?ich hab das problem zwar mit dx9, ist aber vollkommen identisch das problem.

was ist also mit den renderstates, würde man ein addon coden wollen.
man könnte ja die engine zwischen RenderWorld und Flip ausführen lassen....

was sagt ihr dazu?

BladeRunner

Moderator

BeitragDo, Apr 23, 2009 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du ein 'addon' basteln wolltest sollte es wohl das originale Renderworlds ersetzen. Und solange Du nicht sehr fit mit dem ganzen Krempel bist würde ich dir empfehlen es sein zu lassen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

ChristianK

BeitragDo, Apr 23, 2009 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Manche Renderstates werden von RenderWorld nicht benutzt, d.h. weder gelesen noch geschrieben. Die übrigen States werden von Blitz3D bei RenderWorld wieder auf die richtigen Werte gesetzt.
Deine eigenen 2D-Aufrufe solltest du dann am besten zwischen RenderWorld und Flip machen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

hamztata

BeitragDo, Apr 23, 2009 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
okay dann hier mal ein beispiel von fastimage für bb3d.
dort wird kein renderworld ersetzt.
InitDraw holt sich die device mit systemproperty(setzt nen pointer drauf, denke ich, damit das addon es handlen kann)
Nun gibts da aber auch noch diesen Block....

Code: [AUSKLAPPEN]
   StartDraw
      SetBlend FI_ALPHABLEND
      DrawImageEx img, MouseX(), MouseY()
      DrawRect MouseX()-250,MouseY()-250,500,500,0   
   EndDraw


StartDraw und EndDraw sind mir noch nicht ganz einleuchtend, deshalb.....
Und nein, ich möchte nicht die Finger davon lassen, hab letzte Nacht bisschen was mit DX probiert, ist jetzt nicht so easy, aber ich setz mich da schon noch durch.....

und hier der gesamte beispielcode...

Code: [AUSKLAPPEN]
; Example of use FastImage library
; (c) 2006-2008 created by MixailV aka Monster^Sage [monster-sage@mail.ru]  http://www.fastlibs.com



Include "include\FastImage.bb"         ; <<<<    Include FastImage.bb file



w=800
h=600



.loop
Graphics3D w,h,0,1
InitDraw                        ; <<<<   Use after Graphics3D !



SetFont LoadFont("Tahoma",13)
PositionEntity CreateCamera() ,0,0,-5
cube=CreateCube()
img=CreateImageEx( LoadTexture ("..\media\devil.png",1+2) , 256, 256)



MoveMouse GraphicsWidth()/2, GraphicsHeight()/2
While Not KeyHit(1)


   If KeyHit(2) Then
      w=800
      h=600
      Goto changeResolution
   EndIf
   
   If KeyHit(3) Then
      w=1024
      h=768
      Goto changeResolution
   EndIf
   
   If KeyHit(4) Then
      w=1280
      h=1024
      Goto changeResolution
   EndIf

   
   TurnEntity cube,0.1,0.2,0.3
   RenderWorld   


   ; for example
   StartDraw
      SetBlend FI_ALPHABLEND
      DrawImageEx img, MouseX(), MouseY()
      DrawRect MouseX()-250,MouseY()-250,500,500,0   
   EndDraw

   
   Text 10,10, "Current resolution: "+GraphicsWidth()+" x "+GraphicsHeight()
   Text 10,50,"Key 1: 800x600"
   Text 10,70,"Key 2: 1024x768"
   Text 10,90,"Key 3: 1280x1024"
   Text 10,130,"AvailVidMem: "+AvailVidMem()
   Flip
Wend
End



.changeResolution

DeinitDraw                  ; <<<<   Use before  ClearWorld and EndGraphics !
ClearWorld
EndGraphics

Goto loop




DeInitDraw gibts ja auch noch....

Xaymar

ehemals "Cgamer"

BeitragDo, Apr 23, 2009 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
StartDraw und EndDraw setzen jeweils globale/locale variablen der dll und "locken"/"delocken" den buffer.
DeInitDraw löscht alles aus dem Speicher(Pointer, Bilder, usw)
Warbseite
 

hamztata

BeitragDo, Apr 23, 2009 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
bis auf " "locken"/"delocken" den buffer " hab ich alles verstanden.

dachte echt, daß es was mit den renderstates zu tun hat...


btw. woher weißt du das so genau?!?schlußfolgerung oder gefährliches halbwissen, grins.
 

ChristianK

BeitragDo, Apr 23, 2009 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vermute mal, dass in der StartDraw-Funktion z.B. die Projektionsmatrix von Perspektive auf Orthogonal gesetzt wird oder RenderStates, die für alle Draw-Funktionen gleich sind, definiert werden.
Buffer werden aber wohl kaum gelockt ... Rolling Eyes
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Xaymar

ehemals "Cgamer"

BeitragDo, Apr 23, 2009 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn diese befehle aufgerufen werden, wird in der dll ein wert auf true gesetzt(z.b. BufferReady = true)
und der rest ist eben das normale lockbuffer und unlockbuffer.

[edit]gefährliches wissen in dx7[/edit]
Warbseite
 

ChristianK

BeitragDo, Apr 23, 2009 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum sollte der Buffer gesperrt werden?
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

hamztata

BeitragDo, Apr 23, 2009 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ohmannohmann, da brauch ich ja ewig um auch nur überhaupt diese paar funktionen korrekt zu coden...
letztendlich seh ich mich schon rumprobieren....lol

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group