Exciting Major Update 2 News!
Hey guys! sorry you've not heard anything from me for a while, that's because I've been busy beavering away at the core of Major Update 2
I'm happy to announce that it will be released very soon and support full GPU accelerated rendering using Direct2D (a first for PureBasic!
) on Windows Vista/7/8 and gracefully fall back onto GDI (with some hardware acceleration) on older operating systems! Even runs on Windows 2000 flawlessly!
As I've previously posted, the new image subsystem uses "SuperBuffers" that are 2D bin-packed (like a light-map texture in 3D games) in real-time which gives great benefits: No memory fragmentation, GPU optimized format and hardly any GDI handle usage under both GDI and Direct2D rendering. For instance the OfficeExample in the current version of ProGUI uses around 1300 GDI handles, this will go down to around 20 in the new version!
So immediately any application written using ProGUI will outperform any competing application on both resource usage and raw speed.
I've created a tech demo for you guys to test, you can download it here: http://www.progui.co.uk/downloads/TechDemo.zip
And here are some screen shots:
On my Nvidia GT 420M laptop the Direct2D driver can easily handle 3,000 balls at 60 fps, let me know how it runs on your systems
The SuperBuffer housekeeping thread also runs regularly in the background on a short loop for demonstration purposes so you can see how it all works when you click on the "View SuperBuffer Debug UI" button. The tech demo also creates and loads in a bunch of test images which can be seen in the memory dump (as icons and red/green rectangles).
Currently the new Img API (which is directly available to the user) supports the following commands (still some more to write, such as gradients and text but won't take long at all):
LoadImg(Path.s, Width.l, Height.l, Flags.i)
ImgBlit(srcImg, x, y, width, height, dstImg, dx, dy)
ImgDraw(srcImg, x, y, width, height, dstImg, dx, dy, dwidth, dheight, alpha)
ImgFillRect(Img, *area.RECT, color)
ImgFillBox(Img, x, y, width, height, color)
ImgBorder(Img, Border, Xpos, Ypos, Width, Height, Alpha.a)
ImgGrab(Img, x, y, width, height)
ImgBlend(Image.i, AlphaChannel.f, Contrast.f, Brightness.f, Color.l, BlendAmount.f, Flags)
ImgHueBlend(Image.i, AlphaChannel.f, HueColor.l, Saturation.f, Lightness.f, BlendColor.l, BlendAmount.f, Flags)
MaskCombine(dstMask, srcMask1, srcMask2, CombineMode)
MaskOffset(Mask, x, y)
CreateBorder(Img, ImgMask, *BorderRect.RECT)
BorderMask(Border, Width, Height)
The whole system has been designed modularly and allows new drivers to be added with ease making the eventual transition of ProGUI to cross-platform fairly straight forward. It's also worth mentioning that Windows 8 Metro Apps will be possible with ProGUI in the future due to the Direct2D driver and of course DirectX interoperability
So that's it guys, I've just got to finish wrapping up the Img API and then replace the guts of ProGUI to use it (which will only take a few days). The price for Major Update 2 will be going up a little and existing Standard and Gold users will have to upgrade however this is the first paid update in about 30 previously free updates
so it's probably worth while upgrading to Platinum while the price is cheap in order to take advantage of all future updates for free. Also, Major Update 2 will start at Version 1.5x allowing the existing V1.3x space for bug fixes if any more are found (a V1.37 will be released just before Major Update 2 fixing the last 2 known bugs).
Thanks guys and let me know how the tech demo runs!