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:

Zeichnungsreihenfolge

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



Anmeldungsdatum: 20.04.2021
Beiträge: 3

BeitragVerfasst am: 20.04.2021, 19:06    Titel: Zeichnungsreihenfolge Antworten mit Zitat

Hallo @All. Das ist mein erster Beitrag.

Ich habe eine softwarebasierte 3D-Engine geschrieben und habe dabei bei der Zeichnungsreihenfolge ein Problem festgestellt.

Zum Verständnis eine kurze Erläuterung des Programmes:

- Variablen setzen und Bildschirm mit 4 Bildschirmseiten
- lade in BS2 die Karte (BMP) ->hole Bildpunktkoordinaten mit POINT
- lade in BS3 den Himmel (BMP) ->hole Bildpunktkoordinaten mit POINT
- Bearbeite BS1
->zeichne Himmel
->zeichne Boden
->zeichne Gegenstände
- Berechnungen
-Screencopy
- zurück zum Schleifenanfang

Soweit so gut. Allerding überdeckt der Himmel dabei immer die Gegenstände?

Codetechnisch sieht die betreffende Stelle so aus:
Code:
screenset 3,0 'Daten aus Karte Speicher 3 (Himmel oder Decke) holen
        if gamemode="plane" or gamemode="free" then recolsky=point(poix+100+spox,poiy+100+spoy)
        if gamemode="room" then recolsky=point(poix+px,poiy+py)
               
        screenset 2,0 'Daten aus Karte Speicher 2 (Boden) lesen
        recol=point(poix+px,poiy+py)
       
        screenset 1,0 'Zurück zur Arbeitsfläche
        'line (dbx,skry)-(dbx-(bsweite/(pwdhyp-1)),skry-dyfkr),recolsky,bf 'Himmel zeichnen
        line (dbx,dby)-(dbx-(bsweite/(pwdhyp-1)),dby+dyfkr),recol,bf 'Boden zeichnen
       
        'Sonderteile zeichnen
                   
                                              if recol=RGB(190,190,190) then line (dbx,dby)-(dbx-(bsweite/(pwdhyp-1)),dby+dyfkr-bldsize),recol,bf 'Hellgrau - Säule


Ich habe schon viele Sache umgestellt und ausprobiert. Jedoch ohne Erfolg. Vielleicht bin ich mittlerweile Betriebsblind.

Mir scheint, dass beim Compilieren die Reihenfolgen irgendwie verwechselt werden...

Ich bin für jede Hilfe dankbar.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DerDritteBeobachter



Anmeldungsdatum: 20.04.2021
Beiträge: 3

BeitragVerfasst am: 21.04.2021, 07:36    Titel: Antworten mit Zitat

Der Fehler ist gefunden. Die Zeichnungsreihenfolge von FB ist korrekt. grinsen

Zur Info:
Ich baue das Bild in der Engine Zeilenweise auf. Damit stimmt die Reihenfolge: Himmel, Boden, Objekte. Allerdings wurden die Strukturen, welche höher als die Decke (der Himmel) waren, immer mit der nächsten Zeile überschrieben.

Dämlicher Logikfehler mit dem Kopf durch die Mauer wollen

Jetzt habe ich die Routinen geändert. happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4385
Wohnort: ~/

BeitragVerfasst am: 22.04.2021, 13:44    Titel: Antworten mit Zitat

DerDritteBeobachter hat Folgendes geschrieben:
Der Fehler ist gefunden. Die Zeichnungsreihenfolge von FB ist korrekt. grinsen

Alles andere hätte mich auch, ehrlich gesagt, gewundert. grinsen

Ja, zeilenweises Schreiben ist da ein Problem - da war zum Erkennen der Codeausschnitt etwas zu knapp.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DerDritteBeobachter



Anmeldungsdatum: 20.04.2021
Beiträge: 3

BeitragVerfasst am: 26.04.2021, 09:35    Titel: Antworten mit Zitat

Ich wollte jetzt ein paar Screenshots online stellen, aber offenbar unterstützt das Forum das nicht. Dann richte ich eben demnächst vielleicht eine Sourceforgeseite ein...
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 -> Allgemeine Fragen zu FreeBASIC. 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