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

Aktuelle Zeit: Mi Mai 15, 2024 12:27

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: TBitmap -> SDL-Surface/Textur
BeitragVerfasst: Fr Apr 06, 2012 18:37 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Moin,

gibt es eine gescheite Möglichkeit ein TBitmap zu einem SDL_Surface oder direkt zur tauglichen Textur in GLuint zu konvertieren ?

Dachte mir man könne das mit einer selbstgeschriebenen oder übersetzten putpixel-Funktion machen, aber die putpixel-Funktionen die ich so bei Google finde sind alle in C und die Datentypen sind recht ungewohnt in dem Fall. (Uint8 *) wäre doch PUint8() oder sehe ich das falsch ? Der zu übersetzende Code wäre in der SDL-Dokumentation die Funktion putpixel.
Meine Probleme habe ich bei der Zeile mit Uint8 *p = [...] (Zeile 4). Was macht die Zeile genau ? Sie ermittelt doch den Zeiger auf das Pixel, aber wie ? Ich verstehe überhaupt nicht, was hinter der Zeile steckt und wie man es übersetzen soll weiß ich auch nicht.

Andererseits gibt es bestimmt andere Methoden, das wäre ja nur in ein SDL-Surface, mein Ziel ist aber eh in einen GLuint um es in OpenGL nutzen zu können, weswegen ich den Weg über meinen Textur-Lader auch weglassen könnte, falls das direkt geht. Geht das direkt ? Es wäre halt Unfug ein TBitmap erst zu speichern um es dann wieder mit dem Texturemanager zu laden.

Gruß,
Nils

_________________
Meine Musik: spiker-music.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TBitmap -> SDL-Surface/Textur
BeitragVerfasst: Sa Apr 07, 2012 12:13 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;

(Uint8 *)surface->pixels ist die Adresse des ersten Pixels
y * surface->pitch + x * bpp ist die Anzahl der Pixel zwischen dem ersten Pixel und dem gesuchten Pixel.
Wir verschieben also unseren Pointer vom ersten Pixel zum gesuchten Pixel.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TBitmap -> SDL-Surface/Textur
BeitragVerfasst: Sa Apr 07, 2012 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Okt 03, 2007 14:22
Beiträge: 388
Danke. Habe den Code für ein 32-Bit-Surface fertig und er läuft.

Code:
  1. procedure PutPixel(Surface : PSDL_Surface; x, y : Integer; Pixel : Uint32);
  2. var p : Pointer;
  3. begin
  4.   p := Pointer(Integer(Surface^.pixels)+y*Surface.pitch+x*4);
  5.   Cardinal(p^) := Pixel;
  6. end;

_________________
Meine Musik: spiker-music.net


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


Wer ist online?

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