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

Aktuelle Zeit: Fr Jul 11, 2025 23:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: dglopengl.pas und Textur-laden
BeitragVerfasst: Mo Okt 20, 2003 16:29 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
Frage 1:
ich möchte die Unit glBMP von Jason Allen mit dem dgl-header kompilieren, allerdings tritt permanent der Fehler...

Incompatible Types: 'Cardinal' and 'PGLUint'

...auf, obwohl ich alle GLuint in der Unit nach TGLUint geändert habe (ebenfalls die Definitionen für die fehlenden Prozeduren bei Borlands header entfernt). Das Nachschlagen in dglopengl.pas hat auch nicht weitergeholfen, die Deklarationen sind identisch.

Das gleiche Problem tritt bei der, in den dgl-Tutorials verwendeten, Textures.pas von Jan Horn auf, mit Borlands header kompilieren beide einwandfrei, allerdings nicht mit dem neuen 1.5 header?

Ich denke ich übersehe da etwas, kann mir vielleicht jemand auf die Sprünge helfen?

Frage 2:
Beim wechsel von Fenster-modus nach Vollbild (und vice versa) werden alle Texturen weiß. Gibt es eine Alternative zum Löschen/erneut Laden der Texturen für den Wechsel?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 17:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Sag mal genau wo er den Fehler bringt.Ich hab die glBmp.pas zwar noch nicht mit dem neuen Header genutzt,aber die Textures.pas verwende ich tagtäglich.Die lies sich auch ohne eine Zeile abzuändern mit der dglOpenGL.pas verwenden.

Zitat:
Frage 2:
Beim wechsel von Fenster-modus nach Vollbild (und vice versa) werden alle Texturen weiß. Gibt es eine Alternative zum Löschen/erneut Laden der Texturen für den Wechsel?

Da bein Moduswechsel ja der DC ungültig wird,müsstest du eigentlich alles neu initialisieren,inklusive Texturen und 3D-Modellen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 17:14 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
Frage1:
Sowohl Jan Horn's als auch Jason Allen's Units lassen sich mit eurem header verwenden, insofern man nicht dglopengl in deren uses clause hat sondern Borlands header.

Der Fehler tritt in beiden Units bei glGenTextures auf (Zeile 70 bei Textures.pas). Ich benutze Delphi 6, könnte es damit zusammenhängen?

Frage2:
Danke, so hab ich das auch gelöst, ich hatte gehofft es ginge ohne einen Hack :oops:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 17:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Silk hat geschrieben:
Frage1:
Sowohl Jan Horn's als auch Jason Allen's Units lassen sich mit eurem header verwenden, insofern man nicht dglopengl in deren uses clause hat sondern Borlands header.

Das ist definitiv nicht so.Ich hab in Jah Horn's Unit dglOpenGL.pas in der Uses-Klausel (statt der alten Unit) und hab keine Probleme.Allerdings kann ich dir nicht genau sagen ob/und was ich geändert habe,da ich die Unit schon vor recht langer Zeit auf OpenGL12.pas aktualisiert habe.Deshalb wärs am besten wenn du mal die Zeile(n) in der das Problem auftrit hier direkt postest.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Cardinal und PGLuint sind auch inkompatibel...

GLuint entspricht Cardinal
PGLuint entspricht ^Cardinal

wahrscheinlich hast du irgendwo einen Zeiger angegeben, wo ein Ordinaler Wert erwartet wird - oder umgekehrt.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 18:05 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
aus Textures.pas

Code:
  1. function CreateTexture(Width, Height, Format : Word; pData : Pointer) : Integer;
  2. var
  3.   Texture : TGLUint;
  4. begin
  5.   glGenTextures(1, Texture);       [color=red] <- [/color]
  6.   glBindTexture(GL_TEXTURE_2D, Texture);
  7.   ...


[Error] Textures.pas(70): Incompatible types: 'Cardinal' and 'PGLuint'

---

aus dglOpenGL.pas:

Code:
  1. ..
  2. glGenTextures: procedure(n: TGLsizei; textures: PGLuint);
  3. ..


Das sollte doch eigentlich compilieren? Irgendwie hab ich das Gefühl ich hab seh den Wald vor lauter Bäumen nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 18:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Probiers mal mit
Code:
  1. glGenTextures(1, @Texture);

glGenTextures will,wie du ja an PGLUInt siehst einen Pointer auf ein TGLUInt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 19:35 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
Danke Euch beiden! wieder etwas über Pointer gelernt und jetzt macht die Namengebung im OpenGL-header auf einmal auch mehr Sinn :wink:

Mit der Übergabe der Adresse von 'Texture' an glGenTextures klappt es einwandfrei, habe die glBMP-Unit jetzt soweit geändert das sie problemlos mit dglopengl.pas compiliert. Danke nochmals :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 22:08 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
Wo ich jetzt schon dabei bin mit Fragen zu nerven, gleich noch eine: :lol:

Was ist die minimale Texturgröße die OpenGL verarbeiten kann? Ich habe mal gelesen es sei 64², allerdings kann ich eine 2² große Textur Laden und Darstellen. Wird die Textur intern auf 64² skaliert oder existiert nur das Limit 2^n?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 20, 2003 22:21 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Die minimale Texturgröße ist 1 Pixel

Die maximale Texturgröße ist Treiber- und vom verwendeten Texturformat abhängig (8 Bit Luminancetexturen brauchen halt weniger Platz als 32Bit RGBA-Texturen), mindestens aber 64x64 (wobei, außer bei uralten 3d-Beschleunigern (Voodoo), selbst bei Softwareimplementationen mindestens von 1024x1024 Pixeln ausgegangen werden kann - im Zweifelsfall halt abfragen).

Bei 3D-Texturen heißt es da schon eher vorsichtig sein, da die z.B. auf Geforce 4MX Karten nur sehr halbherzig (Software!) unterstützt werden.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 21, 2003 15:26 
Offline
DGL Member

Registriert: Di Sep 30, 2003 22:22
Beiträge: 78
Wohnort: irgendwo in den Korridoren der Von Braun
Mars hat geschrieben:
Die minimale Texturgröße ist 1 Pixel


Ob eine 1 Pixel große Textur sinnvoll ist sei mal so dahin gestellt, vielleicht für MIPMaps?

Mit großen Texturen hatte ich bisher keine Probleme aber da ich jetzt, beim Umstieg von nehe's VCL template mit glaux auf dgl API template mit glbmp, einige Probleme mit kleinen Texturen (<64²) bemerkt habe die mit glaux nicht auftraten dachte ich es hängt mit der internen Vergrößerung zusammen. Kann es aber wohl nicht sein, ich werde das mal genauer untersuchen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 21, 2003 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Mit der glBMP-Lib hatte ich auch schon so meine Probleme,ganz besonders bei einigen JPG.Selbst wenn die 100% allen Standards entsprachen,hat er sie nicht oder fehlerhaft geladen.Bin dann auch vor längerer Zeit auf die Textures.pas gewechselt,die ich dann mit meinem eigenen Texturenmanager nutze und hab seitdem keine Probleme.V.a. die Tatsache das Jan Horn's Unit auch komprimierte TGAs laden kann hat mir dort gut gefallen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.009s | 14 Queries | GZIP : On ]