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

Aktuelle Zeit: Fr Jul 18, 2025 03:41

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Apr 16, 2010 09:47 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Hallo,

ich habe folgendes Problem, auf einem Laptop mit einer Mobile Intel(R) 945GM Express Chipset Family Grafikkarte gibt mein Projekt den Fehler "Invalid Value" aus.
Das Projekt funktioniert dann zwar soweit - aber beim Zuschalten von Text stürzt es mit der Fehlermeldung "OpenGL Error" ab.

Leider gehört mir der Laptop nicht und ich kann da jetzt nicht intensiv testen, deswegen wollte ich mal fragen wie man in so einem Fall den Fehler irgendwie eingrenzen kann...

Auf allen anderen Rechnern wo ich mein Projekt getestet habe lief es fehler und einwandfrei.

Im Netz fand ich das die Graka OpenGl 1.4 supported... ist das jetzt neu oder alt oder gut oder schlecht? (ihr seid die experten)

Zitat:
The Mobile Intel® 945GM Express Chipset family supports hardware acceleration of OpenGL* applications in 16-bit and 32-bit color depths.

The latest version of OpenGL currently supported by the Intel® Graphics Media Accelerator drivers is OpenGL 1.4 plus extensions. Drivers that come with Windows* or that are downloaded from Windows Update* typically do not support OpenGL.


Gruß

Wölfchen


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Apr 16, 2010 10:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Ich würde sagen, es ist OK von der Version, Tak2004 würde sagen, es ist zu alt.
Worauf ich hinaus will: Das kommt darauf an, was du damit machst. Wenn du Befehle aus dem OpenGL 1.5 (oder höher) API Satz benützt, wird das in Fehlermeldungen und/oder Nichtfunktionalität enden.

Ich glaube im Wiki ist unter OpenGL-Funktionsübersicht und auf den Seiten der einzelnen Funktionen angegeben, welche OpenGL Version notwendig ist.

LG Ziz

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Apr 16, 2010 11:14 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
OpenGL1.4 ist alt. Das Release war 2002 und OpenGl hat seit dem 8 neue Releases bekommen, die teilweise sehr ausschlaggebend sind.
Nichts desto trotz sollte es aber kein Problem sein mit OpenGl1.4 zu entwicklen, da trotzdem eine breite Masse an Extensions vorhanden ist. Man ist halt nur etwas eingeschränkt und darf nicht zu viel erwarten.
Man müsste also eine alte Spezifikation finden (was nicht unbedingt einfach sein dürfte) und prüfen, ob du ggf. Funktionen verwendest, die in OpenGL1.4 so nicht funktionieren.

Wie schaltest du denn "Text" zu? Wo erhälst du den Fehler? Wie sehen die Methoden aus, die im Zusammenhang mit dem Fehler stehen könnten?

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Apr 16, 2010 11:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ziz hat geschrieben:
Tak2004 würde sagen, es ist zu alt.
Sehr diplomatisch ausgedrückt.

Ziz: Funktionsübersicht ist ja ganz nett nur leider in dem Fall vollkommen nutzlos. Er bekommt "Invalid Value". Wenn er also ungültige Funktionen aufrufen würde würde er eine Zugriffsverletzung bekommen und nicht einen OpenGL Fehlercode.

Wölfchen: Du solltest eine Unterscheidung machen. Und zwar zwischen dem was der Chip theoretisch kann und was der Treiber tatsächlich anbietet. Wenn auf dem Laptop kein vernünftiger Treiber installiert ist bekommst du kein OpenGL 1.4. Mit viel Pech sogar auch nur die OpenGL 1.1 Softwareimplementation von Windows.

Dein "Absturz" wird höchstwahrscheinlich per Hand ausgelöst. Und zwar hast du vermutlich die Methode CheckError aus den TextSuite Beispielen übernommen. Dort werden die OpenGL Fehler überprüft und im Falle eines Fehlers wird die Meldung ausgegeben und die Anwendung geschlossen (Halt).

"Invalid Value" deutet auf einen falschen Parameter hin. Und zwar wenn du zum Beispiel bei glEnable einen Wert übergibst der in deinem Treiber noch nicht unterstützt wird, dann wird dieser Fehlercode gesetzt. Der Aufruf an sich verläuft ins Nichts. Sorgt aber auch nicht dafür, dass deine Anwendung unterbrochen wird. Das was du damit erreichen wolltest wird natürlich ignoriert. Wenn du Glück hast ist dein Bild so nur minimal unterschiedlich. Den Parameter kann man so leider nicht identifizieren, da das so ziemlich alles sein könnte und die Auswahl ist sehr groß.

Es gibt mehrere Möglichkeiten wie du das einschränken könntest. Du kannst das Halt entfernen um eventuell ein Bild sehen zu können. Wenn du das Bild dann mit deinem Referenzrechner vergleichst (eventuell hier posten) fällt dir vielleicht auf was unterschiedlich ist. Ansonsten kannst du auch einen Stringparameter zu CheckError hinzufügen. Diesen String würdest du in ShowMessage mit ausgeben. Wenn du dann innerhalb deines Codes, dann CheckError häufiger aufrufst, kannst du die Stelle einschränken wo der Fehler passiert. Wichtig dazu natürlich den StringParameter vernünftig befüllen um sehen zu können wo du dich im Code befindest.

Code:
procedure TMainForm.CheckError(Text: String);
begin
  ...
end;

begin
  CheckError('Init_TextSuite');
  // Init_TextSuite;

  CheckError('Init_Textures');
  // Init_Textures;

Wenn du das auf einen groben Bereich eingeschränkt hast kannst du das ja eventuell noch weiter einschränken.

PS:
Sellmann hat geschrieben:
Wo erhälst du den Fehler?

Genau das will er ja rausfinden. Stand auch so in seinem Post. :roll:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Apr 16, 2010 11:42 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Erstmal wieder Danke für die raschen Antworten.

Lossy eX hat geschrieben:
Dein "Absturz" wird höchstwahrscheinlich per Hand ausgelöst. Und zwar hast du vermutlich die Methode CheckError aus den TextSuite Beispielen übernommen. Dort werden die OpenGL Fehler überprüft und im Falle eines Fehlers wird die Meldung ausgegeben und die Anwendung geschlossen (Halt).


Ja, das hört sich plausibel an!
Das mit dem Eingrenzen werde ich am Wochenende mal versuchen einzubauen und kanns dann nächste Woche testen. Danke!

Wölfchen


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Apr 16, 2010 12:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mir fällt gerade auf, dass ich meinen Code verdreht habe. Es bringt natürlich nichts auf was zu prüfen was noch nicht gestartet wurde. ;)
Code:
  Init_TextSuite;
  CheckError('Init_TextSuite');

  Init_Textures;
  CheckError('Init_Textures');


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


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 15 Queries | GZIP : On ]