[Lazarus] Graphical differences between Mac OS X on Intel and PowerPC...

dominique at savagesoftware.com.au dominique at savagesoftware.com.au
Sun Jun 7 14:03:54 CEST 2009



  s_w := bbb.Width;
  s_h:= bbb.Height;
  GetMem( s_data, s_h * s_w * 4 );
  
  ScanLineImage := bbb.CreateIntfImage;
    
  // Copy the data from the bitmap
  for j := 0 to s_h - 1 do
  begin
    row := ScanLineImage.GetDataLineStart( j );
    for i := 0 to s_w - 1 do
      s_data[ j * s_w + i ] := $ff000000 + $10000 * row[ i ].b + $100 *
row[ i ].g + row[ i ].r;
  end;
  
  ScanLineImage.Free;  

Oh, Maybe I did not make it clear enough. tempSurfaces are used as textures
during OpenGL calls.

So after the WordArray is converted to an SDL surface, I use the surface in
OpenGL.

Dominique. 

On Sun, 7 Jun 2009 13:10:23 +0200, Mattias Gaertner
<nc-gaertnma at netcologne.de> wrote:
> On Sun, 07 Jun 2009 06:50:30 -0400
> <dominique at savagesoftware.com.au> wrote:
> 
>> I've narrowed down the surface creation error to the following
>> block...
>> 
>>     {$IFDEF CPUPOWERPC}
>>     tempSurface := SDL_CreateRGBSurfaceFrom( aWordArray, aWidth,
>> aHeight, 32, aWidth * 4, $FF000000, $00FF0000, $0000FF00, $000000FF );
>>     {$ENDIF}
>>     {$IFDEF CPUi386}
>>     tempSurface := SDL_CreateRGBSurfaceFrom( aWordArray, aWidth,
>> aHeight, 32, aWidth * 4, $000000FF, $0000FF00, $00FF0000, $FF000000 );
>>     {$ENDIF}
>>     {$IFDEF CPUARM}
>>     tempSurface := SDL_CreateRGBSurfaceFrom( aWordArray, aWidth,
>> aHeight, 32, aWidth * 4, $000000FF, $0000FF00, $00FF0000, $FF000000 );
>>     {$ENDIF}
>> 
>> The only one that works is the line in CPUi386. The CPUPOWERPC
>> displays with the pink glitch I mentioned earlier and I'm not really
>> concerned about CPUARM just yet.
> 
> Please tell how tempSurface is passed to the LCL.
> 
> You can see what image format the LCL uses with the following code:
> 
> procedure TMainForm.FormCreate(Sender: TObject);
> var
>   bmp: TBitmap;
>   IntfImg: TLazIntfImage;
> begin
>   bmp:=TBitmap.Create;
>   IntfImg:=bmp.CreateIntfImage;
>   writeln(IntfImg.DataDescription.AsString);
>   IntfImg.Free;
>   bmp.Free;
> end;
> 
> Keep in mind the the format depends on the source. A screen shot may
> have another format than a memory TBitmap.
> 
> 
> Mattias
> 
> 
>> 
>> Dominique. 
>> 
>> On Thu, 04 Jun 2009 11:28:12 +0200, Marc Weustink
>> <marc.weustink at cuperus.nl>
>> wrote:
>> > dominique at savagesoftware.com.au wrote:
>> >> Hi Dimtry,
>> >>  I'll try and do so this evening. But the thing is that if I
>> >> create the GM
>> >> project on PowerPC and run it on Intel it looks fine. 
>> >> So my question is once the bitmap is loaded from HD or a stream,
>> >> shouldn't
>> >> it be identical once it is in memory regardless of if it is on
>> >> Intel or PowerPC. Shouldn't the RTL or LCL handle those
>> >> differences?
>> > 
>> > The LCL should handle this, but as ong as we don't know what you
>> > are doing, we cannot tell what is wrong.
>> > 
>> > Marc
>> > 
>> > 
>> > _______________________________________________
>> > Lazarus mailing list
>> > Lazarus at lists.lazarus.freepascal.org
>> > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>> 
>> --
>> _______________________________________________
>> Lazarus mailing list
>> Lazarus at lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
> 
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus




More information about the Lazarus mailing list