DirectX9-Lib (V. 0.58)

Anwendungen, Tools, Userlibs und anderes nützliches.
merlin
Beiträge: 157
Registriert: 30.07.2005 22:15

Beitrag von merlin »

Deeem2031 hat geschrieben:ch 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 Wink (Naja, vielleicht mach ich die auch dazu)
hab mal solche routinen selber geschrieben, die auf der basis "jeden pixel einzeln zu zeichnen" basieren! (muß mal schauen ob ich die noch finde oder auf CD gebrannt habe)... ansonsten schau mal

http://forums.purebasic.com/english/vie ... hp?t=16484

:wink:
Benutzeravatar
SoS
Beiträge: 340
Registriert: 29.08.2004 09:31
Kontaktdaten:

Beitrag von SoS »

Deeem2031 hat geschrieben: 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)
Im engl. Board gibts dazu was passendes. http://forums.purebasic.com/english/vie ... hp?t=15855

Für mein LCD nutze ich folgende procedure um in den Speicher zu "plotten"


Code: Alles auswählen


Dim bits(7)
bits(0)=%10000000
bits(1)=%01000000
bits(2)=%00100000
bits(3)=%00010000
bits(4)=%00001000
bits(5)=%00000100
bits(6)=%00000010
bits(7)=%00000001

speicher = AllocateMemory(9600)

Global speicher

Procedure LCDPlot (X,Y,f)
  If X>= 0 And X<lcdscreenx And Y>= 0 And Y<lcdscreeny
    addr = speicher+((lcdscreenx/8)*Y)+(X/8) 
    If f=0
        X % 8
        PokeB(addr,(PeekB(addr) | bits(X)) & ~bits(X))
     Else
        X % 8
        PokeB(addr,PeekB(addr) | bits(X))
    EndIf
  EndIf
EndProcedure

Die Auflösung des LCD beträgt 320x240x1bit

Ich hoffe das hilft ein wenig :wink:
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

@merlin: Das ist jetzt aber dein Thread im englischen Forum, ich schau ja sonst so gut wie nie in das engl. Forum, werd also wenn überhaupt sehr selten da posten.

@SoS: Thx für die Hilfe, werd ich mir später mal genauer angucken.

Version 0.2:

Neue Befehle:

CloseScreenDX9()
LoadTextureDX9(filename.s)
DisplayTextureDX9(texture,x.f,y.f)
FreeTextureDX9(hTexture)
StartDX9([flags])
StopDX9()

Bsp-Code und DownloadLink findet ihr auf der 1. Seite.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

ich wei nicht, ob folgendes problem schon auftrat, da ich zu faul war, alles zu lesen.
jedenfalls kommt beim code auf der 1 seite folgende fehlermeldung:

LoadTextureDX9() is not a funtion an arrayor a linked list.

wiso das? :|


ps. ja, ich habe die neue lib runtergeladen, und ja, sie befeindet sich im compiler ordner /:->
-.-"
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Libraries gehören aber für gewöhntlich in den Purelibraries/UserLibraries-Ordner ;)

Und Compiler neustarten nicht vergessen!
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

sorry, schreib fehler, bion wirklich müde.....
:lol:

ich meinte natürlich diesen ordner :wink:
-.-"
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Also bei mir funktionierts...

Naja, vielleichts funzt bei dir mit Version 0.3:

Neu:
optionaler DisplaySetting-Parameter für DisplayTextureDX9()
SetAlphaBlendingDX9()

AlphaBlending funzt jetzt :)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
SoS
Beiträge: 340
Registriert: 29.08.2004 09:31
Kontaktdaten:

Beitrag von SoS »

Moin

Hab nun mal ein wenig Zeit zum testen und muste feststellen das alle Programme nicht laufen :(

habe mal versucht den Fehler zu lokalisieren und nicht mal folgender Code läuft

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
merlin
Beiträge: 157
Registriert: 30.07.2005 22:15

Beitrag von merlin »

@Deeem2031: Cool... ;-)
Hab da aber mal ein paar Fragen zur v0.3 ....

Code: Alles auswählen

LoadTextureDX9(filename.s)
Einfach nur Filename, ohne Sprite bzw Texturenummer? Oder soll das ganze dann etwa wie folgt aussehen...:

texture1 = LoadTextureDX9(filename.s) ; ?? Hab es mit einer 256x256 Texture bzw BMP versucht... und erhalte in der variable texture1 immer den wert 0 ! (Entweder verwende ich den befehl falsch oder nen bug!?)

Code: Alles auswählen

DisplayTextureDX9(texture,x.f,y.f)
Hier stellt sich gleiche Frage, wie zuvor... texture = das handle oder #texture = die nummer!? Was ich noch nicht so ganz verstanden habe, warum x.f und y.f ?? (Für spätere transformationen und texturemapping coordinaten anstatt reine integer x y ?)

Code: Alles auswählen

StartDX9([flags])
StopDX9()
Als flag wäre(n) z.b. folgende: ???
#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

Danke ;-) Weiter so!
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

@SoS: Seltsam, haste vielleicht kein DX9 installiert? (Ok, die frage war glaub ich überflüssig ^^)
Aber den Wert den InitSpriteDX9() zurückgibt wüsste ich gerne, dann kann ichs vielleicht genauer analysieren.

@merlin:
-LoadTextureDX9(filename.s)

Dachte eigentlich aus meinem Beispiel könnte man das entnehmen, jedenfalls funktioniert es so wie du schon sagtest "texture1 = LoadTextureDX9(filename.s)"

>Hab es mit einer 256x256 Texture bzw BMP versucht... und erhalte in der variable texture1 immer den wert 0 ! (Entweder verwende ich den befehl falsch oder nen bug!?)

Hm, seltsam. Kannst du vielleicht mal nachgucken ob bei dir eine "D3DX9_24.dll" im System-Ordner liegt? Vielleicht findet er die Procedure zum Laden der texture einfach nicht.

-DisplayTextureDX9(texture,x.f,y.f)

>Hier stellt sich gleiche Frage, wie zuvor... texture = das handle oder #texture = die nummer!?

Das handle natürlich, wenns keine Nummern beim laden gibt, gibts die auch nicht beim Anzeigen ;)

>Was ich noch nicht so ganz verstanden habe, warum x.f und y.f ?? (Für spätere transformationen und texturemapping coordinaten anstatt reine integer x y ?)

DirectX will Floats, also geb ich DirectX Floats, ansonsten hät ich auch longs genommen.

-StartDX9([flags])

>Als flag wäre(n) z.b. folgende: ???

Anscheinend hast du dir das Beispiel auf Seite 1 wirklich noch nicht angeguckt ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Antworten