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

Aktuelle Zeit: Do Jul 17, 2025 09:01

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



Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ANFÄNGER: TexturLoader
BeitragVerfasst: Mo Feb 07, 2005 16:21 
Offline
DGL Member

Registriert: Mo Feb 07, 2005 16:12
Beiträge: 6
tach

hab noch nich viel erfahrung in dem gebiet opengl und such zur zeit einen TexturLoader für die version 1.5 (dglOpenGL)

hab schon gegoogelt, foren etc. aber finde entweder nur sachen die anscheinend nich meiner version entsprechen (z.B. textures.pas) oder die seiten existieren nich mehr :(

also wenn einer so ne unit hat würd ich mich freuen wenn er sie mir schicken könnte oder nen link hier reinstellt
stell mich da anscheinend zu blöd beim suchen an ;)

vielen dank im voraus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 16:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hallo.

Normal würde ich dir sagen, dass du lediglich die Units im interface austauschen und evtl. inkompatibilitäten zwischen den Headern anpassen musst. Da ich aber selber einen Texturenloader geschrieben habe verschweige ich dir das. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 17:03 
Offline
DGL Member

Registriert: Mo Feb 07, 2005 16:12
Beiträge: 6
hoi hoi .. das ding is aber groß :) .. also ersteinmal danke für die schnelle antwort

leider muss ich dich gleich weiter nerven :) .. und zwar bin ich mir nich ganz sicher welches funktion ich nun genau benutzen soll um z.B. ein bmp zu laden ...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hätte ja früher geantwortet aber musste erst mal nach hause fahren. ;-)

Echt? So groß finde ich das nicht.

Aber zum Thema laden. Aus Kompatibilitätszwecken zu der Textures.pas habe ich die Methode LoadTextur implementiert. Allerdings rate ich von deren Benutzung ab, da man damit nun mal nicht den vollen Funktionsumfang zur Verfügung hat.

Das "richtig" laden geht mit den Klassen. Dabei sind die Klassen TglBitmap2D und TglBitmap1D interessant. Und dort hauptsächlich die für die 2D Texturen.

Als erstes musst du eine Instanze der Klasse erstellen. Im selben Schritt oder hinterher lädst du Bilddaten in die Klasse. Wenn du magst kann du dann noch einen Alphakanal zu der Textur hinzufügen oder du manipulierst die Textur auf welche Art und Weise auch immer beliebt. Dann kannst du (wenn nötig) Texturparameter einstellen. Also Filterung von OpenGL etc, Wenn das alles so weit ist dann teilst du der Klasse mit, dass sie die Textur anlegen soll.
Aussehen könnte das in etwa so.
Code:
  1.   FTex := TglBitmap2D.Create;
  2.   FTex.SetTextureWrap(GL_REPEAT, GL_REPEAT);
  3.   FTex.SetFilter(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR);
  4.   FTex.LoadFromFile('today_alpha.bmp');
  5.   FTex.GenTexture;


Wenn du die Textur nun benutzen möchtest rufst du folgendes auf.
Code:
  1.   FTex.Bind;


Wenn du deine Anwendung schließt, dann kannst du die Instanze mit Free wieder frei geben und sie löscht dann die Textur für dich auch wieder.

FTex ist in diesem Fall eine Variable die ein Bestandteil meines Fensters ist. Und erstellt wird sie nachdem OpenGL vollständig initialisiert wurde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 07, 2005 22:44 
Offline
DGL Member

Registriert: Mo Feb 07, 2005 16:12
Beiträge: 6
also mit dem Bind hab ich z.B. so gemacht :

Code:
  1.  
  2. FTex.Bind;
  3. glBegin(GL_QUADS);
  4.  
  5.         glTexCoord2f(0,0); glVertex3f(-1+v,-1,0);
  6.         glTexCoord2f(0,1); glVertex3f(-1+v,1,0);
  7.         glTexCoord2f(1,1); glVertex3f(1+v,1,0);
  8.         glTexCoord2f(1,0); glVertex3f(1+v,-1,0);
  9.  
  10. glEnd;
  11.  


und das funzt auch also geh ich davon aus dass das so korekt ist oder noch irgendwelche anmerkungen?

und wenn ich das jetz bewegen will muss ich doch z.B. zu den koordinaten jeweils ne variable addieren die sich durch nen tastendruck ändert.. so hab ich mir das jedenfalls überlegt :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 01:33 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Genau. Was auch lustig ist, wenn du auf Tastendruck die Texturcoordinaten weiterrücken läst. Probiers aus, und du grigst vielleicht lust ne kleine Animation damit zu basteln ;) (Das fällt dann unter Animierte Texturen. Siehe in unserem Wiki: Einige Textureffekte )

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 09:03 
Offline
DGL Member

Registriert: Mo Feb 07, 2005 16:12
Beiträge: 6
also meine programm stürzt nach ner weile immer ab ("zu viele Exceptions") und das liegt eindeutig an meiner TexturLaden Procedure (wenn ich sie rausneehme funzt's) die wie folgt ausschaut:

Code:
  1.  
  2. procedure TGLForm.TexturLaden;
  3. begin
  4.  
  5.   FTex := TglBitmap2D.Create;
  6.   FTex.SetTextureWrap(GL_REPEAT, GL_REPEAT);
  7.   FTex.SetFilter(GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR);
  8.   FTex.LoadFromFile('texture.bmp');
  9.   FTex.GenTexture;
  10.  
  11. end;
  12.  


sie wird bei mir unter FormCreat ausgeführt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 09:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja. Du kannst entweder immer neue Texturkoordinaten berechnen und diese dann zuweisen oder du veränderst direkt die Texturmatrix. Siehe dazu auch das Texturentutorial


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 09:27 
Offline
DGL Member

Registriert: Mo Feb 07, 2005 16:12
Beiträge: 6
ich hab mir das tutorial durchgelesen und werde trotzdem nich aus deinem post schlau
wo liegt denn nun mein eigentlicher fehler bzw. was muss ich anders machen

danke nochmal


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 08, 2005 09:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ah. Das Post hat sich dazwischen gemogelt. Dann macht mein Post natürlich keinen Sinn. Das war auf die Animation der Textur bezogen.

Zu den Exceptions. OpenGL ist zum Zeitpunkt des Texturenladens bereits vollständig initialisiert? Das denke ich doch mal. Sonst hättets du ja keine Textur sehen können. Aber ich kann dir gerade nicht sagen wo das Problem liegt. Wenn du so willst mache ich ständig nichts anderes und bei mir klappts. Packe mal bitte deine Quellen und die benötigten Daten und Poste das mal oder schicke es mir per Mail zu. Ich schaue mir das dann mal an und sage dir wo der Fehler ist. Hoffe ich jedenfalls. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 09, 2005 20:07 
Offline
DGL Member

Registriert: Mo Feb 07, 2005 16:12
Beiträge: 6
mh .. das problem liegt doch nich an den texturladen procedur, es tritt auch auf wenn diese nich ausgeführt wird aber ziemlich wahllos (komisch)

habe aber noch eine frage: wie kann ich am besten einen tasten druck verarbeiten (ich möchte das sich ein objekt bewegt solange man eine taste drückt), wenn ich OnKeyPress bzw. OnKeyDown von delphi nutze bewegt sich mein objekt ziemlich "abgehackt" und nicht flüssig...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 09, 2005 23:56 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Eine oft empfohlene Lösung ist ein Tastenfeld mit Booleanwert.

Also ein Array anlegen welches den Status der entsprechenden Tasten speichert. Im OnKeyDown setzt du eine Taste dann auf True und beim KeyUp wieder auf false. Dann kannst du immer schön im Programm den Status abfragen und bist nicht abhängig von der WindowsMessagebehandlung.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 10, 2005 08:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das mit den Tastendrücke das nächste Mal bitte in ein eigenständiges Thema! Es ist übersichtlicher und es hat ja weder etwas mit dem eigentlichen Thema noch mit OpenGL zu tun.

Zu deinem Fehler kann ich dir das Angebot nur noch einmal machen. Schicke mir mal die Quellen und ich schaue mal ob ich den Fehler finde. Aber auf Grund der Wahllosigkeit und der Meldung "zu viele Exceptions" würde ich sagen, dass du irgendwo kontinuierlich auf etwas zugreifst was dir eine Exception liefert die aber nie sinnvoll ans Tageslicht kommt. Du solltets das Programm auf jeden Fall einmal in Debugger von Delphi starten und dort auf Exceptions achten. Dann solltest du recht schnell fündig werden. Auf keinen Fall solltest du aber das Problem ignorieren. Es hat fast immer einen Sinn warum es Exceptions gibt. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 10, 2005 09:43 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Was ich noch ganz vergessen hatte. Schau dir auch mal unser Debugger Tutorial an. Das dürfte auch nicht von Nachteil sein.


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 » OpenGL


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 ]