Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

UGL Bibliothek

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 09.05.2005, 15:22    Titel: UGL Bibliothek Antworten mit Zitat

Hi,

ich habe mir mal von qbasic.de ein Tutorial über 3-D Grafikprogrammierung heruntergeladen. Dabei war auch die deutsche Version der Bibliothek UGL.

Wenn jemand von euch vieleicht etwas Erfahrung mit UGL hat, kann er mir vielleicht auch helfen:
Mein Problem ist folgendes. Ich kann keinen Frontbuffer erstellen. Das müsste ja mit folgendem Befehl gehen:

Code:

FrontbufferHandle = uglSetVideoDC(UGL.8BIT, 320,200,1)


Doch es passiert nichts. Auch wenn ich noch prüfen lasse ob der Wert FrontbufferHandle gleich 0 ist, passiert nichts.
Und wenn ich PRINT FrontbufferHandle mache, erscheint auch nichts.
Brauch da mal eure HIlfe.

PS.: Kann das vielleicht an meinem Rechner liegen? 500Mhz, 64 MBRAM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 09.05.2005, 16:00    Titel: Antworten mit Zitat

Wenn du die Debug-QLB eingebunden hast, müßte UGL eine UGL.log Datei erstellen. Guck mal darein, ob du was findest.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 09.05.2005, 19:17    Titel: Antworten mit Zitat

Ich poste jetzt einfach mal einen Teil des Quellcodes:

Code:

'       UGL einbinden
'$INCLUDE: 'ugl.bi'
'$INCLUDE: 'kbd.bi'
'$INCLUDE: 'mouse.bi'
'$INCLUDE: 'font.bi'


'       Datenstrukturen
Type, usw...


'      Konstanten
CONST fokus = 160
CONST DEGtoRAD = 3.141593 / 180


'      Sub's
...


'       UGL und Videomodus initialisieren
IF NOT uglInit% THEN
   PRINT "Fehler: UGL konnte nicht gestartet werden."
   END
END IF

DIM SHARED VideoDC AS LONG
DIM SHARED BackpufferDC AS LONG

VideoDC = uglSetVideoDC(UGL.8BIT, 320, 200, 1)    [b] '**** <------- Fehler, nur wo?[/b]

IF VideoDC = 0 THEN
   PRINT "Fehler: Videomodus konnte nicht initialisiert werden."
   uglEnd
   END
END IF

BackpufferDC = uglNew(UGL.EMS, UGL.8BIT, 320, 200)
IF BackpufferDC = 0 THEN
   PRINT "Fehler: Backpuffer konnte nicht erstellt werden."
   uglRestore
   uglEnd
   END
END IF

'      Deklarationen
...


'       Tastaturhandler
kbdInit tastatur

'       Dreieck
Dreieck.p1.x = -40: Dreieck.p1.y = -40: Dreieck.p1.z = 0
Dreieck.p2.x = 0: Dreieck.p2.y = 40: Dreieck.p2.z = 0
Dreieck.p3.x = 20: Dreieck.p3.y = -40: Dreieck.p3.z = 0


'       Hauptschleife
DO
     
  CALL RotierenYXZDreieck3D(Dreieck, 0, 0, yrot, NeuDreieck)
  CALL VerschiebenKamera3D(NeuDreieck, Kamera, NeuDreieck)
  CALL Dreieckzeichnen(NeuDreieck, uglColor(UGL.8BIT, 50, 0, 70))
  CALL Tasten(Kamera, tastatur)

  uglPut VideoDC, 0, 0, BackpufferDC
  uglClear BackpufferDC, uglColor(UGL.8BIT, 0, 0, 0)
  yrot = yrot + 1
  IF yrot >= 360 THEN yrot = 0
LOOP UNTIL tastatur.esc



kbdEnd
uglRestore
uglEnd

END


Der Fehler muss an der Stelle mit dem uglSetVideoDC liegen. denn ohne diesen Befehl läuft das Programm ja ordnungsgemäß weiter, halt nur ohne Frontpuffer. MIt diesem Befehl jedoch, bleibt es immer hängen. Man kann dann nur über die Windowstaste zurück. Nicht mal Pause+STRG funktioniert dann.

Die UGL.log hat nix besonderes angezeigt. Wenn du willst kann ich sie ja auch mal posten.

edit:
Ich seh doch gerade, das in UGL.log da sowas steht:
ems_Init {
check
ERROR!!!
}

Muss ich vielleicht den EMS-Speicher(virtueller SPeicher`???) freisetzen?
Im Handbuch steht da sowas:

Code:

Enable EMS memory
   
        1st) using Windows Explorer, go to the %SystemRoot% path
             (normally: C:\WINNT);
   
        2nd) find the "_default" PIF file;
   
        3rd) right-click it and select "Properties" in the pop-up menu;
   
        4th) at "Memory" tab, set the "Total" box to 16384 (for a system with
             only 32Mb of physical memory; set to 32768 if it has more) on the
             "Expanded (EMS) Memory" group;
   
        5th) press "OK" button :P;
       
    * Run your application in fullscreen or windows will report that your
      video card is not VESA compatible


Aber bei mir findet sich gar kein WINNT ordner. Habe Windows XP. Kann mir das mal jemand für nen XP-Rechner verständlich machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 10.05.2005, 11:28    Titel: Antworten mit Zitat

*nochmal nach ganz oben schieb*
Kann mir denn keiner helfen??

hab das jetzt auch mal auf meinem Win98 Rechner laufen lassen. Dort habe ich dann nur einen weißen Bildschirm.
Im Log beim Win98 steht dann:
Code:

UGL {
   uglInit {
      mem_Init {
      }
      bnk_Init {
         check
      }
      ems_Init {
         check
      }
      b8_Init {
         vbe check
         voodoo check
         ok
      }
      b15_Init {
         check
         ok
      }
      b16_Init {
         check
         ok
      }
      b32_Init {
         check
         ok
      }
   }
   uglSetVideo {
      set
      b8_SetMode {
         mode13h
         set332pal {
            8-bit DAC
         }
      }
      new
      uglNewEx {
         DC
         LL New
         bnk_New {
         }
      }
   }
   uglNew {
      DC
      calcBPS {
         gt 64k
      }
      LL New
      ems_New {
         alloc
      }
   }
   uglRestore {
      change
   }
   uglEnd {
      del
      uglDel {
         LL Del
         bnk_Del {
         }
      }
      exitq
      mem_End {
      }
      bnk_End {
      }
      ems_End {
      }
      b8_End {
      }
      b15_End {
      }
      b16_End {
      }
      b32_End {
      }
   }
}

müsste doch eigentlich funktionieren, tut es aber net. MIst.

Bitte um Hilfe.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 10.05.2005, 15:19    Titel: Antworten mit Zitat

Tipp doch einfach in die Adresszeile %Systemroot% ein. Der System-Ordner heißt Windows bei WinXP. Bei Win98 hzabe ich keine Ahnung, vllt liegt es an deiner Graphikkarte?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 10.05.2005, 18:49    Titel: Antworten mit Zitat

Jo, danke.

Hab das mit dem EMS Speicher jetzt alles so gemacht wie das da steht.
Werde dann mal morgen posten, ob sich was geändert hat bei der Ausführung oder bei UGL.log. missbilligen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 11.05.2005, 13:29    Titel: Antworten mit Zitat

Leider konnte das Problem net behoben werden, durch die EMS Speicher Geschichte.
Es ist immer noch folgendes im log vermerkt:
Code:

UGL {
   uglInit {
      mem_Init {
      }
      bnk_Init {
         check
      }
      ems_Init {
         check
         ERROR!!!
      }
      ERROR!!!
      b8_Init {
         vbe check
         voodoo check
         ok
      }
      b15_Init {
         check
         ok
      }
      b16_Init {
         check
         ok
      }
      b32_Init {
         check
         ok
      }
   }
   uglSetVideo {
      set
      b16_SetMode {
         set
         vbeSetMode {
            find
            set
            bps
            set_bps {
               serv_02
            }
            windows
         }
      }
      new
      uglNewEx {
         DC
         LL New
         bnk_New {
         }
      }
   }
   uglNew {
      ERROR!!!   }
   uglRestore {
      change
   }
   uglEnd {
      del
      uglDel {
         LL Del
         bnk_Del {
         }
      }
      exitq
      mem_End {
      }
      bnk_End {
      }
      ems_End {
      }
      b8_End {
      }
      b15_End {
      }
      b16_End {
      }
      b32_End {
      }
   }
}


Scheint mir so, als wäre bei Front- und beim Backpuffer ein Problem mit dem EMS Speicher. Wie kann ich das lösen?? Beim Backpuffer könnte ich ja auf ein anderes Speicherformat wie MEM gehen, aber beim Frontpuffer?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 11.05.2005, 15:06    Titel: Antworten mit Zitat

Vielleicht hift dir das weiter:
http://www.columbia.edu/~em36/wpdos/windowsxp.html#enableems
http://www.columbia.edu/~em36/wpdos/emsxp.html#biosmethod
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 11.05.2005, 17:25    Titel: Antworten mit Zitat

danke für die links. sind sehr hilfreich.

Hab die config.nt und die _default.pif dateien auch schon so modifiziert wie das da steht und mir jetzt mal diesen Memorytest von der seite besorgt. Bei mir werden folgende Daten ausgepuckt:

Code:

655360    Bytes gesamter konventioneller Speicher
655360    Bytes für MS-DOS verfügbar
586736    maximale Größe für ausführbares Programm

33554432    Bytes gesamter fortlaufender Erweiterungsspeicher
0       Bytes fortlaufender Erweiterungsspeicher verfügbar
16628736    Bytes XMS-Speicher verfügbar
MS-DOS ist resident im oberen Speicherbereich (HMA)


was davon ist nun EMS? der mit 0??

edit: Auf der Seite steht außerdem, dass ich irgendwie ein Shortcut aufm Desktop machen soll, von so ner WP.exe. Ich habe die gar net.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 11.05.2005, 19:40    Titel: Antworten mit Zitat

Das mit dem EMS unter Win XP IST GAR NICHT so schwer wie es beschrieben wird!!!
Anstatt Systemdateien zu verändern mach ichs IMMER so:

Rechtsklick auf die EXE (In dem fall QB.EXE); dann auf Eigentschaften. In dem Dialog den Karteireiter Speicher wählen und EMS auf 16384 oder so stellen zwinkern Geht viel einfacher und ist genau das selbe!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 12.05.2005, 14:39    Titel: Antworten mit Zitat

Sorry, es funktioniert leider immer noch net.
Hab das mal alles soweit gemacht, aber immer noch nur schwarzer Bildschirm und EMS_init = ERROR.

Eigenschaften QB.EXE:
Code:

Hab den "EMS" auf insgesamt 16384

"konventioneller speicher" auf automatisch
"anfänglicher Umgebungsspeicher" automatisch
kein Haken bei "geschützt"

"XMS speicher" auf keiner
kein haken bei "Verwendet HMA"

"Arbeitsspeicher für MS-Dos SChutmodus" auf automatisch


Die Einstellung müssten doch eigentlich funktionieren, oder wie hast du das??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 12.05.2005, 14:58    Titel: Antworten mit Zitat

das regt mich sowas von auf ey, das diese kacke nich funktioniert.
böse böse böse
verdammt, verdammt, verdammt. mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.05.2005, 15:28    Titel: Antworten mit Zitat

Doppelposts bitte vermeiden!
Das phpBB Forum verfügt über eine Funktion zum Editieren der Beiträge... peinlich
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 12.05.2005, 19:01    Titel: Antworten mit Zitat

Na ja, eigentlich wollte ich eine antwort posten, wenn ich mit meinem Programm fertig bin, aber da ich noch eine Arbeit schreibe, kann sich das noch ein bisschen hinziehen.

Also: Ich hab ein bisschen im Internet gesucht und folgendes gefunden: Ca. 5% der Windows XP-PC's können kein EMS benutzen; M$ ist dieser Bug bekannt hat aber noch kein Patch rausgebracht.

Das Programm, von dem ich oben geredet habe, leitet nun die EMS-Aufrufe auf XMS um...funktioniert bisher ohne Probleme, muß aber noch etliche Funktionen schreiben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 13.05.2005, 16:23    Titel: Antworten mit Zitat

mach dir bitte wegen mir keine umstände mit den Augen rollen

hab das jetzt mal auf meinen 3. PC, nen Laptop, getan. Da funktioniert das einigermaßen. Zwar nur in 8 Bit und 320x200, aber immerhin etwas. Wird schon. grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Blitz



Anmeldungsdatum: 13.02.2006
Beiträge: 3

BeitragVerfasst am: 13.02.2006, 23:40    Titel: Antworten mit Zitat

I wouldn't place the backbuffer in EMS if i were you.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 14.02.2006, 17:57    Titel: Antworten mit Zitat

@Blitz
What are you diong?
This thread is more then half year old ...

Was soll das?
Dieser Thread ist mehr als ein halbes Jahr alt ...
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 14.02.2006, 20:13    Titel: Antworten mit Zitat

Er wollte sicherlich nur wissen, ob UGL in der deutschen QB-Community ankommt oder nicht. Er war schließlich neben v1ctor ein Hauptentwickler von UGL.
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.02.2006, 20:43    Titel: Antworten mit Zitat

Stimmt. Die UGL-Lib is für mich die BESTE Qb-grafiklib die's jemals gab!

@Blitz: Congratulations, UGL is the BEST qbasic svga lib which currently exists!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz