Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Geheim

Treue Seele

  • »Geheim« ist der Autor dieses Themas

Beiträge: 202

Wohnort: Salzburg

Beruf: Schüler

  • Private Nachricht senden

1

14.08.2012, 03:10

SFML 2 sf::Text: Einzelne Buchstaben fehlen

Guten Abend liebe Community,
Ich habe mir einen Chat geschrieben, der einen Thread benutzt und die Nachrichten als sf::Text ausgibt.
Es passiert bei fast jeder Nachricht, dass einzelne Buchstaben fehlen.
Wenn ich dann aber weiter schreibe, werden einige Buchstaben von den früheren Nachrichten aufgefüllt:



Ich habe auch schon gegooglet und bin auf das und das gestoßen und hab folgendes versucht:
- Vor jedem Gebrauch der Texte einen Mutex locken und danach wieder unlocken.
- Die Größe vom Font ändern.
- Ein anderes Font benutzen.

Nichts davon hat etwas geändert...
Ich weiß jetzt auch nicht, ob das ein bekannter Bug ist, weil es ja nicht nur bei mir passiert.
Weiß jemand von euch, wie man das beheben kann, oder zumindest umgehen kann?

MfG Geheim!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

14.08.2012, 08:58

Das ist wohl ein Bug in SFML, und dementsprechend bist du im SFML-Forum besser aufgehoben.

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

3

14.08.2012, 09:43

Ich hatte etwa das gleiche Problem ein paar Monate zurück, jedoch habe ich nie eine direkte Lösung gefunden.
Das Ganze tritt auf wenn die Font/der Text zwischen mehreren Threads geshared wird, aber in dem Bereich habe ich nicht allzu viel Ahnung und es wäre wohl schon am Besten, wenn du deine Frage im offiziellen Forum noch stellen kannst, der Entwickler von SFML ist sehr aktiv im Forum und wird evtl. direkt wissen, an was dass es liegt. ;)
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

Geheim

Treue Seele

  • »Geheim« ist der Autor dieses Themas

Beiträge: 202

Wohnort: Salzburg

Beruf: Schüler

  • Private Nachricht senden

4

14.08.2012, 18:09

Alles klar, danke euch!
Ich bin ab heute bis zum Ende der Woche nicht da, also werde ich das erst nächste Woche in Angriff nehmen und mich dann wieder melden.
Natürlich werde ich euch die Lösung (falls es denn eine geben wird) nicht vorenthalten ;)
Eine schöne Woche noch und bis dann :thumbsup:

Geheim

Treue Seele

  • »Geheim« ist der Autor dieses Themas

Beiträge: 202

Wohnort: Salzburg

Beruf: Schüler

  • Private Nachricht senden

5

31.08.2012, 10:42

Guten Morgen,
Ich hab gestern endlich im SFML-Forum nachgefragt und es gibt schon eine Lösung!
Jeder der dasselbe Problem hat sollte folgendes probieren (von Laurent):

Zitat

Can you try to call glFlush() in the writeData function, after textList.push_back(tempText);?

You'll need to include <SFML/OpenGL.hpp> and link to opengl32.lib.
Ich weiß noch nicht genau warum es geholfen hat, das wird mir vielleicht noch beantwortet ;)
Hier dazu der/das Topic: http://en.sfml-dev.org/forums/index.php?topic=9030.0
MfG Geheim!

6

31.08.2012, 14:59

Jetzt ist eine Erklärung da. Hat auch mir geholfen. Muss ich mir merken. :D

MfG
Check

Geheim

Treue Seele

  • »Geheim« ist der Autor dieses Themas

Beiträge: 202

Wohnort: Salzburg

Beruf: Schüler

  • Private Nachricht senden

7

31.08.2012, 22:58

Hier noch die Erklärung für das glFlush() wer es braucht (auch von Laurent):

Zitat

OpenGL commands are queued and flushed to the graphics card only when
the driver decides so. Usually this doesn't matter because the driver
does its job perfectly, but with threads and shared OpenGL contexts this
can cause problems. glFlush simply forces the driver to execute the
pending commands immediately.

Unfortunately I don't know if this
can be integrated automatically in SFML. It highly depends on what the
user code does, there's no good place to put a glFlush in SFML code. For
example, in someone else's program, a similar glFlush might ruin
performances.
Dachte das könnte auch den ein oder anderen interresieren ;)

Werbeanzeige