Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 05:22

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Thread probleme (Texturen laden etc)
BeitragVerfasst: So Aug 01, 2004 05:30 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hab grad 2 probleme mit nem TThread Object...

und zwar:

1.) In meinem Thread-Execute bastle ich mit nem TBitmap rum... unter anderem benutze ich da auch Bitmap.CopyRect.. Wenn ich diesen befehl mehrmals in ner schleife innerhalb des threads aufrufe bleibt die fläche nach ein paar mal nurnoch weiß (nie die gleiche anzahl... mal nach 2 aufrufen, mal nach 3.. 4 etc..)
Weiß jemand woran das liegt???

2.) Kann ich in nem Thread eine Textur laden...??? Oder muß ich das in einer procedure machen die ich mit Synchonize aufrufe..?

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 05:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

problem 1 hat sich grad erledigt.. hatte nur vergessen den Canvas zu locken :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 07:07 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
ja du kannst eine Textur laden, du musst den Thread vorher nur mit wglMakeCurrent mit deinem Rendering Context "versorgen".


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 07:55 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

geht leider immernochnet... :(

Wenn ich im Execute mit wglMakeCurrent und ActivateRenderingContext das zuweise scheint der Thread nichtmal bis zum ende durchzulaufen sondern er bricht mitten drin ab...

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 10:09 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Also mal ganz blöd gesagt: Nicht alle Kommandos sind thread-sicher, und so ziemlich alles was irgendwie auf das Grafik-Subsystem von Windows zugreift ist es nicht. Da bleibt dir nur noch, die widerspenstigen Befehle in eine eigene Routine zu packen und dann mittels Synchronize im Hauptthread ausführen zu lassen. Das TBitmap-Objekt ist übrigens auch nicht threadsicher, da hatte ich selber schonmal ein Problem:
Posting in de.comp.lang.delphi.misc
Falls der Link so nicht geht: Das Posting steht unter dem Titel "JPEGs im Thread laden" in de.comp.lang.delphi.misc und kann über groups.google.de gefunden werden.

Gruß,
Arno


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 10:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich hatte das schon mal mit Threads gemacht. Das hat auch alles super funktioniert. Mit Threads und Texturen etc. ABER ich hatte das alles in EINEM Thread gemacht. Dazu würde ich auch raten. Wer kann so genau sagen, ob OpenGL da nicht durcheinander kommt.
Wenn du aus dem VCL Thread rendert solltest du Synchronize aufrufen. Also rendern und gleichzeitig Texturen laden halte ich für nicht sinnvoll.

Zum Thema Abbrechen. Wenn du in dem Execute eine exception hast, dann terminiert sich der Thread. Ohne Delphidebugger terminiert dann allerdings Windows augenblicklich auch deine Anwendung. Also immer schön mit try except arbeiten. ;-)

@Arno: Ich habe mir mal kurz dein Quellcode angesehen. Nichts für Ungut aber eine Textur zu laden in dem ein Bitmap geladen und das dann auf ein TBitmap32 gezeichnen wird empfinde ich als äußerst unsinnig. Und nicht gerade der beste weg, wo man doch SEHR einfach direkt auf den Speicher eines Bitmaps zugreifen kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 13:03 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
@Lossy eX: Ich verstehe absolut nicht, worauf du herauswillst - in dem angesprochenen Posting war nirgends von OpenGL und/oder Texturen die Rede. Es wurde schlicht und ergreifend in einem Hintergrundthread eine JPEG-Datei in ein TBitmap32 geladen, über den Umweg über TPicture, wie das ja auch gedacht ist. Es geht hier also erstmal gar nicht um eine Lademöglichkeit für Texturen sondern schlicht und ergreifend darum, dass TBitmaps nicht threadsicher sind (TBitmap32 hingegen schon - aber das Laden mit LoadFromFile geschieht intern dann doch wieder über TPicture und TBitmap). Und darum ging's im Ursprungsposting. Im Übrigen habe ich das Problem letzten Endes dann wirklich dadurch umschifft, dass ich die JPGs "von Hand" direkt in ein TBitmap32-Objekt lade, damit geht's dann auch einwandfrei.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 01, 2004 18:34 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Tschuldige Arno ich wollte dich nicht persönlich angreifen, wenn ich dies getan habe (wordurch auch immer) dann tut es mir leid. Aber in Aya's Posting Frage 2 ist von Texturen laden die Rede und das ist für mich nun mal in OpenGL. Auch, wenn nicht konkret von OpenGL die Rede ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 02, 2004 14:09 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Ich fühle mich nicht persönlich angegriffen (so einfach geht das auch wieder nicht...), aber dein Posting hatte einfach im Zusammenhang mit dem verlinkten Quellcode keinen Sinn. Es ging ausschließlich um die "Threadfähigkeit" von TBitmap-Objekten, was ja erstmal nichts mit OpenGL-Texturen zu tun hat. Der Originalposter hatte ja scheinbar TBitmaps verwendet, deshalb wollte ich auf diese Problematik hinweisen. Ob er einen anderen Weg wählen sollte, Texturen zu laden, ist eine ganz andere Frage.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]