What happened to the Direct2D Renderer?

I want to speed up drawing on Windows, the OpenGL-Context in Plugins seems to be to unstable (escpacially on windows, driver issues etc.)

I looks like the Direct2-Context was never finished?

 

Actually, I had completely forgotten about its existence until recently, but a couple of weeks ago I fired it up and was surprised to find that it seems to work perfectly. Whether or not it's faster is something I'd be interested to hear about if you try it.

When i define JUCE_DIRECT2D i got a lot of different errors while compiling the JUCE demo, did i miss something?

So windows uses still use the software renderer per default, so no GPU involved for graphics processing?

 


1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(128): warning C4996: 'juce::Rectangle<ValueType>::transformed': was declared deprecated
1>          with
1>          [
1>              ValueType=float
1>          ] (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\geometry\juce_rectangle.h(908) : see declaration of 'juce::Rectangle<ValueType>::transformed'
1>          with
1>          [
1>              ValueType=float
1>          ]
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(134): warning C4996: 'juce::Rectangle<ValueType>::transformed': was declared deprecated
1>          with
1>          [
1>              ValueType=float
1>          ] (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\geometry\juce_rectangle.h(908) : see declaration of 'juce::Rectangle<ValueType>::transformed'
1>          with
1>          [
1>              ValueType=float
1>          ]
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(151): error C2146: syntax error : missing ';' before identifier 'states' (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(290): error C2660: 'juce::DirectWriteTypeLayout::drawToD2DContext' : function does not take 6 arguments (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(534): error C2248: 'juce::WindowsDirectWriteTypeface::unitsToHeightScaleFactor' : cannot access private member declared in class 'juce::WindowsDirectWriteTypeface' (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_directwritetypeface.cpp(269) : see declaration of 'juce::WindowsDirectWriteTypeface::unitsToHeightScaleFactor'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_directwritetypeface.cpp(136) : see declaration of 'juce::WindowsDirectWriteTypeface'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(534): error C2064: term does not evaluate to a function taking 0 arguments (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(725): error C2660: 'juce::Direct2DLowLevelGraphicsContext::pointTransformed' : function does not take 2 arguments (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(726): error C2660: 'juce::Direct2DLowLevelGraphicsContext::pointTransformed' : function does not take 2 arguments (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(727): error C2660: 'juce::Direct2DLowLevelGraphicsContext::pointTransformed' : function does not take 2 arguments (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(728): error C2660: 'juce::Direct2DLowLevelGraphicsContext::pointTransformed' : function does not take 2 arguments (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(735): error C2227: left of '->d2dFactory' must point to class/struct/union/generic type (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(735): error C2227: left of '->CreatePathGeometry' must point to class/struct/union/generic type (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(813): error C2227: left of '->d2dFactory' must point to class/struct/union/generic type (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_graphics\native\juce_win32_direct2dgraphicscontext.cpp(813): error C2227: left of '->CreatePathGeometry' must point to class/struct/union/generic type (..\..\..\..\modules\juce_graphics\juce_graphics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1139): error C2065: 'Direct2DLowLevelGraphicsContext' : undeclared identifier (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1139): error C2923: 'juce::ScopedPointer' : 'Direct2DLowLevelGraphicsContext' is not a valid template type argument for parameter 'ObjectType' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(569): error C2512: 'juce::ScopedPointer' : no appropriate default constructor available (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(606): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(111): could be 'juce::ScopedPointer<ObjectType> &juce::ScopedPointer<ObjectType>::operator =(juce::ScopedPointer<ObjectType> &)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(135): or       'juce::ScopedPointer<ObjectType> &juce::ScopedPointer<ObjectType>::operator =(ObjectType *const )'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(154): or       'juce::ScopedPointer<ObjectType> &juce::ScopedPointer<ObjectType>::operator =(juce::ScopedPointer<ObjectType> &&) throw()'
1>          while trying to match the argument list '(juce::ScopedPointer, nullptr)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(606): error C2582: 'operator =' function is unavailable in 'juce::ScopedPointer' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(649): error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1344): could be 'bool juce::operator !=(const juce::String &,const juce::String &) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1346): or       'bool juce::operator !=(const juce::String &,const char *) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1348): or       'bool juce::operator !=(const juce::String &,const wchar_t *) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1350): or       'bool juce::operator !=(const juce::String &,const juce::CharPointer_UTF8) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1352): or       'bool juce::operator !=(const juce::String &,const juce::CharPointer_UTF16) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1354): or       'bool juce::operator !=(const juce::String &,const juce::CharPointer_UTF32) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_stringref.h(132): or       'bool juce::operator !=(const juce::String &,juce::StringRef) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(319): or       'bool juce::operator !=(const juce::var &,const juce::var &) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(321): or       'bool juce::operator !=(const juce::var &,const juce::String &)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(323): or       'bool juce::operator !=(const juce::var &,const char *)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\time\juce_relativetime.h(166): or       'bool juce::operator !=(juce::RelativeTime,juce::RelativeTime) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\time\juce_time.h(396): or       'bool juce::operator !=(juce::Time,juce::Time) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\components\juce_desktop.cpp(327): or       'bool juce::operator !=(const juce::Desktop::Displays::Display &,const juce::Desktop::Displays::Display &) throw()'
1>          while trying to match the argument list '(juce::ScopedPointer, nullptr)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(650): error C2678: binary '->' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(173): could be 'ObjectType *juce::ScopedPointer<ObjectType>::operator ->(void) throw() const'
1>          while trying to match the argument list '(juce::ScopedPointer)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(650): error C2039: 'resized' : is not a member of 'juce::ScopedPointer' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(71) : see declaration of 'juce::ScopedPointer'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1504): error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1344): could be 'bool juce::operator !=(const juce::String &,const juce::String &) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1346): or       'bool juce::operator !=(const juce::String &,const char *) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1348): or       'bool juce::operator !=(const juce::String &,const wchar_t *) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1350): or       'bool juce::operator !=(const juce::String &,const juce::CharPointer_UTF8) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1352): or       'bool juce::operator !=(const juce::String &,const juce::CharPointer_UTF16) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1354): or       'bool juce::operator !=(const juce::String &,const juce::CharPointer_UTF32) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_stringref.h(132): or       'bool juce::operator !=(const juce::String &,juce::StringRef) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(319): or       'bool juce::operator !=(const juce::var &,const juce::var &) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(321): or       'bool juce::operator !=(const juce::var &,const juce::String &)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(323): or       'bool juce::operator !=(const juce::var &,const char *)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\time\juce_relativetime.h(166): or       'bool juce::operator !=(juce::RelativeTime,juce::RelativeTime) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\time\juce_time.h(396): or       'bool juce::operator !=(juce::Time,juce::Time) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\components\juce_desktop.cpp(327): or       'bool juce::operator !=(const juce::Desktop::Displays::Display &,const juce::Desktop::Displays::Display &) throw()'
1>          while trying to match the argument list '(juce::ScopedPointer, nullptr)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1510): error C2678: binary '->' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(173): could be 'ObjectType *juce::ScopedPointer<ObjectType>::operator ->(void) throw() const'
1>          while trying to match the argument list '(juce::ScopedPointer)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1510): error C2039: 'start' : is not a member of 'juce::ScopedPointer' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(71) : see declaration of 'juce::ScopedPointer'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1511): error C2678: binary '->' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(173): could be 'ObjectType *juce::ScopedPointer<ObjectType>::operator ->(void) throw() const'
1>          while trying to match the argument list '(juce::ScopedPointer)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1511): error C2039: 'clipToRectangle' : is not a member of 'juce::ScopedPointer' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(71) : see declaration of 'juce::ScopedPointer'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1512): error C2678: binary '*' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(170): could be 'ObjectType &juce::ScopedPointer<ObjectType>::operator *(void) throw() const'
1>          while trying to match the argument list '(juce::ScopedPointer)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1513): error C2678: binary '->' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(173): could be 'ObjectType *juce::ScopedPointer<ObjectType>::operator ->(void) throw() const'
1>          while trying to match the argument list '(juce::ScopedPointer)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1513): error C2039: 'end' : is not a member of 'juce::ScopedPointer' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(71) : see declaration of 'juce::ScopedPointer'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1520): error C2065: 'rgn' : undeclared identifier (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1536): error C2065: 'rgn' : undeclared identifier (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1539): error C2065: 'rgn' : undeclared identifier (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1677): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(111): could be 'juce::ScopedPointer<ObjectType> &juce::ScopedPointer<ObjectType>::operator =(juce::ScopedPointer<ObjectType> &)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(135): or       'juce::ScopedPointer<ObjectType> &juce::ScopedPointer<ObjectType>::operator =(ObjectType *const )'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\memory\juce_scopedpointer.h(154): or       'juce::ScopedPointer<ObjectType> &juce::ScopedPointer<ObjectType>::operator =(juce::ScopedPointer<ObjectType> &&) throw()'
1>          while trying to match the argument list '(juce::ScopedPointer, int)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1677): error C2582: 'operator =' function is unavailable in 'juce::ScopedPointer' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1678): error C2678: binary '==' : no operator found which takes a left-hand operand of type 'juce::ScopedPointer' (or there is no acceptable conversion) (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1331): could be 'bool juce::operator ==(const juce::String &,const juce::String &) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1333): or       'bool juce::operator ==(const juce::String &,const char *) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1335): or       'bool juce::operator ==(const juce::String &,const wchar_t *) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1337): or       'bool juce::operator ==(const juce::String &,const juce::CharPointer_UTF8) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1339): or       'bool juce::operator ==(const juce::String &,const juce::CharPointer_UTF16) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_string.h(1341): or       'bool juce::operator ==(const juce::String &,const juce::CharPointer_UTF32) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\text\juce_stringref.h(130): or       'bool juce::operator ==(const juce::String &,juce::StringRef) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(317): or       'bool juce::operator ==(const juce::var &,const juce::var &) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(320): or       'bool juce::operator ==(const juce::var &,const juce::String &)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\containers\juce_variant.h(322): or       'bool juce::operator ==(const juce::var &,const char *)'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\time\juce_relativetime.h(164): or       'bool juce::operator ==(juce::RelativeTime,juce::RelativeTime) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_core\time\juce_time.h(394): or       'bool juce::operator ==(juce::Time,juce::Time) throw()'
1>          c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\components\juce_desktop.cpp(318): or       'bool juce::operator ==(const juce::Desktop::Displays::Display &,const juce::Desktop::Displays::Display &) throw()'
1>          while trying to match the argument list '(juce::ScopedPointer, int)'
1>c:\users\chkn\documents\cpp_projects\jucequake\jucelatest\modules\juce_gui_basics\native\juce_win32_windowing.cpp(1679): error C2061: syntax error : identifier 'Direct2DLowLevelGraphicsContext' (..\..\..\..\modules\juce_gui_basics\juce_gui_basics.cpp)
 

 

Hmm, ok, maybe I was mistaken about that. Will look again when I get chance.

But yes, by default we're still using the software renderer.

+1 for enabling Direct2D rendering!

I'd love to see a proper Direct2D renderer. As it's been said, the GL renderer isn't without its issues, especially when it comes to the message thread locking when mixing JUCE drawing with GL drawing which honestly makes it unusable for general 2D GUI drawing as far as I'm aware because of all the wasted cycles. It's weird because it get significantly higher framerates but way more CPU usage.

The performance of the CoreGraphics rendering under OSX is awesome, but the speed of the software rendering under Windows once components start needing continous repainting is terrible.

2 Likes

In the thread linked below, @jules has stated that they are thinking about the features of JUCE v5.

What about adding the completion of the Direct2D renderer to the list?!?

The fact that a library so mature and good at cross platform and GUI still does not support it looks so silly to me… the more because it has been repeatedly mentioned in the forum that there is already something half finished for that.

3 Likes

I’m wondering if it may be skipped over in favor of Vulkan/Metal support:

In addition to having a LowLevelRender implementation for JUCE components I’m dying for a barebones Vulkan context component in JUCE to render in, and the supposed increases in performance from these new APIs sounds promising. Of course, this is back in August 2015 and we haven’t heard anything since, so who knows where it’s gone…

Unfortunately it doesn’t seem like JUCE’s software rendering performance has scaled extremely well with HiDPI displays (which is unavoidable) - let’s hope some hardware acceleration can fix that.

An news about this, now that JUCE 5 has been released?

The software renderer on Windows is still quite slow in comparison with stuff on macOS

What’s the status on this? There was a fat commit back in June that looked promising, but as far as I can tell the Direct2D renderer still isn’t enabled by default on supported platforms…

It’s still on our todo list, but we’re not working on it at the moment. As it currently stands it’s an incomplete implementation.

2 Likes

Is this something that is being currently worked on ?
Or maybe have you moved directly to a Vulkan based stuff ?

Thanks !

3 Likes

Are there some specific problems with implementing the Direct2D renderer in JUCE?
I found that on recent hardware and Window 10 (hardware tessellation) Direct2D is extremely fast (~0 CPU and pretty moderate GPU strain) and I supose its also very reliable. At least it should be more reliable then the current OpenGL implementation on Windows. Why is this implementation not finished? I think it should be easy to do, but please correct me if I’m wrong. Thx

4 Likes