Seite 2 von 13

Verfasst: 24.08.2005 17:34
von Green Snake
ah ja? :?

gleich nochmal anschau...

moment:
du meinst, das soll dabei rauskommen? :?

ok, von mir aus, leider ist mein pc danach abgestürzt, und ich musste meine leider noch nicht gespeicherten codes nochmal schreiben :evil:

naja egal, waren sowiso nur 3 zeilen :lol:

Verfasst: 24.08.2005 17:37
von Deeem2031
Wie gesagt, mit Debugger funzt das nicht und um da ein Bild aus Circles und Boxes zusammenzubasteln, fehlte mir die Lust ;)

[Edit] Hab jetzt ein "DisableDebugger" in den Code eingefügt.

Verfasst: 24.08.2005 17:46
von Green Snake
wenigstens stürzt der pc nich mehr ab :D
sieht schon gut aus......wie andyx sagte:

wenn 3d kommt, dann ists top :lol:

*viel spass :twisted: *

:lol:

Verfasst: 24.08.2005 20:47
von Deeem2031
Zwar noch kein 3D, aber paar Flags für OpenScreen() hab ich jetzt hinzugefügt. Ich hab nur ein Problem mit AntiAliasing, das funzt bei mir nicht, müsste aber eigentlich. Aber vielleicht funzt es ja bei euch:

Code: Alles auswählen

DisableDebugger
InitSpriteDX9()
InitKeyboard()

Width = 800
Height = 600

#PB_D3D_TribleBuffering =$00000001 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AlphaBlending   =$00000002 ;Verträgt sich nicht mit StartDrawing/StopDrawing
#PB_D3D_CopyBuffer      =$00000004 ;Verträgt sich nicht mit #PB_D3D_TribleBuffering;#PB_D3D_AntiAnalysing*
#PB_D3D_AntiAliasing    =$00000008 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AntiAliasing2   =$00000010 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AntiAliasing3   =$00000020 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AntiAliasing4   =$00000040 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer

If OpenScreenDX9(Width,Height,32,":)",#PB_D3D_AntiAliasing)
  Repeat
    ClearScreenDX9(RGB(0,0,255))
    StartDrawing(ScreenDX9Output())
    For y = 0 To 100-1
      For x = 0 To 100-1
        Plot(x,y,$FF<<((b%3)*8))
      Next
    Next
    StopDrawing()
    FlipBuffersDX9()
    ExamineKeyboard()
  Until KeyboardPushed(#PB_Key_Escape)
Else
  EnableDebugger
  Debug "OpenScreenDX9-Error"
EndIf
Wenns funktioniert, sehr schön, wenn nich, auch nich so schlimm ;)

Verfasst: 24.08.2005 21:23
von AndyX
Die Draw-Befehle sind aber immer noch DX7 O_o ABer das Antialiasing muss ich gleich mal ausprobieren...

Verfasst: 24.08.2005 21:25
von Deeem2031
AndyX hat geschrieben:Die Draw-Befehle sind aber immer noch DX7 O_o ABer das Antialiasing muss ich gleich mal ausprobieren...
Die Drawbefehle sind weder DX7 noch DX9, das sind WinApi-Befehle, desswegen funktioniert damit auch kein AlphaBlending.

Verfasst: 24.08.2005 21:41
von AndyX
Deeem2031 hat geschrieben:
AndyX hat geschrieben:Die Draw-Befehle sind aber immer noch DX7 O_o ABer das Antialiasing muss ich gleich mal ausprobieren...
Die Drawbefehle sind weder DX7 noch DX9, das sind WinApi-Befehle, desswegen funktioniert damit auch kein AlphaBlending.
._. :| Das ist doch umständlich. Wieso hat Fred das nicht mit DX gemacht?

Verfasst: 24.08.2005 21:56
von Deeem2031
Ich schätze es einfacher und zu den Images kompatibler.

Verfasst: 24.08.2005 22:43
von merlin
@Deeem2031:
Absout saubere Arbeit! Endlich mal reine DX9 only sachen mit PureBasic! Dein erstes Beispiel läuft bei mir einwandfrei! Lediglich dein 2. example mit dem Antialiaze (1-3) gehen alle nicht auf meinem system! Naja...

Hätte aber noch einen großen Verbesserungsvorschlag! Wie es ausschaut, benutzt deine DX9 lib, die PureBasic Windows Lib! Dadurch wird dein example gleich ca. 14k groß! (weiß nicht, ob die WindowLib nicht splitted ist!?) Zumindest wäre es cool, wenn Du statt evtl. intern "OpenWindow()", deine eigene kleine "optimierte <) " version in deine Lib einbauen kannst... So das die erzeugten DX9 exe doch um einiges kleiner sein könnten! Das wäre dann schonmal der absolute oberhammer von dem was uns noch alles von dir erwarten wird... RESPEKT! :-)

Btw, zeichnen ohne WinAPI (GDI) - sondern direkt mal DX based wäre der nächste hammer! ;-) einfach nur sau geil... mehr kann ich zu deinen projekten nicht mehr sagen! Weiter so!
Zitat:
Das ist doch umständlich. Wieso hat Fred das nicht mit DX gemacht?
Soweit ich mal gehört habe, gibt es unter DX keine direkten routinen um Linien, Kreise usw zu zeichnen!? Man müßte sich seine Routinen daher wohl erst selber schreiben!? (ich denke mal, das es dann direkt in den videospeicher gemacht wird um noch mehr performence zu erhalten!?) Aber da kenn ich mich dann doch zu wenig für aus...

Verfasst: 24.08.2005 23:12
von Deeem2031
>Absout saubere Arbeit! Endlich mal reine DX9 only sachen mit PureBasic!

Thx :)

>Dein erstes Beispiel läuft bei mir einwandfrei! Lediglich dein 2. example mit dem Antialiaze (1-3) gehen alle nicht auf meinem system! Naja...

Hm, ich hab vorhin ein Programm gefunden was genau das benutzt was ich versuche und es funktionierte, scheint also ein Fehler meinerseits zu sein.

>Hätte aber noch einen großen Verbesserungsvorschlag! Wie es ausschaut, benutzt deine DX9 lib, die PureBasic Windows Lib! Dadurch wird dein example gleich ca. 14k groß! (weiß nicht, ob die WindowLib nicht splitted ist!?) Zumindest wäre es cool, wenn Du statt evtl. intern "OpenWindow()", deine eigene kleine "optimierte <) " version in deine Lib einbauen kannst... So das die erzeugten DX9 exe doch um einiges kleiner sein könnten! Das wäre dann schonmal der absolute oberhammer von dem was uns noch alles von dir erwarten wird... RESPEKT! :-)

Da scheint einer ein bisl Ahnung zu haben ;) Jo ich benutze die Window-Lib, das wollt ich aber auch erstmal nicht ändern, da ich mit dem DirectX-Zeug genug zu tun habe und mich erstmal nicht um die Windows kümmern wollte. Die Größe der Exe find ich im Moment auch nicht soo wichtig ;)

>Btw, zeichnen ohne WinAPI (GDI) - sondern direkt mal DX based wäre der nächste hammer! ;-) einfach nur sau geil... mehr kann ich zu deinen projekten nicht mehr sagen! Weiter so!

Tja, erstmal wissen wie ^^

>Soweit ich mal gehört habe, gibt es unter DX keine direkten routinen um Linien, Kreise usw zu zeichnen!? Man müßte sich seine Routinen daher wohl erst selber schreiben!? (ich denke mal, das es dann direkt in den videospeicher gemacht wird um noch mehr performence zu erhalten!?) Aber da kenn ich mich dann doch zu wenig für aus...

Ich hab bisher auch keine Routinen dafür gefunden, ihr dürft euch also schonmal drauf vorbereiten eure eigenen Circle(),Line(),...-Procs zu schreiben, die direkt in den Speicher schreiben ;) (Naja, vielleicht mach ich die auch dazu)


Und bevor ich mein Bett besuche, noch ein Update:

Code: Alles auswählen

DisableDebugger
InitSpriteDX9()
InitKeyboard()

#PB_D3D_TribleBuffering =$00000001 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AlphaBlending   =$00000002 ;Verträgt sich nicht mit StartDrawing/StopDrawing
#PB_D3D_CopyBuffer      =$00000004 ;Verträgt sich nicht mit #PB_D3D_TribleBuffering;#PB_D3D_AntiAnalysing*
#PB_D3D_AntiAliasing    =$00000008 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AntiAliasing2   =$00000010 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AntiAliasing3   =$00000020 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer
#PB_D3D_AntiAliasing4   =$00000040 ;Verträgt sich nicht mit #PB_D3D_CopyBuffer


If OpenScreenDX9(0,0,0,":)");,#PB_D3D_AlphaBlending)
  Repeat
    ClearScreenDX9(RGB(0,0,255))
    StartDrawing(ScreenDX9Output())
    For y = 0 To 100-1
      For x = 0 To 100-1
        Plot(x,y,$FF<<((b%3)*8))
      Next
    Next
    StopDrawing()
    FlipBuffersDX9()
    ExamineKeyboard()
  Until KeyboardPushed(#PB_Key_Escape)
Else
  EnableDebugger
  Debug "OpenScreenDX9-Error"
EndIf
Jetzt kann man bei OpenScreenDX9() bei width, height und depth 0 angeben, wobei dann die Werte genommen werden die der Desktop gerade benutzt.
Gültige Wete für Depth sind übrigens: 0;16;24;32;64 ,wobei bei 0 und 24 das #PB_D3D_AlphaBlending-Flag nichts bewirkt und bei 64 #PB_D3D_AlphaBlending gesetzt sein muss!

BTW. LoadSpriteDX9() ist auch schon drin, bringt euch aber noch nichts, da es nach dem Laden des Sprites, dieses sofort wieder löscht ^^