SourceForge logo
SourceForge logo
Menu

Re: [matplotlib-devel] Backends status on transforms branch

From: Michael D. <md...@st...> - 2007年11月09日 17:01:57
Michael Droettboom wrote:
> Christopher Barker wrote:
>> Michael Droettboom wrote:
>>> Wx supports polycurves in its new wxGraphicsContext API (but not the 
>>> wxDC API that mpl uses now). This means a fairly complete rewrite of 
>>> the wx backend,
>> not necessarily. You can create a GraphicsContext from a wx.DC, you may 
>> be able to just add that step for drawing polycurves.
>>
>>> since you 
>>> can no longer draw to an in-memory buffer, but only a true wxClientDC). 
>> you can create a GraphicsContext from a wxMemeoryDC, so yes, you can 
>> draw to a buffer.
> 
> I'm having trouble just getting a wxPython to compile with 
> wxGraphicsContext support (perhaps another argument against using it...)
> 
> I was basing this determination on the wx documentation which clearly 
> states one can only create a wxGraphicsContext from a wxWindowDC. 
> wxMemoryDC inherits from wxDC, not wxWindowDC. I'd be certainly happy to 
> find out that the documentation is incorrect on this point, as it would 
> certainly make the implementation easier.
I did finally get this to work -- thanks for the tip that you can use a 
wxGraphicsContext on a wxMemoryDC.
>> I haev no idea what the impact on performance would be, but in general, 
>> GraphicsContext is slower than DC.
> 
> Particularly, if it works as it appears to by rendering to a Cairo 
> buffer first.
It's really bad, actually. It's entirely possible that I'm doing things 
suboptimally, of course. If someone with more wx.GraphicsContext 
experience were to look at backend_wx.py on the branch, I'd appreciate it.
I particularly wonder if drawing directly to a wx.Window would perform 
better over the network than to a wx.MemoryDC and then blitting that to 
the window (as both trunk and branch do now). Clipping rectangles have 
a major impact also. I did optimize the code so that the clipping state 
changes as infrequently as possible (rather than with each drawing 
operation), but it still has a huge impact. I suspect that 
wx.GraphicsContext treats all clips as clipping paths, rather than the 
more efficient clipping rectangles when it can.
These benchmarks are on the branch on a RHEL4 box.
Local:
WxAgg: 27.5 fps
Wx: 1.8 fps
Wx:	16.8 fps (without clipping)
Network (X11 with compression):
WxAgg:	 2.0 fps
Wx:	 1.7 fps
Wx:	 2.0 fps (without clipping)
Windows and Mac may perform quite differently, given that they use 
completely different rendering code.
Unless some "trick" can be found to make this better, it's hard to 
recommend Wx over WxAgg on the branch.
Cheers,
Mike
-- 
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA

View entire thread

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /