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

Aktuelle Zeit: Mo Apr 06, 2020 22:13

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 131 Beiträge ]  Gehe zu Seite Vorherige  1 ... 5, 6, 7, 8, 9
Autor Nachricht
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Mi Dez 30, 2015 12:25 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 196
Wie!? Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Mi Dez 30, 2015 17:37 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1212
Programmiersprache: Delphi/FPC
TAK hat auf meinen Beitrag vom Februar geantwortet ^^
Kommst du bei der TBitmap32 iwie an die Daten/Scanline ran?

€: guck dir mal TglBitmapData.AssignFromBitmap (aus dem aktuellen master-Branch) an, die sollte das selbe machen.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Mi Dez 30, 2015 17:53 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
TBitmap32

Was ist das für ein Format, ist dies Delphi spezifisch ?

Mit Lazarus und Google kann ich nichts schlaues finden.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Mi Dez 30, 2015 18:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2573
Wohnort: Berlin
Programmiersprache: C/C++, C#
Ich rede mich mal mit jahresputz raus 8)

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Do Dez 31, 2015 14:20 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 196
@mathias
Graphics32 ist eigentlich was Bekanntes. Gut, es war anfangs nur für Delphi jetzt geht Bitmap32 auch für Lazarus usw. Ist bei CodeTyphon mit drin.

@Bergmann89
Ja, Scanline gibt es natürlich. Aber TBitmap32 läuft im Standard mit BGRA. Das kann man per Direktive umstellen. Habe aber gerade etwas Angst, dass der Rest meines Codes dabei Probleme bekommt.

P.S.: Wenn ich bei glBitmap die Direktive für PNG (Delphi) aktiviere, dann gibt es Fehler.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Do Dez 31, 2015 18:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1212
Programmiersprache: Delphi/FPC
Hey,

hast du dir dir verlinkte Methode mal angesehen? Du musst nur das passende glBitmap Format für dein TBitmap32 Format auswählen und die Daten kopieren. Genau das macht die Methode. TBitmap nutzt auch BGRA, sollte also fast 1 zu 1 das selbe sein wie TBitmap32.

Was für Fehler (welche Zeile)? Ich versuch natürlich immer alles kompatibel zu allen Compilern zu halten, aber manchmal schleichen sich kleine Fehler ein. Kannst du das schnell selber fixen und vlt nen Patch hochladen? Wenn nicht, was genau nutzt du als Compiler?

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Do Dez 31, 2015 18:53 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 196
@Bergmann
Mache ich noch..
Jetzt wünsche ich Dir und allen hier ein schönes und insbesondere friedliches Jahr 2016


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Fr Jan 01, 2016 15:23 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 196
So..., es geht, wenn man AssignFromBitmap überlädt und GR32 in uses packt:

bei diesem IntFormat bin ich mir nicht ganz sicher.

Code:
  1.  
  2. uses  [...] {$IFDEF GLB_DELPHI}           Dialogs, Graphics, Types, GR32,     {$ENDIF} [...]
  3.  
  4. function TglBitmapData.AssignFromBitmap(const aBitmap: TBitmap32): Boolean;
  5. var
  6.   pSource: PColor32Array;
  7.   pData, pTempData: PByte;
  8.   Row, RowSize, TempWidth, TempHeight: Integer;
  9.   IntFormat: TglBitmapFormat;
  10. begin
  11.   result := false;
  12.  
  13.   if (Assigned(aBitmap)) then
  14.   begin
  15.     IntFormat := tfBGRA8ub4;
  16.     TempWidth  := aBitmap.Width;
  17.     TempHeight := aBitmap.Height;
  18.     RowSize    := TFormatDescriptor.Get(IntFormat).GetSize(TempWidth, 1);
  19.     GetMem(pData, TempHeight * RowSize);
  20.  
  21.     try
  22.       pTempData := pData;
  23.       for Row := 0 to TempHeight -1 do
  24.       begin
  25.         pSource := aBitmap.Scanline[Row];
  26.         if (Assigned(pSource)) then
  27.         begin
  28.           Move(pSource^, pTempData^, RowSize);
  29.           Inc(pTempData, RowSize);
  30.         end;
  31.       end;
  32.       SetData(pData, IntFormat, TempWidth, TempHeight);
  33.       result := true;
  34.     except
  35.       if Assigned(pData) then
  36.         FreeMem(pData);
  37.       raise;
  38.     end;
  39.   end;
  40. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Fr Jan 01, 2016 16:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1212
Programmiersprache: Delphi/FPC
Wenn das Ergebnis stimmt, dann passt das Format. Is die TBitmap32 immer BGRA8, oder kann die wie die TBitmap auch andere Formate? Wenn ja solltest du die der Vollständigkeit halber auch noch implementieren.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Fr Jan 01, 2016 18:39 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 196
Wenn man das ganz richtig machen möchte, dann vielleicht so :
Code:
  1. {$I GR32.inc}
  2.  
  3. {$IFDEF RGBA_FORMAT}
  4.   IntFormat := tfRGBA8ub4;
  5. {$ELSE}
  6.   IntFormat := tfBGRA8ub4;  
  7. {$ENDIF}

Für mich reicht aber erst mal obiges.
Andere Formate hat GR32 anscheinend nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBitmap
BeitragVerfasst: Fr Jan 01, 2016 18:51 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 196
Hier die Fehler bei GLB_PNGIMAGE :

Code:
  1. function TglBitmapData.LoadPNG(const aStream: TStream): Boolean;
  2. var
  3.   StreamPos: Int64;
  4.   Png: TPNGObject;
  5.   Header: String[8];
  6.   Row, Col, PixSize, LineSize: Integer;
  7.   NewImage, pSource, pDest, pAlpha: pByte;
  8.   PngFormat: TglBitmapFormat;
  9.   FormatDesc: TFormatDescriptor;
  10.  
  11. const
  12.   PngHeader: String[8] = #137#80#78#71#13#10#26#10;
  13.  
  14. begin
  15.   result := false;
  16.  
  17.   StreamPos := aStream.Position;
  18.   aStream.Read(Header[0], SizeOf(Header));
  19.   aStream.Position := StreamPos;
  20.  
  21.   {Test if the header matches}
  22.   if Header = PngHeader then begin
  23.     Png := TPNGObject.Create;
  24.     try
  25.       Png.LoadFromStream(aStream);
  26.  
  27.       case Png.Header.ColorType of
  28.         COLOR_GRAYSCALE:
  29.           PngFormat := tfLuminance8ub1;
  30. //        COLOR_GRAYSCALEALPHA:
  31. //          PngFormat := tfLuminance8Alpha8us1;   <= Das Format gibt es nicht
  32.         COLOR_RGB:
  33.           PngFormat := tfBGR8ub3;
  34.         COLOR_RGBALPHA:
  35.           PngFormat := tfBGRA8ub4;
  36. //        else
  37. //          raise EglBitmapException.Create ('LoadPng - Unsupported Colortype found.');   <= das gibt es nicht
  38.       end;
  39.  
  40.       FormatDesc := TFormatDescriptor.Get(PngFormat);
  41. //      PixSize    := Round(FormatDesc.PixelSize);    <= PixelSize gibt es nicht
  42.       LineSize   := FormatDesc.GetSize(Png.Header.Width, 1);
  43.  
  44.       GetMem(NewImage, LineSize * Integer(Png.Header.Height));
  45.       try
  46.         pDest := NewImage;
  47.  
  48.         case Png.Header.ColorType of
  49.           COLOR_RGB, COLOR_GRAYSCALE:
  50.             begin
  51.               for Row := 0 to Png.Height -1 do begin
  52.                 Move (Png.Scanline[Row]^, pDest^, LineSize);
  53.                 Inc(pDest, LineSize);
  54.               end;
  55.             end;
  56.           COLOR_RGBALPHA, COLOR_GRAYSCALEALPHA:
  57.             begin
  58.               PixSize := PixSize -1;
  59.  
  60.               for Row := 0 to Png.Height -1 do begin
  61.                 pSource := Png.Scanline[Row];
  62.                 pAlpha := pByte(Png.AlphaScanline[Row]);
  63.  
  64.                 for Col := 0 to Png.Width -1 do begin
  65.                   Move (pSource^, pDest^, PixSize);
  66.                   Inc(pSource, PixSize);
  67.                   Inc(pDest, PixSize);
  68.  
  69.                   pDest^ := pAlpha^;
  70.                   inc(pAlpha);
  71.                   Inc(pDest);
  72.                 end;
  73.               end;
  74.             end;
  75.           else
  76. //            raise EglBitmapException.Create ('LoadPng - Unsupported Colortype found.');   <= das gibt es auch nicht
  77.         end;
  78.  
  79.         SetData(NewImage, PngFormat, Png.Header.Width, Png.Header.Height);
  80.  
  81.         result := true;
  82.       except
  83.         if Assigned(NewImage) then
  84.           FreeMem(NewImage);
  85.         raise;
  86.       end;
  87.     finally
  88.       Png.Free;
  89.     end;
  90.   end;
  91. end;


Code:
  1. procedure TglBitmapData.SavePNG(const aStream: TStream);
  2. var
  3.   Png: TPNGObject;
  4.  
  5.   pSource, pDest: pByte;
  6.   X, Y, PixSize: Integer;
  7.   ColorType: Cardinal;
  8.   Alpha: Boolean;
  9.  
  10.   pTemp: pByte;
  11.   Temp: Byte;
  12. begin
  13.   if not (ftPNG in FormatGetSupportedFiles (Format)) then
  14.     raise EglBitmapUnsupportedFormat.Create(Format);
  15.  
  16.   case Format of
  17.     tfAlpha8ub1, tfLuminance8ub1: begin
  18.       ColorType := COLOR_GRAYSCALE;
  19.       PixSize   := 1;
  20.       Alpha     := false;
  21.     end;
  22. //    tfLuminance8Alpha8us1: begin   <= gibt es nicht
  23. //      ColorType := COLOR_GRAYSCALEALPHA;
  24. //      PixSize   := 1;
  25. //      Alpha     := true;
  26. //    end; [...]


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 131 Beiträge ]  Gehe zu Seite Vorherige  1 ... 5, 6, 7, 8, 9
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 62 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.153s | 15 Queries | GZIP : On ]