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

Aktuelle Zeit: Di Mai 14, 2024 03:04

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Apr 30, 2012 00:35 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Hi, ich bins mal wieder.
Ich habe aktuell das Problem, dass eines meiner Projekte auf meinem Desktop PC (Win7, 64 bit) und auf dem PC meines Kollegen (ebenfalls Win7, 64 Bit) problemlos läuft und alle Farben reibungslos gerendert werden.
Aber als ich es nun auf meinem Laptop (ebenfalls wieder Win 7, 64 Bit) einmal ausprobiert habe, sind die einzigen Farben die ich sehe ein schwarzer Hintergrund und alle dort dargestellten Shapes bestehen aus Roten Linien oder sind Rot.
Hier einmal zwei Bilder um den drastischen Unterschied darzustellen:

http://s1.directupload.net/file/d/2876/fzfh79b3_png.htm
http://s14.directupload.net/file/d/2876 ... 4d_png.htm

Ich benutze als Aufruf ganz normal einmal vor der GameLoop glClearColor, in meinem Fall mit (255, 255, 255, 255) [habe es auch schon mit (1,1,1,1) und (1,1,1,0) probiert] und dann innerhalb der Loop glClear mit GL_COLOR_BUFFER_BiT und GL_DEPTH_BUFFER_BIT. Habe es ebenfalls auch schon mit allen 4en probiert, ändert leider gar nichts.

Ich weiß nicht mehr weiter und es wäre echt wichtig, dass es auf meinem Laptop funktioniert, daher: hat hier jemand eine Idee, woran es liegt und am besten auch wie ich es fixe?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 30, 2012 06:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,

probier es mal mit dem Aufruf von glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE).

Viele Grüße
dj3hut1

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 30, 2012 07:09 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Hab' es in der Init gehabt und testweise sogar vor dem Aufruf von glClearColor _und_ vor dem Aufruf von glClear. Hat beides nichts gebracht. :/


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 30, 2012 15:01 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
sind die aktuellen treiber drauf?

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 30, 2012 15:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
rswhite hat geschrieben:
Ich benutze als Aufruf ganz normal einmal vor der GameLoop glClearColor, in meinem Fall mit (255, 255, 255, 255) [habe es auch schon mit (1,1,1,1) und (1,1,1,0) probiert] und dann innerhalb der Loop glClear mit GL_COLOR_BUFFER_BiT und GL_DEPTH_BUFFER_BIT. Habe es ebenfalls auch schon mit allen 4en probiert, ändert leider gar nichts.

Um spätere Verwirrung zu vermeiden, weise ich mal kurz darauf hin: glClearColor nimmt wie die meisten anderen GL-Befehle Floats von 0 bis 1.

Bei der originalfragestellung bin ich aber auch ratlos :/.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 30, 2012 16:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also glColorMask wäre jetzt auch mein Tipp gewesen, aber wenn es das nicht isst....

Wie renderst du den deine Linien? Vielleicht hast du irgendeinen Speicherschreiber (*) der aus irgendeinem Grund deine Farben im Speicher überschreibt. Bei den beiden anderen Rechnern kann etwa die Speicherverteilung anders sein, weshalb der Fehler nicht auftritt.


(*) Also ein Bug in deinem Code der dir unabsichtlich im Speicher deiner Anwendung rumpfuscht. Passiert etwa leicht wenn du über die Grenzen eines Arrays hinaus schreibst oder du auf eigentlich gelöschte Objekte im Speicher zugreifst an deren Stelle mittlerweile was anderes liegt.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 01, 2012 00:12 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Sorry für die späte Nachricht, bin derzeit etwas im Uni Stress.

Der Rendercode ist etwas lang, aber hier:
http://www.rswhite.de/code/index.php?q= ... c10803c134

Ich wüsste nicht, wo ich über Array Grenzen hinaus schreibe. Die Sprache ist D, dort wird eig. per se automatisch geprüft, ob du über die Grenzen eines Arrays hinaus zugreifst.

Ja, ich weiß, dass eig. floats im range von 0 bis 1 korrekt wären, aber es schient, als würde das automatisch konvertiert werden. Zudem hatte ich es ja auch schon mit 1en probiert, werde es aber vorsichtshalber in Zukunft mal ändern. :)
Und ja, die aktuellen Treiber sind drauf, habe in meiner Treiber Übersicht versucht zu updaten, doch bekam ich die Nachricht, dass sie aktuell sind.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 01, 2012 08:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Ja, ich weiß, dass eig. floats im range von 0 bis 1 korrekt wären, aber es schient, als würde das automatisch konvertiert werden.

Verlassen würde ich mich nicht darauf.


Hast du mal anstelle deiner Aufrufe von glColor4f feste Farben versucht? Vielleicht macht dieses GLConvert() ja irgendwelchen Unsinn.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 01, 2012 09:02 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Nee, werde ich gleich mal probieren. Aber das würde die Sache mit dem Hintergrund nicht erklären, oder?
Es würde mich aber wundern, wenn die GLConvert Methode Macken hätte. Aber hier einmal zum abgleichen:

Code:
  1.  
  2. const float[4] GLConvert() const pure {
  3.     const float r = this.r <= 1.0 ? this.r : this.r / 255.0;
  4.     const float g = this.g <= 1.0 ? this.g : this.g / 255.0;
  5.     const float b = this.b <= 1.0 ? this.b : this.b / 255.0;
  6.     const float alpha = this.alpha <= 1.0 ? this.alpha : this.alpha / 255.0;
  7.  
  8.     return [r, g, b, alpha];
  9. }
  10.  


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 01, 2012 09:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Aber das würde die Sache mit dem Hintergrund nicht erklären, oder?

Nein, würde sie nicht.

Zitat:
Aber hier einmal zum abgleichen:

Also ich kann kein D, aber ich kann sagen das dies in C++ so nicht funktionieren würde. Das Array wird auf dem Stack erzeugt und somit vernichtet bevor die Funktion zurückkehrt. Wie gesagt, keine Ahnung wie das in D ist, vielleicht tut das da so.
Die Fallunterscheidungen kommt mir übrigens recht überflüssig vor, auch wenn das keine Probleme verursachen sollte.

Noch eine Idee:
Verzichte mal auf diese glHint-Sache. Ggf. gibt es da Unterschiede/Bugs bei den Treibern/Grafikkarten.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 01, 2012 12:33 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
probier doch mal Texturen abzuschalten, so weit ich mich erinnere hatte ich das Problem auch mal und das war die Lösung... :?

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 01, 2012 14:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Auch Texturen erklären leider die Gesichichte mit dem Hintergrund nicht. GLConvert scheint mir nen Ansatz zu sein, aber D ist nach meinen geringen Erfahrungen schon hochsprachig genug, dass Arrays referenzgezählt werden (haben die nicht sogar nen GC?).

Jedenfalls, zum Zahlenbereich: Dass 255 funktioniert liegt höchstens daran, dass der Wert auf 1 geclippt wird, nicht runtergerechnet. 123 ergibt genauso 1 wie 178525.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mai 02, 2012 10:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
@rswhite Du könntest noch die Darstellung mit einem einfachen Shader probieren. Dann findest du zumindest heraus, ob die Werte von glColor richtig übergeben wurden. Oder du versuchst es mit gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0); und schaust, ob die Farbwerte im Drawbuffer ankommen.

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Mai 20, 2012 13:23 
Offline
DGL Member

Registriert: Di Dez 13, 2011 19:14
Beiträge: 166
Wohnort: Hamburg / Mölln
Programmiersprache: D
Hey, sorry für die späte Rückmeldung.
Ich hatte es kurzzeitig hinbekommen. Ich hatte 2 Tage lang die Projektmappe auf meinem Desktoprechner offen (welche in Dropbox liegt) und wenn ich über meinen Laptop ebenfalls diese geöffnet und ausgeführt habe, lief alles problemlos. Nun habe ich vor einigen Tagen mal die Projektmappe hier geschlossen und auf meinem Laptop neu erstellt und das Problem ist wieder da. -.-
Reproduzieren ließ sich das Verhalten bisher auch nicht. Ich werde jetzt morgen mal das mit der Hint Sache probieren und euch dann berichten.
Mit Shadern kenne ich mich leider überhaupt nicht aus, bin ein GL 2.1 - 3.0 Jünger ohne Shader Erfahrung/Kenntnis. :/

Zitat:
Also ich kann kein D, aber ich kann sagen das dies in C++ so nicht funktionieren würde. Das Array wird auf dem Stack erzeugt und somit vernichtet bevor die Funktion zurückkehrt. Wie gesagt, keine Ahnung wie das in D ist, vielleicht tut das da so.
Die Fallunterscheidungen kommt mir übrigens recht überflüssig vor, auch wenn das keine Probleme verursachen sollte.

Nein, das wird, wie oben bereits verdächtigt, vom GC verwaltet und per Referenzzählung gehalten. Daran liegt es nicht. :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 22 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.040s | 17 Queries | GZIP : On ]