Autor Téma: Firemonkey 3D je pomalé  (Přečteno 7934 krát)

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 468
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Firemonkey 3D je pomalé
« Odpověď #30 kdy: 20-01-2021, 14:40:47 »
Proc se vlastne musi delat priprava v tom renderu ? Neslo by to nekam prehodit (a taky pocitat na vice vlaknech) a pak jen zobrazit ? Pred nejakou dobou jsem zapasil s vykreslovanim (2D tedy) a celkove mi to zaclo chodit az prave v teto metode (ekvivalentu pro 2D). Uz si nepamatuju co a jak, ale priprava bitmapy a jeji nasledne pouze zkopceni v renderu vykazovalo psi kusy.
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 360
  • Karma: 0
Re:Firemonkey 3D je pomalé
« Odpověď #31 kdy: 21-01-2021, 07:05:41 »
Samozřejmě, že by šlo vytvořit si globální pole vertexů jinde a měnit jej pouze pokud je potřeba. Nedomnívám se ale, že při dnešních CPU je jednoduchý matematický cyklus motající 500000x nějaká zátěž. Na tomto místě se moc neušetří. Problém vidím v 3D engine starající se o kreslení.   

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3516
  • Karma: 112
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Firemonkey 3D je pomalé
« Odpověď #32 kdy: 21-01-2021, 08:53:03 »
>Zkusím si vymyslet nějaký analyzující kód, který vrátí pole TVertexBufferů, TIndexBufferů a TColorMaterialů podle toho jak jdou čáry za sebou. Aby se minimalizoval jejich počet a dopředu definoval jejich velikost. I tak jich ale bude pár set.

Proc za sebou a par set? Tak prvni vykreslim vse co je priklad cervene plne, pak zlute plne, pak cervene carkovane, pak zlute plne. Zas tak kombinaci tam neni ne?
Embarcadero MVP - Czech republic

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1586
  • Karma: 52
    • Verze Delphi: 11.3
Re:Firemonkey 3D je pomalé
« Odpověď #33 kdy: 21-01-2021, 09:07:32 »
Excellent
Rated 1 time
>Zkusím si vymyslet nějaký analyzující kód, který vrátí pole TVertexBufferů, TIndexBufferů a TColorMaterialů podle toho jak jdou čáry za sebou. Aby se minimalizoval jejich počet a dopředu definoval jejich velikost. I tak jich ale bude pár set.

Proc za sebou a par set? Tak prvni vykreslim vse co je priklad cervene plne, pak zlute plne, pak cervene carkovane, pak zlute plne. Zas tak kombinaci tam neni ne?

Pokud by vykreslil např. nejprve všechny červené a pak všechny žluté čáry, budou se mu překrývat jinak, než je tomu na výkrese (víc to samozřejmě vynikne u ploch než u čar).