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

Aktuelle Zeit: Fr Jul 11, 2025 05:02

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 23, 2003 15:15 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Ahhh... Schön! Prima! Dachte schon mein Rechner dreht durch...

Ich hab bisher eigentlich nur im Files-Bereich hier herumgekrahmt und weniger im Forum.
Und da steht nix von alten und neuen 1.5 Viechern.

Gruß,
Frase


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 23, 2003 15:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Der OpenGL1.5-Header aus der Filessektion war bis vor kurzem leider noch auf nem alten Stand,wird aber jetzt immer mit der neusten (im genannten Thread auffindbaren) Version abgeglichen.Falls du also irgendwelche Probs mit dem Header haben solltest,dann meld dich bitte im passenden Thread und wir sehen was sich da machen lässt.Rein theoretisch sollte der Header aber ohne Probleme funzen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 23, 2003 16:49 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Ich hätte dann auch mal ein Problemchen mit Texturen. Hier ein Auszug des Codes:

Code:
  1. function BMPToGL(FileName: String): gluInt;
  2. var
  3.    Bild: TBitmap;
  4.    Size: Integer; //In Byte
  5.    PTexture, PStart: Pointer;
  6.    x, y: Integer;
  7.    r, g, b: Byte;
  8.    Texture: GLuInt;
  9. begin
  10. Bild := TBitmap.Create;
  11. Bild.LoadFromFile(FileName);
  12. //Speicher berechnen...
  13. Size := Bild.Width*Bild.Height*3;
  14. //und reservieren:
  15. GetMem(PTexture, Size);
  16. PStart := PTexture;
  17. //Bildinfos in den Speicher schreiben:
  18. For y := 1 to Bild.Height do
  19.    For x := 1 to Bild.Width do
  20.    begin
  21.       r := Bild.Canvas.Pixels[x,y] and 3;
  22.       g := (Bild.Canvas.Pixels[x,y] shr 2) and 3;
  23.       b := (Bild.Canvas.Pixels[x,y] shr 4) and 3;
  24.       Byte(PTexture^) := r;
  25.       Cardinal(PTexture) := Cardinal(PTexture) + 1;
  26.       Byte(PTexture^) := g;
  27.       Cardinal(PTexture) := Cardinal(PTexture) + 1;
  28.       Byte(PTexture^) := b;
  29.       Cardinal(PTexture) := Cardinal(PTexture) + 1;
  30.    end;
  31. PTexture := PStart;
  32. //Bildinfos OpenGL übergeben;
  33. glGenTextures(1, @Texture);
  34. glBindTexture(GL_TEXTURE_2D, Texture);
  35. glTexImage2D(GL_TEXTURE_2D, 0, 3, Bild.Width, Bild.Height, 0, GL_RGB, GL_UNSIGNED_BYTE, PTexture);
  36.  
  37. FreeMem(PTexture);
  38. Bild.Free;
  39. Result := Texture;
  40. end;


Also die Bildinfos im Speicher auf den der pointer zeigt stimmt auf jedenfall. Hab ich teilweise mit Showmessages nachgeprüft :roll: .

Code:
  1.  
  2. //Das hier wird einmal am Anfang des programms aufgerufen:
  3. Texture := BMPToGL('D:\GUERILLA_DMBASE.BMP');
  4.  
  5. //und das hier die ganze Zeit zum rendern halt:
  6.     glEnable(GL_TEXTURE_2D); //Texturen aktivieren
  7.     glMatrixMode(GL_MODELVIEW);
  8.     glLoadIdentity;
  9.     glTranslatef(0, 0, -6);
  10.     glBindTexture(GL_TEXTURE_2D, Texture);
  11.  
  12.     glBegin(GL_TRIANGLES);
  13. //     glColor3f(1,0,0);    Farbe braucht man ja nicht
  14.      glTexCoord2f(0, 1);
  15.      glVertex3f(-1.0, -1.0, 0.0);
  16.      glTexCoord2f(0.5, 0);
  17.      glVertex3f(0.0, 1.0, 0.0);
  18.      glTexCoord2f(1, 1);
  19.      glVertex3f(1.0, -1.0, 0.0);
  20.     glEnd;
  21.  
  22.     SwapBuffers(DeviceContext);
  23.  


Ich weiß jetzt nicht ob die Texturkoordinaten da oben richtig sind, aber jedenfalls hab ich schon unterschiedliche Sachen rumprobiert und die haben alle nicht geklappt.
Statt dessen wird die ganze Zeit ein weißes Dreieck angezeigt.

Und wenn ich die Zeilen:
Code:
  1. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  2. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

noch dazwischen Klatsche, wird ein komplett schwarzes Dreieck angezeigt.

Ich hoffe ihr könnt mir wieder mal helfen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 23, 2003 17:55 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Dein Code eine RGB-Textur zu laden ist etwas suboptimal - anhand deines Programms scheint es sich um ein 64 Farben Bild (2^6) mit jeweils 2 Bit für die RGB-Kanäle zu handeln - irgendwie bezweifle ich, dass dies tatsächlich der Fall ist.

Warum du nix siehst ? In deinen 8 Bit RGB-Werten sind nur jeweils die 2 niedrigstwertigen Bit gesetzt (also nur Werte von 0 bis 3), den Rest hast du erfolgreich ausmaskiert, alle deine Farben sind also fast schwarz.

Hol dir deine RGB Werte lieber so:

Code:
  1.       r := Bild.Canvas.Pixels[x,y] and $ff;
  2.       g := (Bild.Canvas.Pixels[x,y] shr 8) and $ff;
  3.       b := (Bild.Canvas.Pixels[x,y] shr 16) and $ff;


dann klappts wahrscheinlich besser (auch wenn es immer noch relativ langsam sein dürfte - lieber ScanLines verwenden), außerdem solltest du sicher stellen, dass Bild.Width und Bild.Height Zweierpotenzen sind, damit es überall funktioniert.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 24, 2003 14:32 
Offline
DGL Member

Registriert: So Okt 12, 2003 14:53
Beiträge: 74
Juhu. Nach einigem rumprobieren klappt es jetzt. Das mit den falschen and Werten ist mir gerade eben auch aufgefallen. Blöder Fehler. :oops:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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 ]