Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 09.05.2005, 16:22 Titel: UGL Bibliothek |
|
|
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 |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 09.05.2005, 17:00 Titel: |
|
|
Wenn du die Debug-QLB eingebunden hast, müßte UGL eine UGL.log Datei erstellen. Guck mal darein, ob du was findest. |
|
Nach oben |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 09.05.2005, 20:17 Titel: |
|
|
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 |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 10.05.2005, 12:28 Titel: |
|
|
*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 |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 10.05.2005, 16:19 Titel: |
|
|
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 |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 10.05.2005, 19:49 Titel: |
|
|
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. |
|
Nach oben |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 11.05.2005, 14:29 Titel: |
|
|
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 |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
|
Nach oben |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 11.05.2005, 18:25 Titel: |
|
|
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 |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 11.05.2005, 20:40 Titel: |
|
|
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 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 |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 12.05.2005, 15:39 Titel: |
|
|
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 |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 12.05.2005, 15:58 Titel: |
|
|
das regt mich sowas von auf ey, das diese kacke nich funktioniert.
verdammt, verdammt, verdammt. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 12.05.2005, 20:01 Titel: |
|
|
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 |
|
|
Jan
Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 13.05.2005, 17:23 Titel: |
|
|
mach dir bitte wegen mir keine umstände
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. |
|
Nach oben |
|
|
Blitz
Anmeldungsdatum: 13.02.2006 Beiträge: 3
|
Verfasst am: 14.02.2006, 00:40 Titel: |
|
|
I wouldn't place the backbuffer in EMS if i were you. |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
Stormy
Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 14.02.2006, 21:43 Titel: |
|
|
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 |
|
|
|