IrrlichtWrapper 1.05 (leider immer noch beta)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Beitrag von neotoma »

Ich habe es auch mit schrecken vernommen - Irrlicht 1.5 ....
Leider komme ich nicht dazu, das alles richtig einzupflegen.
Die aktuelle Wrapper-Version bei mir ist 1.4.2. Aber noch stark dokumentierungsbedürftig.

Von wegen Beta-Version : Es wird halt nie ganz rund laufen.
Ich denke aber, es ist kein wirklicher Beta-Status. (Mache ich auch nicht mehr... jeder denkt, das wäre nicht fertig.... und deswegen schauts keiner an... :-) )

Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Beitrag von tft »

Hallo ..

habe ja schon das eine oder andere mit der irrlichtwrapper gemacht. Gibts denn mal nen Download der actuellsten version.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)
r7mk4
Beiträge: 13
Registriert: 03.08.2005 11:58

Beitrag von r7mk4 »

Hi,

ich hab damit mal rumgespielt und muß sagen, daß sehr schnell sehr sehenswerte Ergebnisse entstehen.

Um's vorzuführen wollte ich es compilieren und weitergeben.

Unter 4.1 läuft mein Progrämmchen einwandfrei (nur ne modifizierte example-file) nur die .exe will immer eine dll. (IrrlichtWrapper version: 1.05beta). Soll ja ohne dll laufen... Egal, wenn ich die dll ins exe-Verzeichnis kopiere kommt der Fehler: Procedureeinsprung in dll nicht gefunden...

Unter 4.3 muß man den Irr3DRequester anpassen und bekommt irgendwas zu laufen nur man sieht nichts. Wohl weil CreateGadgetList() noch verwendet wird.

Gibt's da irgendwelche Ideen oder Lösungen??

Gruß
R7mk4
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Beitrag von Max_der_Held »

Hi r7mk4,
Unter 4.3 muß man den Irr3DRequester anpassen und bekommt irgendwas zu laufen nur man sieht nichts. Wohl weil CreateGadgetList() noch verwendet wird.
liegt nicht an creategadgetlist. des kannste inzwischen ja wieder einfach weglassen^^.
hast du den Irr3dRequester schon komplett angepasst?
hier mal ne angepasste Version (für alle anderen)

ps: keine Garantie etc ;)
Warum's schwarz bleibt kann man so schnell nicht sagen..
kannst du den Sourcecode posten?

- mfg max.

Irr3DRequester.pb ; 4.30

Code: Alles auswählen

;; ---------------------------------------------------------------------------- 
;; Irrlicht Wrapper For Imperative Languages - Purebasic Examples 
;; IrrlichtWrapper and FreeBasic-Example by Frank Dodd (2006) 
;; Improved IrrlichtWrapper and PureBasic-Example by Michael Taupitz (2006) 
;; ---------------------------------------------------------------------------- 
;; Example 17 : Selecting Nodes With the Mouse 
;; This example allows you To move the mouse around the display And To Select 
;; nodes on the screen by hovering over them. 
;; ---------------------------------------------------------------------------- 

; 

XIncludeFile #PB_Compiler_Home + "Includes\IrrlichtWrapper_Include.pbi" 

Structure videomodeStruct 
  mode.l 
  dimension.IRR_DIM2D 
  depth.l 
EndStructure 


Structure vmodeSettingsStruct 
  videomode.videomodeStruct 
  device.l 
  fullscreen.l 
  stencilshadows.l 
  antialiasing.l 
  vSync.l 
  useFpu.l 
EndStructure 

Enumeration 
  #IRR3DREQ_LAUNCH 
  #IRR3DREQ_CANCEL 
  #IRR3DREQ_NONE 
EndEnumeration 
  

Define irr3DRequesterSetting.vmodeSettingsStruct 

UseJPEGImageDecoder() 

Procedure.l Irr3DRequester(doStart.l = #True) 
  Shared irr3DRequesterSetting 
  
  Define MainWindow.l   ; Id of the Window 
  Define comboDriver.l   ; Id of the ComboBox for Drivers 
  Define comboMode.l   ; Id of the combobox for ScreenModes 
  
  ;Ids of the Checkboxes 
  Define cbFullscreen.l, cbSize.l, cbAnitialias.l, cbStencilshadows.l, cbVSync.l, cbFPU.l 
  
  ;Ids of the Buttons 
  Define btnCancel.l, btnOk.l 
  
  Define drivercount.l, DriverId.l, DriverName.s    ; Infos about the Drivers... 
  
  Define irr.l  ; Pointer to the Irrlicht-Engine 
  
  Define vcount.l   ; Counter for the Videomode-List 

  Define i.l  ; simple Variable for For-Loops 
  
  Define Quit.l = #IRR3DREQ_NONE    ; Quit-Flag 

  
  Define event.l  ; Window-Event 
  
  NewList videomodes.videomodeStruct() 

  
  ; #### Here Starts the Requester ! 
  
  OpenPreferences("Irr3D.prefs") 
    irr3DRequesterSetting\videomode\mode = ReadPreferenceLong  ("ScreenMode"        , -1) 
    irr3DRequesterSetting\device = ReadPreferenceLong  ("Device"        , 4) 
    irr3DRequesterSetting\fullscreen = ReadPreferenceLong  ("FullScreen"        , #False) 
    irr3DRequesterSetting\stencilshadows = ReadPreferenceLong  ("StencilShadows", #False) 
    irr3DRequesterSetting\antialiasing = ReadPreferenceLong  ("AntiAlias", #False) 
    irr3DRequesterSetting\vSync = ReadPreferenceLong  ("VSync", #False) 
    irr3DRequesterSetting\useFpu = ReadPreferenceLong  ("useFpu", #False) 
  ClosePreferences() 
  
  MainWindow.l = OpenWindow(#PB_Any, 503, 382, 380, 236, "Irr3DRequester",  #PB_Window_SystemMenu  | #PB_Window_TitleBar ) 
  If MainWindow  
      ; ImageGadget(#PB_Any, 0, 0, 70, 40, ImageID(CatchImage(#PB_Any,?logo)))  ; TODO 
      comboDriver.l = ComboBoxGadget(#PB_Any, 120, 90, 240, 21) 
      comboMode.l = ComboBoxGadget(#PB_Any, 120, 120, 240, 21)      
      TextGadget(#PB_Any, 10, 90, 90, 20, "Driver") 
      TextGadget(#PB_Any, 10, 120, 100, 20, "Videomode") 
      
      cbFullscreen.l = CheckBoxGadget(#PB_Any,10,150,120,20,"Fullscreen") 
      SetGadgetState(cbFullscreen,irr3DRequesterSetting\fullscreen) 

      cbStencilshadows.l = CheckBoxGadget(#PB_Any,140,150,120,20,"Stencilshadows") 
      SetGadgetState(cbStencilshadows,irr3DRequesterSetting\stencilshadows) 

      cbAnitialias.l = CheckBoxGadget(#PB_Any,250,150,120,20,"AntiAlias") 
      SetGadgetState(cbAnitialias,irr3DRequesterSetting\antialiasing) 

      cbVSync.l = CheckBoxGadget(#PB_Any,140,170,120,20,"VSync") 
      SetGadgetState(cbVSync,irr3DRequesterSetting\vSync) 

      cbFPU.l = CheckBoxGadget(#PB_Any,10,170,120,20,"use FPU") 
      SetGadgetState(cbFPU,irr3DRequesterSetting\useFpu) 
      
      
      btnOk.l = ButtonGadget(#PB_Any, 280, 200, 90, 30, "OK") 
      btnCancel.l = ButtonGadget(#PB_Any, 10, 200, 100, 30, "Cancel")        
    
    ; Now we use the Irrlicht-Device NULL to get all possible Screenmodes      
    irr.l = IrrStart(#IRR_EDT_NULL, 0, 0, #IRR_WINDOWED, #IRR_NO_SHADOWS, #IRR_IGNORE_EVENTS); 
    If irr 
      vcount.l = IrrGetVideoModeCount() 
      If vcount > 8000 
         vcount = 8000 
      EndIf 
      For i = 0 To vcount-1 
        AddElement(videomodes())    
        videomodes()\mode = i 
        videomodes()\depth = IrrGetVideoModeDepth(i) 
        IrrGetVideoModeResolution(i, @videomodes()\dimension) 
      Next 
      ;With the Screenmodes, we can populate the Comob-Boxes  
      ForEach videomodes() 
        AddGadgetItem(comboMode,videomodes()\mode, Str(videomodes()\dimension\width)+"x"+Str(videomodes()\dimension\height)+" "+Str(videomodes()\depth)+" bit") 
      Next  
      ; Select previous mode 
      SetGadgetState(comboMode,irr3DRequesterSetting\videomode\mode) 
    
      Restore drivers 
      Read DriverId.l 
      drivercount.l =0 
      While DriverId <> -1 
        Read.s DriverName.s 
        AddGadgetItem(comboDriver,drivercount,DriverName) 
        If DriverId = irr3DRequesterSetting\device 
          SetGadgetState(comboDriver,drivercount); 
        EndIf 

        Read.s DriverId.l 
        drivercount+1 
      Wend 
;-ToDo Why not make a CloseDevice() after requestein NullDevice ?      
;      IrrStop() 
    Else 
      MessageRequester("Problem !","Not able to create the NULL-Device with Irrlicht !",#PB_MessageRequester_Ok) 
      ProcedureReturn #False; Not Sucessfull 
    EndIf 

    
    SetActiveWindow(MainWindow) 
    Repeat 
      event = WaitWindowEvent() 
        
      Select event 
        
        Case #PB_Event_Gadget 
          
          Select EventGadget()            
            Case btnOk 
              Quit = #IRR3DREQ_LAUNCH 
            
            Case btnCancel 
              Quit = #IRR3DREQ_CANCEL 
          
          EndSelect 
              
        Case #PB_Event_CloseWindow 
          Quit = #IRR3DREQ_CANCEL        
      EndSelect 
    Until Quit <> #IRR3DREQ_NONE    
  Else 
    MessageRequester("Problem !","Not able to create the Irr3DRequester-Window !",#PB_MessageRequester_Ok) 
    ProcedureReturn #False; Not Sucessfull 
  EndIf 
  
  If Quit = #IRR3DREQ_LAUNCH 
    ;find Videomode 
    irr3DRequesterSetting\videomode\mode = GetGadgetState(comboMode); 
    ForEach videomodes() 
      If videomodes()\mode = irr3DRequesterSetting\videomode\mode 
        irr3DRequesterSetting\videomode\dimension\width = videomodes()\dimension\width 
        irr3DRequesterSetting\videomode\dimension\height = videomodes()\dimension\height 
        irr3DRequesterSetting\videomode\depth = videomodes()\depth 
        Break; 
      EndIf 
    Next 
    ; find drive-ID 
    Restore drivers 
    Read.l DriverId.l 
    While DriverId <> -1 
      Read.s DriverName.s 
      If DriverName = GetGadgetText(comboDriver) 
        irr3DRequesterSetting\device = DriverId 
        Break; 
      EndIf 
      Read.l DriverId.l 
    Wend 
    
    irr3DRequesterSetting\fullscreen = GetGadgetState(cbFullscreen) 
    irr3DRequesterSetting\stencilshadows = GetGadgetState(cbStencilshadows) 
    irr3DRequesterSetting\antialiasing = GetGadgetState(cbAnitialias) 
    irr3DRequesterSetting\vSync = GetGadgetState(cbVSync) 
    irr3DRequesterSetting\useFpu = GetGadgetState(cbFPU) 
  
  
    CreatePreferences("Irr3D.prefs") 
      WritePreferenceLong("ScreenMode",irr3DRequesterSetting\videomode\mode) 
      WritePreferenceLong("Device",irr3DRequesterSetting\device) 
      WritePreferenceLong("FullScreen",irr3DRequesterSetting\fullscreen) 
      WritePreferenceLong("StencilShadows",irr3DRequesterSetting\stencilshadows) 
      WritePreferenceLong("AntiAlias",irr3DRequesterSetting\antialiasing) 
      WritePreferenceLong("VSync",irr3DRequesterSetting\vSync) 
      WritePreferenceLong("useFpu",irr3DRequesterSetting\useFpu) 
    ClosePreferences()    

    CloseWindow(MainWindow) 
    ;Should we start the correct device ? 
    If doStart = #True 
      
      ProcedureReturn IrrStartEx(irr3DRequesterSetting\device,irr3DRequesterSetting\videomode\dimension\width,irr3DRequesterSetting\videomode\dimension\height,irr3DRequesterSetting\fullscreen, irr3DRequesterSetting\stencilshadows,#IRR_CAPTURE_EVENTS, irr3DRequesterSetting\videomode\depth, irr3DRequesterSetting\antialiasing, irr3DRequesterSetting\useFpu,irr3DRequesterSetting\vSync,0)      
    
    EndIf 

     ProcedureReturn #True ; Successfull, but not started the Irrlicht-Device 
  EndIf 
  
  CloseWindow(MainWindow) 
  ProcedureReturn #False; Not Sucessfull or Canceled 
    
EndProcedure 



DataSection 
drivers: 
  Data.l #IRR_EDT_DIRECT3D8 
  Data.s "DirectX 8" 

  Data.l #IRR_EDT_DIRECT3D9 
  Data.s "DirectX 9" 
  
  Data.l #IRR_EDT_OPENGL 
  Data.s "OpenGl" 
  
  Data.l #IRR_EDT_SOFTWARE 
  Data.s "Software" 

  Data.l #IRR_EDT_software2
  Data.s "BurningsVideo" 
  
  Data.l -1 
; 
  ; logo: IncludeBinary "media\WrapperLogo.jpg" 
  
EndDataSection
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Beitrag von Max_der_Held »

"naja-kleiner" bugreport: bei der Structure fällt vielleicht dem ein oder anderen was auf... Tipp: Feuer wird mit paritcleeffekten[ gemacht :D ;)
(Structure von irrlichtwrapper_include.pbi")

Code: Alles auswählen

Structure IRR_PARTICLE_EMITTER
   ...
    min_paritlcles_per_second.l   ; Minimum Spawnrate in Particles/Second
    max_paritlcles_per_second.l   ; Maximum Spawnrate in Particles/Second
   ...
EndStructure
Das ist aber nicht die Welt, der kleine Vertipper.
Habe es bei mir so belassen, und sogar die eigene structur für Feuereffekte mit dem Element

"current_min_paritlcles_per_second.f" belassen :D ;)

-mfg max :)
Arthur
Beiträge: 114
Registriert: 03.03.2009 19:40

Beitrag von Arthur »

Wie lange dauerts denn jetzt noch bis die nächste Version rauskommt?

mfg Arthur
Arthur
Beiträge: 114
Registriert: 03.03.2009 19:40

Beitrag von Arthur »

Aso, PS: Bei mir geht weder NORMAL noch PARALLAX Mapping, schade dann kann ich die Engine nicht gebrauchen :(

mfg Arthur
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Beitrag von KatSeiko »

Ähm... Wie sieht das aus mit einer aktuelleren Version? Ich hab vor Kurzem meine Vista-Partition zerlegt (was aber primär an ein paar Programmen lag, nicht an Vista). /:->

Wann gibt es denn wieder einen aktuellen Wrapper, der mit 4.30 (oder 4.31) klarkommt? :D
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
funkheld
Beiträge: 647
Registriert: 31.12.2009 11:58

Re: IrrlichtWrapper 1.05 (leider immer noch beta)

Beitrag von funkheld »

Ich suche hierfür eine Erklärung : IrrSaveScreenshot("./game.bmp") vom irrlichtwrapper.

Ich möchte nicht in einer BMP abspeichern sondern auf einem Image.
Ich suche eine Lösung, wie ich an den Zeiger bzw an die Daten rankomme um sie selber zu bearbeiten.

Danke.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: IrrlichtWrapper 1.05 (leider immer noch beta)

Beitrag von Max_der_Held »

schon was gefunden zu texture to image-creation? (andersrum wäre es kein problem.. )
in den irrlicht foren findet man da ja auch nicht gerade viel.. (wenns nur um die textur ginge könntest du das ja als image laden und zur irrlicht-textur convertieren, wannimemr du eine änderung machst [wobei sich die alte textur irgendwie ja nicht löschen lässt..] )

um was geht's denn konkret? eine art Raytracer?

meine Empfehlung: render das ganze auf ein rendertarget-textur und wirf einen postprocessing shader drüber, wenn es um sowas geht.. (hab sowas bisher aber nur bei der n3xtd-engine gemacht.. da gibts auc hein schönes beispiel ;) )

ansonsten... viel glück :)

lg
walker
Antworten