DirectX9-Lib (V. 0.58)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

Deeem2031 hat geschrieben:Ich dachte eigentlich es wäre nicht nötig in jedem Post zu bemerken das die Lib die D3DX9_27.dll (bzw. D3DX9_24.dll) braucht...
zumindest gibt es eine fehlermeldung, die einen darüber aufklärt ... am nächsten tag im forum.

handelt es sich bei dieser dll um eine normale DX9 komponente oder etwas zusätzliches, was extra für deine demo benötigt wird? keine lust mich jetzt durch 11 seiten zu wühlen.
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

Ist ne DX Componente die allerdings scheinbar nur mit dem DX SDK mitgeliefert wird man müste sie also bei der install der Anwendung dem entsprechendem OS beifügen damit das prog dann überall läuft.

Liezenstechnisch darf man das soweit ich das mit bekommen habe.
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

@Deeem
Mir ist da gerade nen kleiner Fehler in der demo aufgefallen.

Und zwar wen man ein sehr kleine bild angibt (32*32Pixel oder kleiner) so bekommt man nen Invalid Memory error

Achso habe da noch ne frage.

Ich steh gerade sowas von aufm schlauch.

Wie bekomme ich ne transparenz auf ein sprite?
Hast du da zufällig nen besipiel von? den ich bekomme es grad echt nicht auf die reihe. Oder funzt das nur mit Texturen?
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

Hab da noch ne kleinigkeit endeckt.

Und zwar wen man einen Text auf dem Screen darstellt so wird dessen Farbe
von der ScreenFarbe beeinflust und macht eine koreckte darstellung unmöglich.

z.B:
Der text von hFont0 sollte eigentlich tyrkies sein

Code: Alles auswählen

; /*************************************************************************************
; / Small Font Example by Mr.Vain of Secretly! (Thorsten Will) & Deeem2031
; / Demonstrating the using of SpriteDX9 v0.57+ by Deeem2031
; /
; / 05-September-2005   /    Load Font and how to define the argument "weight" v0.1
; /*************************************************************************************

  InitSpriteDX9()
  InitKeyboard()

; -------- Run Windowed/FullScreen Mode? and Open DirectX9 Screen --------

  lResult = MessageRequester("Please select:","Run example in FullScreen mode?",#PB_MessageRequester_YesNo)
     
  If lResult = #PB_MessageRequester_No      ; User pressed NoButton
    lMode = #PB_D3D_Windowed|#PB_D3D_AlphaBlending|#PB_D3D_AntiAliasing4
    hScreen = OpenScreenDX9(800,600,32,OpenWindow(0,0,0,800,600,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"SpriteDX9 Example"),lMode)
   Else                                      ; User pressed YesButton
    lMode = #PB_D3D_AntiAliasing4 |#PB_D3D_AlphaBlending
    hScreen = OpenScreenDX9(800,600,32,"SpriteDX9 Example",lMode)
  EndIf
   
  If hScreen = 0
    MessageRequester("Error","Cant open DirectX9 Screen",0)
    End
  EndIf

; -------- Load Fonts and define ints weitgh --------

  #FW_THIN   = 100
  #FW_NORMAL = 400
  #FW_BOLD   = 700
  #FW_HEAVY  = 900
 
  hFont0 = LoadFontDX9("Arial", 64, 40, #FW_THIN)
  hFont1 = LoadFontDX9("Arial", 64, 40, #FW_NORMAL)
  hFont2 = LoadFontDX9("Arial", 64, 40, #FW_BOLD)
  hFont3 = LoadFontDX9("Arial", 64, 40, #FW_HEAVY)

; -------- MainLoop --------

  Repeat
  ClearScreenDX9(RGBA(255,255,255,0))
 
  StartDX9()
   DrawTextDX9(hFont0,"DrawText Thin"  ,20, 20,800,600,RGBA(147,223,224,$FF))
   DrawTextDX9(hFont1,"DrawText Normal",20,120,800,600,RGBA($FF,$FF,$FF,$FF))
   DrawTextDX9(hFont2,"DrawText Bold"  ,20,220,800,600,RGBA($FF,$FF,$FF,$FF))
   DrawTextDX9(hFont3,"DrawText Heavy" ,20,320,800,600,RGBA($FF,$FF,$FF,$FF))
  StopDX9()
 
  FlipBuffersDX9()
  DisableDebugger
 
  ; -------- Check Window Events --------
 
  lEvent.l = WindowEvent()
  While lEvent
    If lEvent = #PB_Event_CloseWindow
      wQuit.w = 1
    EndIf
    lEvent = WindowEvent()
  Wend
 
  ; -------- Check if ESCAPE pressed --------
 
  ExamineKeyboard()
 
  Until KeyboardPushed(#PB_Key_Escape) Or wQuit
  EnableDebugger
 
  ; -------- Quit and free all Stuff -------- 
 
  FreeFontDX9(hFont0)
  FreeFontDX9(hFont1)
  FreeFontDX9(hFont2)
  FreeFontDX9(hFont3)

  CloseScreenDX9()
End
 
; /EOL 
; /**************************************************************************
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Habs endlich rausgefunden warum das so ist. Eigentlich ist es auch ganz logisch, der Text wird nämlich auch durch das AlphaBlending unterschiedlich angezeigt. Dadurch sieht man, wenn man es das Blending falsch eingestellt hat, was falsches. Für Text würde ich "SetAlphaBlendingDX9(#True,#D3DBLEND_SRCALPHA,#D3DBLEND_BOTHINVSRCALPHA)" empfehlen, man kanns aber natürlich auch mit anderen ausprobieren.

Allerdings ist da noch ein Problem, weil DirectX nicht einheitlich beim definieren der Farbe ist. Mal wird RGBA mal BGRA benutzt, desswegen wird die Farbe von dem Text auch falsch dargestellt, ich hab das nämlich genau falsch herum eingebaut. Um das zu umgehen kannst du anstatt "RGBA(147,223,224,$FF)" "ColorFilterDX9(147,223,224,$FF)" benutzen, werd mir aber noch eine bessere Lösung dafür ausdenken.

Sprites kannst du übrigens nicht mit Transparenz anzeigen, geht nur mit Texturen.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Beitrag von super_castle »

also eine tolle leistung. ein lob an den programmierer.
ich benutze purebasic seit 3 tagen und bin voll begeistert von der grafischen vielfalt und den anwendungsmöglichkeiten der dll usw.
purebasic ist eine echte herausforderung für alle programmierer.
obwohl es basic ist , bringt es erstklassische leistungen.

mfg castle
ps: bin 57 jahre alt
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

Super werde ich dann mal gleich testen.
Antworten