Software > Software (16-/32-Bit)

NetSurf GEM - erste Bilder

<< < (3/8) > >>

m0n0:
Hallo,

also erstmal: der Ausdruck direkter renderer war etwas ungluecklich
gewaehlt... ich meinte damit halt in ein offscreen bitmap zeichnen
und bei bedarf den Inhalt des offscreen bitmaps in den bildschirmspeicher
kopieren. VDI ist eigentlich direkter, da es ja direkt in den Bildschirm schreibt,
ohne ein Offscreen bitmap zu nutzen...

zu vro_cpyfm:
Prinzipiell wuerde das natuerlich gehen, aber das bedeutet das ich eine Liste der Bereiche
die gerendert wurden verwalten muesste, denn es werden nur die Bereiche gerendert die
Sichtbar sind. Man kann nicht davon ausgehen das das Fenster
beim Rendern komplett sichtbar war..., nach dem Rendern muessten diese Bereiche dann
gespeichert werden, was zusaetzlichen Zeit-Aufwand durch malloc bedeutet... 
Diese Liste koennte man dann beim Sichtbar werden eines Bereiches
abarbeiten und schauen ob der neu Sichtbar gewordene Bereich schon in der Liste
vorhanden ist... Fuer mich klingt das nach vielen Dingen die
Dabei schief gehen koennen und nach Artefakten, letzlich ist
es mir zu viel Aufwand, da es ja eh nur fuer den VDI renderer waere -
mit einem eigenen Offscreen renderer der eh die Komplette page
rendern kann, ohne Ruecksicht auf momentan Sichtbare Bereiche,
entfaellt das Problem ja eh...

Gruß,
m

HelmutK:

--- Zitat von: m0n0 am Sa 16.10.2010, 08:35:45 ---Hallo,

also erstmal: der Ausdruck direkter renderer war etwas ungluecklich
gewaehlt... ich meinte damit halt in ein offscreen bitmap zeichnen
und bei bedarf den Inhalt des offscreen bitmaps in den bildschirmspeicher
kopieren. VDI ist eigentlich direkter, da es ja direkt in den Bildschirm schreibt,
ohne ein Offscreen bitmap zu nutzen...

zu vro_cpyfm:
Prinzipiell wuerde das natuerlich gehen, aber das bedeutet das ich eine Liste der Bereiche
die gerendert wurden verwalten muesste, denn es werden nur die Bereiche gerendert die
Sichtbar sind. Man kann nicht davon ausgehen das das Fenster
beim Rendern komplett sichtbar war..., nach dem Rendern muessten diese Bereiche dann
gespeichert werden, was zusaetzlichen Zeit-Aufwand durch malloc bedeutet... 
Diese Liste koennte man dann beim Sichtbar werden eines Bereiches
abarbeiten und schauen ob der neu Sichtbar gewordene Bereich schon in der Liste
vorhanden ist... Fuer mich klingt das nach vielen Dingen die
Dabei schief gehen koennen und nach Artefakten, letzlich ist
es mir zu viel Aufwand, da es ja eh nur fuer den VDI renderer waere -
mit einem eigenen Offscreen renderer der eh die Komplette page
rendern kann, ohne Ruecksicht auf momentan Sichtbare Bereiche,
entfaellt das Problem ja eh...

Gruß,
m

--- Ende Zitat ---

Wie gesagt: Wenn der verdeckte Bereich noch nicht gezeichnet wurde, muss er natürlich beim Freiwerden neu gezeichnet werden.

Nach Deiner Beschreibung brauchst Du aber sowieso für jedes Fenster so eine offscreen-bitmap. Warum nicht für jedes Fenster einen screenbuffer anlegen, und die Rechtecke dann entsprechend blitten. Solange der Inhalt sich nicht zwischenzeitlich geändert hat, sollte das funktionieren. Falls doch, wird es natürlich kompliziert.

Ich denke, in den meisten Fällen ist das Fenster, in das gezeichnet wird, oben, so dass auch alles dargestellt wird. Falls etwas verdeckt ist, kann man sich das merken, und entweder die verdeckten Bereiche in einer Liste speichern oder das ganze Fenster immer neu malen.

Wie sieht das zB aus, wenn unter XaAES das drop-down-menu über einem netsurf-Fenster ist? Dann müssten die jeweils freigewordenen Bereiche ja jedesmal neu gezeichnet werden, oder? Dafür könnte man immerhin einen screen-buffer für das ganze Programm vorsehen, auch für den Fall, dass ein Fenster von einem anderen Programm etwas von netsurf freigibt.

Hab ich jedenfalls mal so gemacht: Einen globalen buffer, und jeweils einen für die langsamen Fenster (immer nur nur die letzten 3 um Speicher zu sparen). Dann beim blitten entweder über Rechteckliste oder falls das bremst (denke nicht), diese selber speichern

Nach jedem redraw wird der gezeichnete Bereich in beide buffer kopiert. Läuft auch auf dem TT schnell genug.

Das ist nicht allzu viel Aufwand, aber wenn Du sowieso offscreen-bitmaps verwenden willst, dann wird das evtl. später überflüssig.

Arthur:
Ich habe es bei m0n0 genau so gedacht wie Du es gerade erklärt hast. Sonst müsst ja jedes mal ein kompletter Redraw gemacht werden und dann gute nacht.

m0n0:
Hallo,

natürlich muss beim Frei werden von Fensterhbereichen kein kompletter Redraw gemacht werden... sondernd nur der Bereich der Frei geworden ist... habe mich etwas falsch ausgedrückt, die wird natürlich nur einmal gerendert ( oder halt öffters wenn DHTML mit im Spiel ist), und entsprechende Bereiche aus dem Rendering Ergebniss können dann neu gezeichnet werden.


--- Zitat ---Wie sieht das zB aus, wenn unter XaAES das drop-down-menu über einem netsurf-Fenster ist? Dann müssten die jeweils freigewordenen Bereiche ja jedesmal neu gezeichnet werden, oder? Dafür könnte man immerhin einen screen-buffer für das ganze Programm vorsehen, auch für den Fall, dass ein Fenster von einem anderen Programm etwas von netsurf freigibt.

Hab ich jedenfalls mal so gemacht: Einen globalen buffer, und jeweils einen für die langsamen Fenster (immer nur nur die letzten 3 um Speicher zu sparen). Dann beim blitten entweder über Rechteckliste oder falls das bremst (denke nicht), diese selber speichern

--- Ende Zitat ---

Ja, OK, daran habe ich noch nicht so genau gedacht... würde ja auch durchaus Sinn machen....

HelmutK:

--- Zitat von: m0n0 am Sa 16.10.2010, 16:15:23 ---
--- Zitat ---Wie sieht das zB aus, wenn unter XaAES das drop-down-menu über einem netsurf-Fenster ist? Dann müssten die jeweils freigewordenen Bereiche ja jedesmal neu gezeichnet werden, oder? Dafür könnte man immerhin einen screen-buffer für das ganze Programm vorsehen, auch für den Fall, dass ein Fenster von einem anderen Programm etwas von netsurf freigibt.

Hab ich jedenfalls mal so gemacht: Einen globalen buffer, und jeweils einen für die langsamen Fenster (immer nur nur die letzten 3 um Speicher zu sparen). Dann beim blitten entweder über Rechteckliste oder falls das bremst (denke nicht), diese selber speichern

--- Ende Zitat ---

Ja, OK, daran habe ich noch nicht so genau gedacht... würde ja auch durchaus Sinn machen....



--- Ende Zitat ---

Diese Funktion übernimmt ja normalerweise das AES, nur XaAES halt nicht.

Letztlich ist wahrscheinlich offscreen-bitmap die beste Lösung, man muss halt vorher wissen, ob's nicht auch einfacher geht.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln