AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas
Thema durchsuchen
Ansicht
Themen-Optionen

DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

Ein Thema von milos · begonnen am 23. Mai 2016 · letzter Beitrag vom 9. Jun 2016
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 27. Mai 2016, 05:10
Hier geht's doch um dein Spiel in isometrischer Perspektive, oder?
Du willst doch so eine Retro-Computer-Klötzchengrafik, richtig?

In welcher Auflösung generierst du denn dein Originalbild?
In welche Zellauflösung soll's denn kopiert werden?
Genau, das ist richtig

Die Renderauflösung kann man je nach grösse der Ausgabe verändern was auf dem PC auch sehr gut klappt. Auf dem Android mit 308x180 rendering welches in 616x360 angezeigt wird (also quasi 2x vergrössert) sieht das leider sehr "matschig" aus :/

Freundliche Grüsse
Miniaturansicht angehängter Grafiken
screenshot_2016-05-27-02-32-03.jpg  
Milos
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 27. Mai 2016, 13:22
Aber das liegt doch nur an der Interpolation.
Erzeuge doch gleich in der Zielauflösung das Klötzchen-Bild!

Oder du guckst dir mal den TCanvasGpu an und den dahinterliegenden Context, vielleicht kann man ja doch irgendwo den Interpolationsmodus einstellen. Dann entsprechend anpassen und die veränderten Units zum Projekt hinzufügen und den modifierten Canvas registrieren.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 27. Mai 2016, 13:55
Ich kenne mich mit FireMonkey noch nicht wirklich aus, aber eine ganz dumme Idee: Was ist denn einen TPixelateEffect auf das Bild zu legen? Über BlockSize kann man die Verpixelung einstellen...

Klar, es ist unnötig das Bild erst hoch-zuinterpolieren um es dann wieder künstlich zu verpixeln, aber besser eine Notlösung als gar keine...
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 28. Mai 2016, 17:27
Aber das liegt doch nur an der Interpolation.
Erzeuge doch gleich in der Zielauflösung das Klötzchen-Bild!
Das weiss ich ja, und wie eben schon gesagt rendere ich das Bild in echtzeit und mir würde nur der Weg mit Set/GetPixel in den Sinn kommen und das würde keinen Sinn machen

Oder du guckst dir mal den TCanvasGpu an und den dahinterliegenden Context, vielleicht kann man ja doch irgendwo den Interpolationsmodus einstellen. Dann entsprechend anpassen und die veränderten Units zum Projekt hinzufügen und den modifierten Canvas registrieren.
Daran hab ich auch schon gedacht aber das ist schon ziemlich hart finde ich an den Units rumzuschrauben, ich glaube ich kann da vieles falsch machen

Ich kenne mich mit FireMonkey noch nicht wirklich aus, aber eine ganz dumme Idee: Was ist denn einen TPixelateEffect auf das Bild zu legen? Über BlockSize kann man die Verpixelung einstellen...

Klar, es ist unnötig das Bild erst hoch-zuinterpolieren um es dann wieder künstlich zu verpixeln, aber besser eine Notlösung als gar keine...
Vielen Dank, diesen Effekt kannte ich noch gar nicht und bringt den gewünschten Effekt, auch wenn leider nicht optimal schön gelöst
Hab noch keine tests machen können aber als Not-Lösung wäre es bestimmt geeignet falls ich nichts anderes finde.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 29. Mai 2016, 13:15
Vielen Dank, diesen Effekt kannte ich noch gar nicht und bringt den gewünschten Effekt, auch wenn leider nicht optimal schön gelöst
Hab noch keine tests machen können aber als Not-Lösung wäre es bestimmt geeignet falls ich nichts anderes finde.

Freundliche Grüsse
Wenn Du den noch nicht kanntest, hier gibt es eine gute Übersicht, was die einzelnen FMX-Effekte so machen (incl. beispielhafter bildlicher Darstellung):

http://docwiki.embarcadero.com/RADSt..._Image_Effects
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 29. Mai 2016, 13:21
Zitat:
Wenn Du den noch nicht kanntest, hier gibt es eine gute Übersicht, was die einzelnen FMX-Effekte so machen (incl. beispielhafter bildlicher Darstellung):

http://docwiki.embarcadero.com/RADSt..._Image_Effects
Danke dafür, da sieht man doch alle sehr schön dargestellt.
Weisst du gerade züfällig ob es möglich ist diese Effekte auf z.B. ein TBitmap anwenden kann und dann ein TCanvas oder TBitmap zurückbekommen kann? Also ohne das man diese nur zwingend mit Controls anwenden kann.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 29. Mai 2016, 18:57
Weisst du gerade züfällig ob es möglich ist diese Effekte auf z.B. ein TBitmap anwenden kann und dann ein TCanvas oder TBitmap zurückbekommen kann? Also ohne das man diese nur zwingend mit Controls anwenden kann.

Freundliche Grüsse
Ja, "zufällig" habe ich in meinem Firemonkey-Buch im Abschnitt über Grafikprogrammierung hierüber einige Ausführungen gemacht und eine kleine Bespiel-Prozedur für diesen Zweck gezeigt.

Die sieht so aus:
Delphi-Quellcode:
function ImgByFilter(bm: TBitmap; FilterName: string): TBitmap;
var
  bmold: TBitmap;
  Filter: FMX.Filter.TFilter;
begin
  Filter := TFilterManager.FilterByName(FilterName);

  if Filter <> nil then
  begin
    bmold := TBitmap.Create (0,0);
    bmOld.Assign(bm);

    // set input
    Filter.ValuesAsBitmap['Input'] := bmOld;

    // set Target only for transition
    Filter.ValuesAsBitmap['Target'] := bm;
    
    // apply and get result
    Result := Filter.ValuesAsBitmap['output'];

    bmOld.Free;
  end;

end;
Aufruf wäre dann z.B. so:

Delphi-Quellcode:
  MyResultBitmap.assign (ImgByFilter (SourceBitmap, 'Pixelate'));
  // oder, wenn das Original verändert werden soll
  // auch "MyBitmap.assign (ImgByFilter (MyBitmap, 'Pixelate'));"
Hatte darauf hingewiesen, dass es nur ein Beispiel ist, für den direkten Abruf von Parameterlosen Filtern / Effekten.

Wenn Du z.B. noch beim Pixelate-Effekt den Blockcount-Wert berücksichtigen willst, könntest Du die Prozedur mit entsprechenden Parameter-Einträgen ergänzen.

In der Procedure könntest Du vor der Zuweisung dann z.B. das wie folgt ergänzen:
Delphi-Quellcode:
if FilterName = 'Pixelatethen begin
  Filter.ValuesAsFloat['BlockCount'] := BlockCountPara; // z.B. 30
end;
Edit: Ach ja, die Units FMX.Filter und FMX.Filter.Standard müssen manuell eingebunden werden, sonst werden nicht alle Filter gefunden.

Geändert von Harry Stahl (29. Mai 2016 um 19:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 5. Jun 2016, 05:29
Vielen Dank Harry, das ist genau das was ich gemeint habe.
Funktioniert perfekt!

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 5. Jun 2016, 13:42
Prima, das freut mich.

Übrigens, das Bildchen in Beitrag Nr. 11 und der Hinweis, dass es um Spieleentwicklung geht, macht mich ein wenig neugierig:

Mich würde interessieren, verwendest Du da nur FMX-3D-Objekte und Standards oder nutzt Du auch Low Level Routinen z.B. aus der OpenGL Api?
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: DrawBitmap Pixelated mit Firemonkey unter Android/GPUCanvas

  Alt 6. Jun 2016, 03:24
Übrigens, das Bildchen in Beitrag Nr. 11 und der Hinweis, dass es um Spieleentwicklung geht, macht mich ein wenig neugierig:

Mich würde interessieren, verwendest Du da nur FMX-3D-Objekte und Standards oder nutzt Du auch Low Level Routinen z.B. aus der OpenGL Api?
Da werden mich wohl einige wieder mit grossen Augen ansehen und fragen ob ich noch alle Tassen im Schrank habe, aber auf dem Bild sieht man eine ziemlich fortgeschrittene Version von meiner Software-Render-Engine. Habe Z-Buffering und Backface-Culling erfolgreich implementiert und das ganze läuft sogar ziemlich gut auf den Computern und Smartphones die ich testen konnte. Ich bin gerade dabei das ganze nochmal durchzuplanen und neu zu schreiben denn es gibt einiges das ich besser machen könnte vor allem das mit den Texturen.

Ich habe Firemonkey 3D kurz probiert, war jedoch nicht wirklich davon überzeugt um es für ein Spiel zu verwenden... Vielleicht habe ich nicht lange genug damit rumgespielt um die Stärken darin zu sehen falls welche vorhanden sind.

OpenGL würde ich gerne brauchen... Habe ich jedoch schon öfters mal probiert anzupacken, jedoch war es mir immer zu kompliziert und ich habe aufgegeben.
Und wie das mit OpenGL ES aussieht weiss ich nicht, da müsste ich mich noch informieren wie das mit FMX und Cross-Platform-Unterstützung aussieht und was man damit eigentlich alles machen kann. Falls jemand dazu gute Links hat in denen man sich in FMX & OpenGL ES einarbeiten kann würde ich mich sehr freuen!

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz