Das Löschen von Types führt zu Flackern?
Übersicht

funkmaster5000Betreff: Das Löschen von Types führt zu Flackern? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Community!
Danke der Hilfe von hectic bin ich ein bisschen mehr bei 3D und Draw3D durchgestiegen. Jetzt habe ich folgendes Problem: ich habe einen Type, der die Informationen von Sternen (geht um ein Weltraum-Spiel) beinhaltet. Also: Code: [AUSKLAPPEN] Type stars
Field x# Field y# Field red% Field green% Field blue% End Type Jetzt möchte ich mit einer If-Abfrage erreichen, dass Sterne, sobald sie vom Spieler nicht mehr gesehen werden, gelöscht und 10 neue in Bewegungsrichtung generiert werden. Für letzteres habe ich schon einen Ansatz aus einem 2D Spiel von mir, allerdings macht das Löschen der Types Probleme. Meine Abfrage sieht zum Beispiel so aus (genauer gesagt, eine Funktion): Code: [AUSKLAPPEN] Function testdeletestars()
For s.stars = Each stars If s\x < -400 Then Delete s Next End Function Diese tut auch, was sie soll. Allerdings beginnt, nachdem sämtliche Types gelöscht wurden, der Bildschirm zu flackern. Es gibt auch eine Funktion zum Zeichnen der Sterne: Code: [AUSKLAPPEN] Function drawstars()
For s.stars = Each stars ColorG3D s\red,s\green,s\blue,1 DrawImage3D(star,s\x,s\y) Next End Function Meine Frage: Muss ich bei 3D sicherstellen, dass Objekte eines Types, die ich zeichnen will, auch noch existieren? Bei 2D funktioniert das nämlich. Ließe ich dort für s.stars = each stars einen Stern zeichnen, aber keiner existiert, dann passiert auch nichts. Kann daher das Flackern rühren? Danke im Voraus! |
||
![]() |
TennisballBetreff: Re: Das Löschen von Types führt zu Flackern? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
funkmaster5000 hat Folgendes geschrieben: Meine Frage: Muss ich bei 3D sicherstellen, dass Objekte eines Types, die ich zeichnen will, auch noch existieren? Bei 2D funktioniert das nämlich. Ließe ich dort für s.stars = each stars einen Stern zeichnen, aber keiner existiert, dann passiert auch nichts. Kann daher das Flackern rühren?
Nein, kann es nicht, das hat nichts mit 2D oder 3D zu tun. Gruß, Tennisball |
||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also nach einigem Herumprobieren habe ich das Problem gefunden! Es wird von folgender Funktion verursacht:
Code: [AUSKLAPPEN] Function drawparticles()
For part.particle = Each particle ColorG3D(part\red,part\green,part\blue,part\alpha) DrawImage3D(particles,part\x,part\y) Next End Function Genauer gesagt, von diesem Teil: Code: [AUSKLAPPEN] ColorG3D(part\red,part\green,part\blue,part\alpha)
Wenn ich den Alpha Wert manuell auf 1 setze, ohne die Variable, flackert nichts mehr. Wird jedoch die Variable eingesetzt (wie oben), dann flackert das Bild. Ich habe einfach nach Aufruf dieser Funktion ein ColorG3D(255,255,255,1) eingefügt und das hat das Problem behoben. Trotzdem Danke! |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welchen Datentyp hat part\alpha? Welcher wird von ColorG3D erwartet? Wenn du Int benutzt wo Float gefragt ist (oder anders 'rum) kommt's durch die automatische Konvertierung zu allerlei komischen Effekten. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
part\alpha ist Float, wie von der jeweiligen Funktion verlangt.
Mein Fehler war einfach, dass ich Alpha gesetzt, aber nach dem Funktionsaufruf den ursprünglichen Zustand nicht wiederhergestellt habe. Ist ja logisch, genau wie bei 2D. Verändert man Color in einer Funktion, wird das ja auch ins Hauptprogramm übernommen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group