View Issue Details

IDProjectCategoryView StatusLast Update
0000740NoesisGUIUnity3Dpublic2019-03-14 20:20
ReporternokolaAssigned Tojsantos 
Status closedResolutionfixed 
Product Version1.2.5f8 
Target Version2.2.0Fixed in Version2.2.0b6 
Summary0000740: No redraw region support
DescriptionThe complete screen seems to redraw every time on any XAML change, every frame. Adding redraw regions (like other XAML frameworks) to only redraw changes is a must-have for mobile. I'm making a painting app using Noesis GUI, and that's likely to take most of the battery life on Android.
Steps To ReproduceRun any XAML
TagsNo tags attached.


related to 0000589 resolvedjsantos Redraw render texture with API call instead of each frame 




2016-01-15 00:58

reporter   ~0003454

More info: I currently have this setup for painting in Unity:
1. Screen texture (e.g. 1280x720), Image texture (e.g. 2000x2000), noesis renderer to screen
2. A camera that never deletes the screen, I only redraw changes

On paint:
1. Calculate dirty rects (the region painted by the user)
2. Update ImageTexture
3. DrawOnScreen(ImageTexture, dirty rects) -> redraws only the changes
4. DrawNoesisXamlThatIsCurrentlyVisible()

The issue is that on Step 4, noesis ends up drawing overlaying text, especially when I have animations. That's because my camera never deletes the scene, and only draws the changes. I'd have to add a step 3.5 and change step 4:
3.5. noesisDirtyRects = GetNoesisDirtyRectsThisFrame()
4. If (noesisDirtyRects is not empty) { DrawOnScreen(ImageTexture, noesisDirtyRects); DrawNoesisXamlThatIsCurrentlyVisible(noesisDirtyRects); }

Without dirty rects, I'd have to redraw my texture on every frame and the XAML on every frame, which will impact battery life significantly.

Another possible simplification (not optimal but much better) could be:
4. If Noesis_HasChangedSinceLastFrame() { RedrawImageTexture(); DrawNoesisXamlThatIsCurrentlyVisible() }

Is there a better solution that I can currently use without having to redraw the whole screen twice on every frame?


2016-01-15 13:37

manager   ~0003457

I answered in the forums, let follow the discussion there so the rest of member can read about it and whenever we have a clear conclusion you can track it here.

Thanks a lot for your feedback!


2016-01-16 22:57

reporter   ~0003460

Agreed - will post in the forum! Thank you for your prompt responses - they are very helpful!


2019-02-19 10:44

manager   ~0005447

So, for now we implemented a solution with no dirty regions. Just painting everything or nothing. NoesisView now expose a method 'NeedsRendering' for that purpose.


2019-02-19 16:24

reporter   ~0005448

thanks, this is *great* news. In the middle of development with 2.1 right now, however will try 2.2 later this week in Unity.


2019-03-14 16:54

manager   ~0005531

I am going to close this. If you find issues please create a new ticket.

Thanks for your feedback!

Issue History

Date Modified Username Field Change
2015-10-22 01:34 nokola New Issue
2015-10-29 11:04 sfernandez Assigned To => sfernandez
2015-10-29 11:04 sfernandez Status new => assigned
2015-10-29 11:26 sfernandez Relationship added related to 0000589
2015-10-29 15:15 jsantos Assigned To sfernandez => jsantos
2016-01-15 00:58 nokola Note Added: 0003454
2016-01-15 13:37 jsantos Note Added: 0003457
2016-01-16 22:57 nokola Note Added: 0003460
2018-11-01 02:14 jsantos View Status public => private
2019-02-16 23:56 jsantos Target Version => 2.2.0
2019-02-16 23:56 jsantos View Status private => public
2019-02-16 23:56 jsantos Platform => Any
2019-02-19 10:44 jsantos Note Added: 0005447
2019-02-19 10:44 jsantos Status assigned => feedback
2019-02-19 16:24 nokola Note Added: 0005448
2019-02-19 16:24 nokola Status feedback => assigned
2019-03-14 16:54 jsantos Status assigned => resolved
2019-03-14 16:54 jsantos Resolution open => fixed
2019-03-14 16:54 jsantos Fixed in Version => 2.2.0b6
2019-03-14 16:54 jsantos Note Added: 0005531
2019-03-14 20:20 nokola Status resolved => closed