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

Aktuelle Zeit: So Jul 13, 2025 14:48

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



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: bekomme keine "Tapete" rauf
BeitragVerfasst: Di Nov 06, 2007 15:29 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hallo Leute,

habe mir ein kleines "Schach"brett mittels Quad erstellt. Schachbrett nur deshalb, damit ich anhand der Quads sehen kann, ob es klappt, also Farbe verschwindet dann später mal.

Die Texture.pas mit eingebunden und im intialisationsbereich der Unit wird die Textur geladen.

mein Source sieht so aus (Variable MyTex ist grösser 0, also wird das bmp-Bild geladen(255x255) )
Code:
  1.  
  2. // Zeichenprocedure DrawBrett
  3. ....
  4. for a := Low(TBrettSizes) to High(TBrettSizes) do begin
  5.     for b := Low(TBrettSizes) to High(TBrettSizes) do begin
  6.  
  7.       glEnable(GL_TEXTURE_2D);
  8.       glBindTexture(GL_TEXTURE_2D, MyTex);
  9.  
  10.    {   if Odd(a+b) then
  11.         glColor3f( 0.7, 0.7, 0.5 )   // Farbe für Quader einstellen
  12.         else glColor3f( 0.2, 0.2, 0.2 );
  13.  
  14.       glBegin(GL_QUADS);        aus TUT4 wiki/delphigl.com
  15.           glTexCoord2f(0,0); glVertex3f(-1,-1,0);  UR
  16.           glTexCoord2f(0,1); glVertex3f(-1,1,0);   OR
  17.           glTexCoord2f(1,1); glVertex3f(1,1,0);    OL
  18.           glTexCoord2f(1,0); glVertex3f(1,-1,0);   UL
  19.         glEnd;
  20.     }
  21.  
  22.       glBegin( GL_QUADS ); // -- oberes (Spielbrett-Ansicht)- Quad
  23.         glTexCoord2f( 0,0); glVertex3f( b-1, a-1, 0);    // glVertex3f( -1, -1, 0 );
  24.         glTexCoord2f( 0,1); glVertex3f( b-1, a  , 0);    // glVertex3f( -1,  1, 0 );
  25.         glTexCoord2f( 1,1); glVertex3f( b  , a  , 0);    // glVertex3f(  1,  1, 0 );
  26.         glTexCoord2f( 1,0); glVertex3f( b  , a-1, 0);    // glVertex3f(  1, -1, 0 );
  27.       glEnd;
  28.  
  29.       glDisable(GL_TEXTURE_2D);
  30.      {...}
  31.  
  32. // hier noch der initialisierungsteil zum Laden angehangen
  33. initialization
  34.   r := LoadTexture('holz01.bmp', MyTex, False );
  35.   if not r then MessageDlg('nix gefunden!', mtWarning, [mbOK], 0);
  36.  
  37.  
  38.  


Warum wird keine textur draufgemalt ?
Mit Farbe werde die Quads dargestellt, woran liegt es , was hab ich übersehen ?

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: bekomme keine "Tapete" rauf
BeitragVerfasst: Di Nov 06, 2007 15:33 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
uweq hat geschrieben:
(255x255)

Sollte es nicht 256x256 sein damit es PoT ist?

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: habs jetzt geändert...
BeitragVerfasst: Di Nov 06, 2007 15:57 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi i0n0s,

habs jetzt in 256x256 geändert, auch *.jpg erstellt,
aber keinerlei Änderung. weder bmp noch jpg.

was mit tga hab ich aus nen paar sourcen entnommen, aber da
kam dann ne Meldung wegen falscher Farbtiefe.

Hmm, :(

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: bekomme keine "Tapete" rauf
BeitragVerfasst: Di Nov 06, 2007 16:09 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
i0n0s hat geschrieben:
uweq hat geschrieben:
(255x255)

Sollte es nicht 256x256 sein damit es PoT ist?


Zumindest dann, wenns nichtmehr die neuste Grafikkarte ist.

OT Bemerkung:
Du solltest dir dringend abgewöhnen, für jedes Quad einzeln glBegin&glEnd aufzurufen und die Textur für jedes Quad neu zu binden - das kostet massig Zeit!

Statt dessen solltest du diese oder ähnliche Struktur verwenden:
Code:
  1.  
  2. glEnable(GL_TEXTURE_2D);
  3. glBindTexture(GL_TEXTURE_2D, MyTex);
  4. glBegin( GL_QUADS );
  5. for a := Low(TBrettSizes) to High(TBrettSizes) do begin
  6.     for b := Low(TBrettSizes) to High(TBrettSizes) do begin
  7.         // -- oberes (Spielbrett-Ansicht)- Quad
  8.         glTexCoord2f( 0,0); glVertex3f( b-1, a-1, 0);    // glVertex3f( -1, -1, 0 );
  9.         glTexCoord2f( 0,1); glVertex3f( b-1, a  , 0);    // glVertex3f( -1,  1, 0 );
  10.         glTexCoord2f( 1,1); glVertex3f( b  , a  , 0);    // glVertex3f(  1,  1, 0 );
  11.         glTexCoord2f( 1,0); glVertex3f( b  , a-1, 0);    // glVertex3f(  1, -1, 0 );
  12.      {...}
  13.     end;
  14. end;
  15. glEnd;
  16. glBindTexture(GL_TEXTURE_2D, 0);
  17. glDisable(GL_TEXTURE_2D);
  18.  


Gruß

/edit: Ich bin zu langsam... guck mal, ob deine Textur evtl. 0 ist

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 16:22 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Kyro,

werd Deinen OT Hinweis in Zukunft beachten
ist von 600 auf 740 fps gestiegen nach Änderung. - Danke

PS. MEINE karte ist ne Radeon X600 auf dem Schlepptopp, aber halt eben nur MEINE :roll:
(der große ist mom nicht in Betrieb, aber da ist eh ne 1GB Doppel GK (Nvidia) drin)

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Nov 06, 2007 16:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hier nen Shot, also kein "0"


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 16:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nur aufgrund einer Texturen-ID <> Null kann man nicht sagen ob eine Textur auch wirklich geladen wurde. Wie mit allen IDs (Listen, Shader, etc.), lässt man sich ja von OpenGL zuerst eine ID geben bevor man dort etwas hinterlegt (in deinem Falle via glGenTextures), es kann also durchaus sein dass deine Textur nicht korrekt geladen wurde, die Texturen-ID ist also kein Indiz für eine funktionierende Textur. Ich würde daher alle üblichen Verdächtigen abklappern, also ob die Textur im passenden Format vorliegt (hängt vom Texturnloader ab, also korrekte Bittiefe, fehlende Mipmaps obwohl Mipmapping angefordert wurde, etc. PoT wurde ja bereits gecheckt usw.). Ausserdem hat man ja mit glGetError zusätzlich eine einfache Möglichkeit etwaige OpenGL-Fehler zu ermitteln, evtl. findest du den Fehler damit.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 17:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Die Zahl kommt mir verdächtig hoch vor. Von OpenGL kenne ich eigentlich von eins an durchnummerierte Texturnummern. Kannst du mal den header der LoadTexture-Funktion zeigen? Vielleicht kann man daraus was schließen.

Gruß Lord Horazont

_________________
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  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 17:40 
Offline
DGL Member
Benutzeravatar

Registriert: So Okt 26, 2003 20:07
Beiträge: 249
Ich denke ich habs.

Du lädst deine Texture im initialization Part der Unit. Der wird meines Wissens noch VOR dem Programm begin/end ausgeführt. Die Chancen stehen ausgesprochen gut, dass OpenGL da noch nicht initialisiert ist. Am besten setzt du es irgendwo hin, wo es definitiv nach dem Initialisieren von OpenGL aufgerufen wird. Deswegen "wird" auch die ID so hoch, sie wird ganz einfach nicht geändert und liegt vorher uninitialisiert vor.

Gruß

_________________
I'm not the signature, I'm just cleaning the floor...

Derzeitiges Projekt:
FireBlade Particle Engine (Release R2 2009.06.29)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 17:42 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi LordHorazont,

wollt's grad posten , den Datei-Header aus der Texturepas.

also hier die BMP-Datei-Infos:

biSize : 40,
biWidth : 256,
biHeight : 256,
biPlanes : 1,
biBitCount: 24,
biCompression : 0,
biSizeImage : 196608,
biXPelsPerMeter: 2834,
biYPelsPerMeter: 2834,
biClrUsed : 0,
biClrImportant:0;

und bei der Jpg-Datei kann ich das als BMP aus der Textures.pas (Zeile 243) heraus speichern, und sieht genauso aus, wie es als JPG geladen werden soll(te).

auch eine Auswertung mittels glGetError an den verhiedensten stellen brachte bisher nichts.



:cry:
Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Dankeschön, hat geholfen
BeitragVerfasst: Di Nov 06, 2007 17:50 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
@Kyro : genau das war der Fehler !!


Habs jetzt im FormCreate drin (als letzte Zeile) :lol: , und nun
klappt alles.


Danke Euch allen für die super schnelle Hilfe,
Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 18:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
uweq hat geschrieben:
hi LordHorazont,

wollt's grad posten , den Datei-Header aus der Texturepas.


Ahm, das war nicht das ich meinte. Ich meinte sowas wie
Code:
  1.  
  2. function LoadTexture(...): ...;
  3.  


Ich wollte einfach wissen, welche Parameter und Rückgabewerte die Funktion LoadTexture hat. Aber dein Problem hat sich ja offensichtlich erledigt.

Gruß Lord Horazont

_________________
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  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 06, 2007 18:35 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
Ich kanns ja trotzdem machen:
..aber du wirst diese Datei sicherlich kennen
//----------------------------------------------------------------------------
//
// Author : Jan Horn
// Email : jhorn@global.co.za
// Website : http://www.sulaco.co.za
// http://home.global.co.za/~jhorn
// Version : 1.03
// Date : 1 May 2001
// Changes : 28 July 2001 - Faster BGR to RGB swapping routine
// 2 October 2001 - Added support for 24, 32bit TGA files
// 28 April 2002 - Added support for compressed TGA files
//
// Description : A unit that used with OpenGL projects to load BMP, JPG and TGA
// files from the disk or a resource file.
// Usage : LoadTexture(Filename, TextureName, LoadFromResource);
//
// eg : LoadTexture('logo.jpg', LogoTex, TRUE);
// will load a JPG texture from the resource included
// with the EXE. File has to be loaded into the Resource
// using this format "logo JPEG logo.jpg"
//
//----------------------------------------------------------------------------
....
Code:
  1.  
  2. ....
  3. {------------------------------------------------------------------}
  4. {  Determines file type and sends to correct function              }
  5. {------------------------------------------------------------------}
  6. function LoadTexture(Filename: String; var Texture : GLuint; LoadFromRes : Boolean) : Boolean;
  7. begin
  8.   if copy(Uppercase(filename), length(filename)-3, 4) = '.BMP' then
  9.     result := LoadBMPTexture(Filename, Texture, LoadFromRes)
  10.   else if copy(Uppercase(filename), length(filename)-3, 4) = '.JPG' then
  11.     result := LoadJPGTexture(Filename, Texture, LoadFromRes)
  12.   else if copy(Uppercase(filename), length(filename)-3, 4) = '.TGA' then
  13.     result := LoadTGATexture(Filename, Texture, LoadFromRes)
  14.   else result := false;
  15. end;
  16.  


Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.010s | 15 Queries | GZIP : On ]