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 »

hFont = LoadFontDX9(Fontname.s, Height, Width, Weight)

LoadFontDX9() benötigt die angabe eines Wertes für das Argument Weight! Leider ist bisher im HelpFile keine info dazu! (dieses wird geändert)! Daher poste ich mal ein kleines example, wie ihr den Weight Wert richtig benutzt! ;)

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(0,0,100,0))
  
  StartDX9()
   DrawTextDX9(hFont0,"DrawText Thin"  ,20, 20,800,600,RGBA($FF,$FF,$FF,$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  
; /************************************************************************** 
merlin
Beiträge: 157
Registriert: 30.07.2005 22:15

Beitrag von merlin »

Dieses sollte eine komplette liste mit allen "Weight" argumente für LoadFontDX9() sein ..!?

Code: Alles auswählen

hFont = LoadFontDX9(Fontname.s, Height, Width, Weight)

#FW_DONTCARE    =  0
#FW_THIN        =  100
#FW_EXTRALIGHT  =  200
#FW_LIGHT       =  300
#FW_NORMAL      =  400
#FW_MEDIUM      =  500
#FW_SEMIBOLD    =  600
#FW_BOLD        =  700
#FW_EXTRABOLD   =  800
#FW_HEAVY       =  900
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Da ich lange nichts mehr zu dem Thema von mir gegeben habe, stell ich mal eine neue Version rein, auch wenn 'se noch nicht ganz fertig ist.
Ich habe nämlich das ganze System umgebaut und dadurch sogut wie alle Procs neu geschrieben, Folge war das manches komischerweise nicht funktioinert. Wenn man z.B. LoadTexture() benutzt stürzt StartDX9() ab, auch wenn ich da intern überhaupt keinen Zusammenhang sehe...

Ansonsten hab ich zwar noch keinen Fehler gefunden, aber ich bin mir sicher das es noch welche gibt, auch wenn ich außer dem System nicht viel geändert habe:

-DrawTextDX9() fixed
-TriangleDX9() added
-#PB_D3D_NoVsync added (Vsync is now enabled by Default)
-the Library now works with D3DX9_24.dll, D3DX9_25.dll, D3DX9_26.dll Or D3DX9_27.dll (D3DX9_27.dll prefered)
-TextureWidthDX9()/TextureHeightDX9() added

Download für die Beta: http://www.deeem2031.de/SpriteDX9
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

LoadTexture funktioniert jetzt, allerdings habe ich immernoch nicht das erreicht was ich in Version 0.58 haben wollte. Also hier 0.579 :)

Für die Änderungen seit 0.57 einfach den Post hiervor lesen, Unterschied ist nur beim gefixten LoadTextureDX9() und dass die HilfeDateien, sowie die Resident aktuallisiert sind.

Download: http://www.deeem2031.de/SpriteDX9.zip

Feedback erlaubt ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
merlin
Beiträge: 157
Registriert: 30.07.2005 22:15

Beitrag von merlin »

Hier gibts noch schnell die aktuellen Examples zur 0.579: www.superfilm.tv/SpriteDX9_Examples0579.zip
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

...wann gehts weiter ?? ;)
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

Tagchen

Also die Lib scheint ja echt cool zu sein leider funst sie bei mir nicht :?

Wen ich eines der Example (egal welches) compile crasht es sofort mit der meldung "Invalid memory access"
Dies geschieht generell bei OpenScreenDX9 (egal ob windowed oder fullscreen)
Wen ich den debuger ausschalte kommt dann nach dem start dann ne Windows error "Die anwendung ...... verweist auf ......"

Dachte erst das eventuell was an meiner DX version nicht stimmt also erstmal geupdatet naja aber das hat nix gebracht es ist immernoch das gleiche problem. :?

Mein Sys sieht so aus falls dir das eventuell weiterhilft.

OS: WIN2k Prof SP4
DX: 9.0c
CPU: Amd 2800+
GPU: NV GFX 5900 (neuester treiber ist drauf)
RAM: Corsair 512 MB
HDD: 80'er WD & 2*200'er Samsung



Achso dann noch ne kleine OT frage unter welche lizens wirst du die lib stellen GPL? LGPL? oder ganz andere?


Mfg
Nero
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

@xperience2003: jetzt ;)

@Nero: Schreib mal vor eins der Beispiele den Code:

Code: Alles auswählen

Procedure OnError()
  Protected Msg$
  
  Msg$ = "There was an error:"+Chr(13)+Chr(10)+Chr(13)+Chr(10)
  Msg$ + "Description: " + GetErrorDescription()+Chr(13)+Chr(10)
  Msg$ + "Addr: " + Str(GetErrorAddress())+Chr(13)+Chr(10)
  Msg$ + "Module: "+GetErrorModuleName()+Chr(13)+Chr(10)
  Msg$ + "LineNR: " + Str(GetErrorLineNR())+Chr(13)+Chr(10)
  Msg$ + "Total number of errors: "+Str(GetErrorCounter())+Chr(13)+Chr(10)+Chr(13)+Chr(10)
  
  Msg$ + "Asm-Code:"+Chr(13)+Chr(10)
  Pointer=GetErrorAddress()
  For i = 1 To 5
    ThisPosition=Pointer
    Pointer=DisASMCommand(Pointer)
    Msg$ + Hex(ThisPosition)+" - " + GetDisASMString()+Chr(13)+Chr(10)
  Next
  Msg$ + Chr(13)+Chr(10)
  
  Msg$ + "Continue program ?"
  
  SetClipboardText(msg$)
  
  If MessageRequester("Error!",Msg$,16|#PB_MessageRequester_YesNo) = 6
    ProcedureReturn #True
  Else
    End
  EndIf
EndProcedure

OnErrorGosub(@OnError())
...und führe es nochmal aus. Den Text der dann im Clipboard steht gibts du mir dann, ich hoffe dann kann ich den Fehler lokalisieren.



Zu der Lizenz: Du darfst alle meine (bisherigen) Libs in kommerziellen Programmen verwenden, ich verlange nichtmal eine Erwähnung in den Credits oder Ähnliches, nur die Library alleine darfst du nicht verkaufen - welcher Lizenz das entspricht weiß ich leider nicht ;)
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 »

Deeem2031 hat geschrieben:Ich weiß jetzt woran es liegt: Du hast die D3DX9_24.dll nicht auf deinem Computer, welche aber für LoadTextureDX9() gebraucht wird.
Also entweder du lädst die Date z.B. von http://www.dll-files.com/dllindex/dll-f ... l?d3dx9_24 in dein System32-Ordner, oder wartest auf die nächste Version, in der dann zwar OpenScreenDX9() funktionieren wird, LoadTextureDX9() aber nicht.
Warscheinlich bastel ich dann auch noch eine LoadTexture-Proc die ohne die dll läuft, aber bis dahin braucht ihr die DLL um eine Texture zu laden.
Kann es sein das ihm einfach nur die dll fehlt oder wird diese nicht mehr gebraucht ?
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Stimmt, wird warscheinlich daran liegen. Die Beispiele überprüfen ja nicht ob InitSpriteDX9() fehlgeschlagen ist oder nicht - sollte man vielleicht einbauen.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Antworten