Recent

Author Topic: Pi the Demo(Scene)  (Read 2437 times)

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Pi the Demo(Scene)
« on: April 20, 2024, 09:33:52 pm »
I saw people introduce there Games and DemoScene Effect in this Forum,
so I thought why not to mention my Demo, Pi:
https://www.pouet.net/prod.php?which=94183

To see the Source just click on the Source Button. Its nothing exiting BUT
I'm proud of my gfx library, vipGFX
https://sourceforge.net/projects/vipgfx/

It is a vscreen based, all drawing routines included(most of them written in fast asm) for 32bit and 64bit platforms(Linux, Windows, DOS, MAC Intel/AArch64) 2D engine.
Use it for Demos, Games and programs made with Lazarus(it draws also on a Canvas).

I'm still developing it, so if You find any Bugs or have suggestions, mail me or write a PM.
I'm happy to help.
Joint the #fpc IRC Channel on Libera (irc.libera.chat:6697) I'm there.

Live a positive comment on Pouet or Blame me for not giving a proper credit to Clint Mansell for the Music ;)

KodeZwerg

  • Hero Member
  • *****
  • Posts: 2269
  • Fifty shades of code.
    • Delphi & FreePascal
Re: Pi the Demo(Scene)
« Reply #1 on: April 21, 2024, 09:35:44 am »
I saw people introduce there Games and DemoScene Effect in this Forum,
so I thought why not to mention my Demo, Pi:
https://www.pouet.net/prod.php?which=94183

To see the Source just click on the Source Button.

...

Live a positive comment on Pouet or Blame me for not giving a proper credit to Clint Mansell for the Music ;)
Quote
Loading...
An unhandled exception occurred at $00000001000156C9:
EAccessViolation: Access violation
  $00000001000156C9
  $0000000100018BEF
  $00000001000198D7
  $0000000100001BEB
  $00000001000031C6
  $0000000100010760
  $0000000100001AD0
  $00007FFC2A067034
  $00007FFC2BD62651
Right at that moment my comment would not be so pretty no matter about a named sound artist :D
OS: Windows 10 64bit
AV: Kaspersky AntiVirus - 64bit (no alert, nothing blocked)
Downloaded Pi.zip, extracted to a non-Windows-write-protected folder, run "pi_win.exe" with and without "l" argument.
same for pidemo-code-f77f924a33f9d102da1486d0f17f90c3df534ac4.zip where inside \BIN\ the pi.zip file is located.
Does it have any hard- or software requirements that I am not aware about?

...buuuut
I did found and run DarkHour made by you, classic intro in millenium style, plasma, fast fading, different scrollers, neon look, epilepsy pushing effects, that you should port over to your vipGFX for a high-res scaled version of it?
Nice work on that, good classic one!
« Last Edit: Tomorrow at 31:76:97 xm by KodeZwerg »

AlexTP

  • Hero Member
  • *****
  • Posts: 2488
    • UVviewsoft
Re: Pi the Demo(Scene)
« Reply #2 on: April 21, 2024, 09:52:47 am »
I can run it! Win10 x64, very old PC with Intel i3 CPU and very old NVidia GeForce.
Theme is very psychotic, which I do not like.
What I also did not like is the REPEATING picture of some 'spot' or 'neuron network' in the center.
But thanks.
« Last Edit: April 21, 2024, 09:56:30 am by AlexTP »

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Re: Pi the Demo(Scene)
« Reply #3 on: April 21, 2024, 10:05:26 am »
Quote
Loading...
An unhandled exception occurred at $00000001000156C9:
EAccessViolation: Access violation
  $00000001000156C9
  $0000000100018BEF
  $00000001000198D7
  $0000000100001BEB
  $00000001000031C6
  $0000000100010760
  $0000000100001AD0
  $00007FFC2A067034
  $00007FFC2BD62651


hm...
It runs at my Machine, it runs on the Compo Machine, it runs on all Machines i tested.
perhaps Kaspersky, usually Defender pops up? perhaps the bass sound library? perhaps my own code?
its a pity :(
sorry for that

I'm exited if the Linux version works.



Quote
...buuuut
I did found and run DarkHour made by you, classic intro in millenium style, plasma, fast fading, different scrollers, neon look, epilepsy pushing effects, that you should port over to your vipGFX for a high-res scaled version of it?
Nice work on that, good classic one!

it is a honor to me you liked it :)

what learned from making demos is, I would never again use 256 Color (DarkHour) and 3th party libraries(Bass).
« Last Edit: April 21, 2024, 10:18:00 am by Key-Real »

KodeZwerg

  • Hero Member
  • *****
  • Posts: 2269
  • Fifty shades of code.
    • Delphi & FreePascal
Re: Pi the Demo(Scene)
« Reply #4 on: April 21, 2024, 10:53:55 am »
I still try to make it run, 2 errors corrected that stopped the initial loading sequence:
file: music.pas
line: 44
original:
Code: Pascal  [Select][+][-]
  1.   bassChn := BASS_StreamCreateFile(FALSE, PChar(ExtractFilePath(ParamStr(0))+'/pi.mp3'), 0, 0, 0);
fixed:
Code: Pascal  [Select][+][-]
  1.   bassChn := BASS_StreamCreateFile(FALSE, PChar(ExtractFilePath(ParamStr(0)) + PathDelim + 'pi.mp3'), 0, 0, 0);

file: allimg.pas
line: 170
original:
Code: Pascal  [Select][+][-]
  1.         openPKfile(ExtractFilePath(ParamStr(0))+'/data.dat');
fixed:
Code: Pascal  [Select][+][-]
  1.         openPKfile(ExtractFilePath(ParamStr(0)) + PathDelim + 'data.dat');

and now it stops here:
file: sprite3.inc
line: 74
error: roundss undefined
Code: Pascal  [Select][+][-]
  1. roundss xmm0,xmm0,0

Lazarus 3.99 (rev main_3_99-1865-gfdc1806f53) FPC 3.2.2 x86_64-win64-win32/win64
« Last Edit: Tomorrow at 31:76:97 xm by KodeZwerg »

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Re: Pi the Demo(Scene)
« Reply #5 on: April 21, 2024, 10:58:26 am »
I compiled it only with the Trunk.

roundss is a SSE instruction

AlexTP

  • Hero Member
  • *****
  • Posts: 2488
    • UVviewsoft
Re: Pi the Demo(Scene)
« Reply #6 on: April 21, 2024, 11:20:36 am »
Code: Pascal  [Select][+][-]
  1. ExtractFilePath(ParamStr(0)) + PathDelim + 'data.dat'
No, ExtractFilePath gives the text with trailing slash already.
ExtractFileDir - not.

KodeZwerg

  • Hero Member
  • *****
  • Posts: 2269
  • Fifty shades of code.
    • Delphi & FreePascal
Re: Pi the Demo(Scene)
« Reply #7 on: April 21, 2024, 02:30:59 pm »
AlexTP +1

I am currently porting assembler to pascal, as of right now something happen on screen, yay!

file: sprite3.inc

original:
Code: Pascal  [Select][+][-]
  1. procedure ScaleSprite(where : gfxImage; x1, y1, x2, y2 : longint; sprite : gfxImage); overload;
  2. var xstep, ystep : single;
  3.     endX, endY : longint;
  4.     y : longint;
  5.     color : dword;
  6. begin
  7.  asm
  8.  
  9.           mov eax,x1
  10.           mov ebx,x2
  11.           cmp eax,ebx
  12.            jl @OK1
  13.  
  14.          xchg eax,ebx
  15.  
  16.           mov x2,eax
  17.           mov x1,ebx
  18.  
  19.         @OK1:
  20.  
  21.           mov eax,y1
  22.           mov ebx,y2
  23.           cmp eax,ebx
  24.            jl @OK2
  25.  
  26.          xchg eax,ebx
  27.  
  28.           mov y2,eax
  29.           mov y1,ebx
  30.  
  31.         @OK2:
  32.           mov eax,x2
  33.           sub eax,x1
  34.           mov edx,eax
  35.  
  36.           cmp edx,0
  37.            jl @theEnd
  38.  
  39.           dec edx
  40.           mov endX,edx
  41.  
  42.           mov ebx,y2
  43.           sub ebx,y1
  44.           mov edx,ebx
  45.           cmp edx,0
  46.            jl @theEnd
  47.  
  48.           dec edx
  49.           mov endY,edx
  50.          
  51.       cvtsi2ss xmm0,sprite.width
  52.       cvtsi2ss xmm1,eax
  53.          divss xmm0,xmm1
  54.          movss xstep,xmm0
  55.  
  56.       cvtsi2ss xmm0,sprite.height
  57.       cvtsi2ss xmm1,ebx
  58.          divss xmm0,xmm1
  59.          movss ystep,xmm0
  60.  
  61.            xor eax,eax
  62.            mov y,eax
  63.          xorps xmm6,xmm6
  64.  
  65.        @YLoop:
  66.            xor edx,edx
  67.        
  68.          xorps xmm7,xmm7
  69.        @Xloop:
  70.  
  71.          movss xmm0,xmm7
  72.          movss xmm1,xmm6
  73.  
  74.        roundss xmm0,xmm0,0
  75.        roundss xmm1,xmm1,0
  76.        
  77.       cvtss2si eax,xmm0
  78.       cvtss2si ebx,xmm1
  79.  
  80.            mov rsi,sprite.data
  81.           imul ebx,sprite.width
  82.            add ebx,eax
  83.            shl ebx,2
  84.            add rsi,rbx
  85.            mov ebx,dword ptr [rsi]
  86.            mov color,ebx
  87.        
  88.            mov eax,x1
  89.            add eax,edx
  90.  
  91.            cmp eax,0
  92.             jl @Skip
  93.  
  94.            mov ecx,where.width
  95.  
  96.            cmp eax,ecx
  97.            jge @Skip
  98.  
  99.            mov ebx,y1
  100.            add ebx,y
  101.  
  102.            cmp ebx,0
  103.             jl @Skip
  104.  
  105.            cmp ebx,where.height
  106.            jge @Skip
  107.  
  108.            mov rdi,where.data
  109.           imul ebx,ecx
  110.            add ebx,eax
  111.            shl ebx,2
  112.            add rdi,rbx
  113.            mov eax,color
  114.            mov dword ptr [rdi],eax
  115.  
  116. @Skip:
  117.          movss xmm4,xstep
  118.          addss xmm7,xmm4
  119.      
  120.            inc edx
  121.            cmp edx,endX
  122.             jb @Xloop
  123.  
  124.          movss xmm4,ystep  
  125.          addss xmm6,xmm4
  126.  
  127.            inc y
  128.            mov eax,endY
  129.            cmp y,eax
  130.             jb @Yloop
  131.  
  132.       @theEnd:
  133.           emms
  134.  
  135.       end;
  136. end;

converted to pascal:
Code: Pascal  [Select][+][-]
  1. procedure ScaleSprite(where: gfxImage; x1, y1, x2, y2: LongInt; sprite: gfxImage); overload;
  2.   procedure Swap(var A, B: LongInt); inline;
  3.   var
  4.     Temp: LongInt;
  5.   begin
  6.     Temp := A;
  7.     A := B;
  8.     B := Temp;
  9.   end;
  10. var
  11.   xstep, ystep: Single;
  12.   srcX, srcY,
  13.   endX, endY,
  14.   targetX: LongInt;
  15.   i, j, y: LongInt;
  16.   srcColor: DWord;
  17. begin
  18.   if x1 > x2 then
  19.     Swap(x1, x2);
  20.   if y1 > y2 then
  21.     Swap(y1, y2);
  22.  
  23.   endX := x2 - x1;
  24.   endY := y2 - y1;
  25.   if (endX <= 0) or (endY <= 0) then
  26.     Exit;
  27.  
  28.   xstep := sprite.width / endX;
  29.   ystep := sprite.height / endY;
  30.  
  31.   for y := 0 to endY - 1 do
  32.     for i := 0 to endX - 1 do
  33.       begin
  34.         srcX := Round(i * xstep);
  35.         srcY := Round(y * ystep);
  36.         if (srcX >= 0) and (srcX < sprite.width) and (srcY >= 0) and (srcY < sprite.height) then
  37.           begin
  38.             srcColor := PDWord(PByte(sprite.data) + (srcY * sprite.width + srcX) * SizeOf(DWord))^;
  39.             j := y1 + y;
  40.             if (j >= 0) and (j < where.height) then
  41.               begin
  42.                 targetX := x1 + i;
  43.                 if (targetX >= 0) and (targetX < where.width) then
  44.                   PDWord(PByte(where.data) + (j * where.width + targetX) * SizeOf(DWord))^ := srcColor;
  45.               end;
  46.           end;
  47.       end;
  48. end;
Could you test and confirm if its running as it should at most likely same speed?
Here it breaks after some word spoke, some browny plasma flying around, some font faded in and out.
If you say that speed perform now bad than I stop translating it :D
« Last Edit: Tomorrow at 31:76:97 xm by KodeZwerg »

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Re: Pi the Demo(Scene)
« Reply #8 on: April 21, 2024, 02:45:45 pm »
You can See how it supose to be in the YouTube capture.
Link in pouet

KodeZwerg

  • Hero Member
  • *****
  • Posts: 2269
  • Fifty shades of code.
    • Delphi & FreePascal
Re: Pi the Demo(Scene)
« Reply #9 on: April 21, 2024, 06:33:03 pm »
file: sprite3.inc
line: 74
error: roundss undefined
I was not precise enough, error is "Illegal Instruction"

Here it breaks after some word spoke, some browny plasma flying around, some font faded in and out.
Again I failed to tell some important news, that statement was meant for "ShadowInTheBox" .

Now I have found a folder called "draw32.all.pas", where it seems to be the original header translation is inside, when saying original I mean interpreted as pascal source.

Here are my latest changes, when I find a time I might rewrite more, from point of speed my way could be a few ticks faster than the original.
file: \gfxinc\draw32\draw32.all.x64\sprite3.inc

original:
Code: Pascal  [Select][+][-]
  1. procedure ScaleSprite(where : gfxImage; x1, y1, x2, y2 : longint; sprite : gfxImage); overload;
  2. var xstep, ystep, sx, sy : single;
  3.     x, y, i : longint;
  4.     color : dword;
  5. begin
  6.  
  7.   if x1 > x2 then begin
  8.     i:= x2;
  9.     x2:= x1;
  10.     x1:= i;
  11.   end;
  12.  
  13.   if y1 > y2 then begin
  14.     i:= y2;
  15.     y2:= y1;
  16.     y1:= i;
  17.   end;
  18.  
  19.   if (x2 - x1) <= 0 then exit;
  20.   if (y2 - y1) <= 0 then exit;
  21.  
  22.  
  23.   xstep:= sprite.width / (x2 - x1);
  24.   ystep:= sprite.height / (y2 - y1);
  25.   color:= 0;
  26.   y:= 0;
  27.   sy:= 0;
  28.  
  29.   repeat
  30.  
  31.     x:= 0;
  32.     sx:= 0;
  33.  
  34.     Repeat
  35.       color:= getpixelClip(sprite, round(sx), round(sy));
  36.       putPixelClip(where, x1 + x, y1 + y, color);
  37.  
  38.       sx:= sx + xstep;
  39.  
  40.       inc(x);
  41.     until x >= (x2 - x1 - 1);
  42.  
  43.     sy:= sy + ystep;
  44.     inc(y);
  45.   until y >= (y2 - y1 - 1);
  46.  
  47. end;
My version without knowing that above existed :D
Code: Pascal  [Select][+][-]
  1. procedure ScaleSprite(where: gfxImage; x1, y1, x2, y2: LongInt; sprite: gfxImage); overload;
  2.   procedure Swap(var A, B: LongInt); inline;
  3.   var
  4.     Temp: LongInt;
  5.   begin
  6.     Temp := A;
  7.     A := B;
  8.     B := Temp;
  9.   end;
  10. var
  11.   stepX, stepY: Single;
  12.   srcX, srcY,
  13.   endX, endY,
  14.   dstX, dstY,
  15.   x, y: LongInt;
  16.   srcColor: DWord;
  17. begin
  18.   if x1 > x2 then
  19.     Swap(x1, x2);
  20.   if y1 > y2 then
  21.     Swap(y1, y2);
  22.  
  23.   endX := x2 - x1;
  24.   endY := y2 - y1;
  25.   if (endX <= 0) or (endY <= 0) then
  26.     Exit;
  27.  
  28.   stepX := sprite.width / endX;
  29.   stepY := sprite.height / endY;
  30.  
  31.   for x := 0 to Pred(endX) do
  32.     for y := 0 to Pred(endY) do
  33.       begin
  34.         srcX := Round(x * stepX);
  35.         srcY := Round(y * stepY);
  36.         if (srcX >= 0) and (srcX < sprite.width) and (srcY >= 0) and (srcY < sprite.height) then
  37.           begin
  38.             srcColor := PDWord(PByte(sprite.data) + (srcY * sprite.width + srcX) * SizeOf(DWord))^;
  39.             dstX := x1 + x;
  40.             dstY := y1 + y;
  41.             if ((dstY >= 0) and (dstY < where.height) and (dstX >= 0) and (dstX < where.width)) then
  42.               PDWord(PByte(where.data) + (dstY * where.width + dstX) * SizeOf(DWord))^ := srcColor;
  43.           end;
  44.       end;
  45. end;

original
Code: Pascal  [Select][+][-]
  1. procedure ScaleSprite(where : gfxImage; x1, y1, x2, y2 : longint; mask : dword; sprite : gfxImage); overload;
  2. var xstep, ystep, sx, sy : single;
  3.     x, y, i : longint;
  4.     color : dword;
  5. begin
  6.  
  7.     if x1 > x2 then begin
  8.       i:= x2;
  9.       x2:= x1;
  10.       x1:= i;
  11.     end;
  12.  
  13.     if y1 > y2 then begin
  14.       i:= y2;
  15.       y2:= y1;
  16.       y1:= i;
  17.     end;
  18.  
  19.     if (x2 - x1) <= 0 then exit;
  20.     if (x2 - y1) <= 0 then exit;
  21.  
  22.     xstep:= sprite.width / (x2-x1);
  23.     ystep:= sprite.height / (y2-y1);
  24.  
  25.     color:= 0;
  26.     y:= 0;
  27.     sy:= 0;
  28.  
  29.     repeat
  30.       x:= 0;
  31.       sx:= 0;
  32.       Repeat
  33.  
  34.         color:= getpixelClip(sprite, round(sx), round(sy));
  35.         if color <> mask then putPixelClip(where, x1 + x, y1 + y, color);
  36.  
  37.         sx:= sx + xstep;
  38.  
  39.         inc(x);
  40.       until x >= (x2 - x1 - 1);
  41.  
  42.       sy:= sy + ystep;
  43.       inc(y);
  44.     until y >= (y2 - y1 - 1);
  45.  
  46. end;
my conversation:
Code: Pascal  [Select][+][-]
  1. procedure ScaleSprite(where: gfxImage; x1, y1, x2, y2: LongInt; mask: DWord; sprite: gfxImage); overload;
  2.   procedure Swap(var A, B: LongInt); inline;
  3.   var
  4.     Temp: LongInt;
  5.   begin
  6.     Temp := A;
  7.     A := B;
  8.     B := Temp;
  9.   end;
  10. var
  11.   stepX, stepY: Single;
  12.   srcX, srcY,
  13.   endX, endY,
  14.   dstX, dstY,
  15.   x, y: LongInt;
  16.   srcColor: DWord;
  17. begin
  18.   if x1 > x2 then
  19.     Swap(x1, x2);
  20.   if y1 > y2 then
  21.     Swap(y1, y2);
  22.  
  23.   endX := x2 - x1;
  24.   endY := y2 - y1;
  25.   if (endX <= 0) or (endY <= 0) then
  26.     Exit;
  27.  
  28.   stepX := sprite.width / endX;
  29.   stepY := sprite.height / endY;
  30.  
  31.   for x := 0 to Pred(endX) do
  32.     for y := 0 to Pred(endY) do
  33.       begin
  34.         srcX := Round(x * stepX);
  35.         srcY := Round(y * stepY);
  36.         if (srcX >= 0) and (srcX < sprite.width) and (srcY >= 0) and (srcY < sprite.height) then
  37.           begin
  38.             srcColor := PDWord(PByte(sprite.data) + (srcY * sprite.width + srcX) * SizeOf(DWord))^;
  39.             if srcColor <> mask then
  40.               begin
  41.                 dstX := x1 + x;
  42.                 dstY := y1 + y;
  43.                 if ((dstY >= 0) and (dstY < where.height) and (dstX >= 0) and (dstX < where.width)) then
  44.                   PDWord(PByte(where.data) + (dstY * where.width + dstX) * SizeOf(DWord))^ := srcColor;
  45.               end;
  46.           end;
  47.       end;
  48. end;

There are many more methods that could be overhauled, for both 32 and 64bit.
Currently I just use the "original" 64bit and added my two patches, it works great now.
« Last Edit: Tomorrow at 31:76:97 xm by KodeZwerg »

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Re: Pi the Demo(Scene)
« Reply #10 on: April 21, 2024, 08:41:17 pm »
@KodeZwerg:
"Shadow in the Box"....
 Wow :)  You cloned all my repos


and YES! Your version is faster, you saved 2 calls in the inner loop, that's good for cache :)


You like the idea behind vipGFX?

Does Pi runs now? You like it? You knew the Film?


KodeZwerg

  • Hero Member
  • *****
  • Posts: 2269
  • Fifty shades of code.
    • Delphi & FreePascal
Re: Pi the Demo(Scene)
« Reply #11 on: April 21, 2024, 10:00:46 pm »
@KodeZwerg:
"Shadow in the Box"....
 Wow :)  You cloned all my repos
I was curious why it did not work and loaded another repo in that used vipGFX to learn from where it fails on my test machine.

and YES! Your version is faster, you saved 2 calls in the inner loop, that's good for cache :)
Good to hear, time for VSync :D

You like the idea behind vipGFX?
I have to say, what you have done works smooth and fast, I mean no flicker, so for you that knows how to handle it correctly, its a great helper, for me as a new-born, its first of all a challenge to find how out something works and how I can use such for my own pleasure.
I was not checking yet the folders since it is a lot that I downloaded lol
Does a demo for vipGFX exists that works with internal created images or image data?
Like how do I fill a rectangle/ellipse/pie at TRect coordinates (to prepare internal a buffered image that I easy can transport to some display method ....)
How do I put text from a TFont on screen?
Such basic stuff to learn how to work with your lib would be amazing, maybe such already exists and I was ignorant  :-[
Later slightly more advanced, what image fileformat can be loaded from a stream to be used within vipGFX, that way I could store my images compressed within source instead of external data.
As you might noticed, interested I am, if I become a fan of DirectX compared vs OpenGL, hard to answer, best would be that I could choose a renderer and vipGFX offers the methods to use them.
My selfish answer would be, it doesnt matter to me since I anyway just code for windows :D

Does Pi runs now? You like it? You knew the Film?
It's running!
If I be a neutral judge, here are my category points (0 worst, 10 max)
 - from point of how good works one scene with another: 6 to 7
 - from point of how good does sound match screen: 8
 - from point of used different effects: 7
 - from point of filesize vs enjoyment: 4 to 5 (its more the filesize of your data.dat that count in negative)
 - from point of high-res usage: 2
 - from point of power usage: 3 to 4 (can just judge my own build of the directX headers, used fpc latest stable)
 - from point of coolness factor: 7
So all in all my feeling for "liking it" is higher than that I was bored.
The movie I do not know yet.

After watching the trailer with original movie intro, last comparision to judge is how close is it to the original: pretty high beside missing text blend ins it look and feel like original.
To be honest I would need to turn slow-mo on, for both, your intro and original trailer, to be able to say that here or there are too huge differences as to judge it good anymore.

From my side both thumbs up!
« Last Edit: Tomorrow at 31:76:97 xm by KodeZwerg »

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Re: Pi the Demo(Scene)
« Reply #12 on: April 21, 2024, 10:37:58 pm »
Quote
I have to say, what you have done works smooth and fast, I mean no flicker, so for you that knows how to handle it correctly, its a great helper, for me as a new-born, its first of all a challenge to find how out something works and how I can use such for my own pleasure.
Yes enjoy

Quote
Does a demo for vipGFX exists that works with internal created images or image data?
See the ./doc Folder

Quote
Like how do I fill a rectangle/ellipse/pie at TRect coordinates (to prepare internal a buffered image that I easy can transport to some display method ....)
en ellipse and pie are not supported jet.
"TRect" are always just x and y and letz say radius for circle....

Quote
How do I put text from a TFont on screen?
There is a FreeType 1 integration, as it is a native pascal library

Quote
Such basic stuff to learn how to work with your lib would be amazing, maybe such already exists and I was ignorant  :-[
the doc is not complete, just tell me what you wanna knew and I add it to the doc.

Quote
Later slightly more advanced, what image fileformat can be loaded from a stream to be used within vipGFX, that way I could store my images compressed within source instead of external data.
ARGB

Quote
As you might noticed, interested I am, if I become a fan of DirectX compared vs OpenGL, hard to answer, best would be that I could choose a renderer and vipGFX offers the methods to use them.
under Windows You can chose between DirectX, OepnGL and WIN32 API to flip on the screen

Quote
To be honest I would need to turn slow-mo on, for both, your intro and original trailer, to be able to say that here or there are too huge differences as to judge it good anymore.
Don't do that :) it is not 100% :(

Quote
From my side both thumbs up!
tell them at Pouet.net :(

KodeZwerg

  • Hero Member
  • *****
  • Posts: 2269
  • Fifty shades of code.
    • Delphi & FreePascal
Re: Pi the Demo(Scene)
« Reply #13 on: April 22, 2024, 12:22:26 am »
See the ./doc Folder
Thats my next mission, try to convert that simple copperbar demo I've lately made (BGRA & BGL) to the world of vipGFX.
If I dont find what I need, like basic things I've earlier mentioned, dot, line, rectangle etc... I might create some to simplify the conversation (bitmap/canvas -> vipgfx)
tell them at Pouet.net :(
I've tried, see attachment, feel free to put there a link up that point to here so interested can read my opinion(s) :D
« Last Edit: Tomorrow at 31:76:97 xm by KodeZwerg »

 

TinyPortal © 2005-2018