@@ -741,10 +741,12 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
741741 rapidjson::Document doc;
742742 if (doc.Parse (effectsJson.c_str (), effectsJson.size ()).HasParseError ()) {
743743 // 解析 json 失败
744+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 解析 json 失败\n\t 错误码:{}" , doc.GetParseError ()));
744745 return false ;
745746 }
746747
747748 if (!doc.IsArray ()) {
749+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:根元素不为数组" );
748750 return false ;
749751 }
750752
@@ -757,23 +759,26 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
757759
758760 // 不得为空
759761 if (effectsArr.Empty ()) {
762+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:根元素为空" );
760763 return false ;
761764 }
762765
763766 for (const auto & effectJson : effectsArr) {
764767 if (!effectJson.IsObject ()) {
768+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:根数组中存在非法成员" );
765769 return false ;
766770 }
767771
768772 EffectDrawer& effect = _effects.emplace_back ();
769773
770774 auto effectName = effectJson.FindMember (" effect" );
771775 if (effectName == effectJson.MemberEnd () || !effectName->value .IsString ()) {
772- // 未找到 effect 属性或该属性不合法
776+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败: 未找到 effect 属性或该属性的值不合法 " );
773777 return false ;
774778 }
775779
776780 if (!effect.Initialize ((L" effects\\ " + StrUtils::UTF8ToUTF16 (effectName->value .GetString ()) + L" .hlsl" ).c_str ())) {
781+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 初始化效果 {} 失败" , effectName->value .GetString ()));
777782 return false ;
778783 }
779784
@@ -782,6 +787,7 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
782787 auto scaleProp = effectJson.FindMember (" scale" );
783788 if (scaleProp != effectJson.MemberEnd ()) {
784789 if (!scaleProp->value .IsArray ()) {
790+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:非法的 scale 属性" );
785791 return false ;
786792 }
787793
@@ -792,6 +798,7 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
792798
793799 const auto & scale = scaleProp->value .GetArray ();
794800 if (scale.Size () != 2 || !scale[0 ].IsNumber () || !scale[1 ].IsNumber ()) {
801+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:非法的 scale 属性" );
795802 return false ;
796803 }
797804
@@ -804,18 +811,21 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
804811
805812 if (scaleX >= DELTA) {
806813 if (scaleY < DELTA) {
814+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:非法的 scale 属性" );
807815 return false ;
808816 }
809817
810818 outputSize = { std::lroundf (outputSize.cx * scaleX), std::lroundf (outputSize.cy * scaleY) };
811819 } else if (std::abs (scaleX) < DELTA) {
812820 if (std::abs (scaleY) >= DELTA) {
821+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:非法的 scale 属性" );
813822 return false ;
814823 }
815824
816825 outputSize = hostSize;
817826 } else {
818827 if (scaleY > -DELTA) {
828+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:非法的 scale 属性" );
819829 return false ;
820830 }
821831
@@ -832,6 +842,7 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
832842
833843 for (const auto & prop : effectJson.GetObject ()) {
834844 if (!prop.name .IsString ()) {
845+ SPDLOG_LOGGER_ERROR (logger, " 解析 json 失败:非法的效果名" );
835846 return false ;
836847 }
837848
@@ -843,10 +854,12 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
843854 auto type = effect.GetConstantType (name);
844855 if (type == EffectDrawer::ConstantType::Float) {
845856 if (!prop.value .IsNumber ()) {
857+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 解析 json 失败:成员 {} 的类型非法" , name));
846858 return false ;
847859 }
848860
849861 if (!effect.SetConstant (name, prop.value .GetFloat ())) {
862+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 解析 json 失败:成员 {} 的值非法" , name));
850863 return false ;
851864 }
852865 } else if (type == EffectDrawer::ConstantType::Int) {
@@ -857,26 +870,31 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
857870 // bool 值视为 int
858871 value = (int )prop.value .GetBool ();
859872 } else {
873+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 解析 json 失败:成员 {} 的类型非法" , name));
860874 return false ;
861875 }
862876
863877 if (!effect.SetConstant (name, value)) {
878+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 解析 json 失败:成员 {} 的值非法" , name));
864879 return false ;
865880 }
866881 } else {
882+ SPDLOG_LOGGER_ERROR (logger, fmt::format (" 解析 json 失败:非法成员 {}" , name));
867883 return false ;
868884 }
869885 }
870886 }
871887
872888 SIZE& outputSize = texSizes.emplace_back ();
873889 if (!effect.CalcOutputSize (texSizes[texSizes.size () - 2 ], outputSize)) {
890+ SPDLOG_LOGGER_ERROR (logger, " CalcOutputSize 失败" );
874891 return false ;
875892 }
876893 }
877894
878895 if (_effects.size () == 1 ) {
879896 if (!_effects.back ().Build (_effectInput, _backBuffer)) {
897+ SPDLOG_LOGGER_ERROR (logger, " 构建效果失败" );
880898 return false ;
881899 }
882900 } else {
@@ -901,10 +919,12 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
901919 ComPtr<ID3D11Texture2D> outputTex;
902920 HRESULT hr = _d3dDevice->CreateTexture2D (&desc, nullptr , &outputTex);
903921 if (FAILED (hr)) {
922+ SPDLOG_LOGGER_ERROR (logger, MakeComErrorMsg (" CreateTexture2D 失败" , hr));
904923 return false ;
905924 }
906925
907926 if (!_effects[i].Build (curTex, outputTex)) {
927+ SPDLOG_LOGGER_ERROR (logger, " 构建效果失败" );
908928 return false ;
909929 }
910930
@@ -913,6 +933,7 @@ bool Renderer::_ResolveEffectsJson(const std::string& effectsJson, RECT& destRec
913933
914934 // 最后一个效果输出到后缓冲纹理
915935 if (!_effects.back ().Build (curTex, _backBuffer)) {
936+ SPDLOG_LOGGER_ERROR (logger, " 构建效果失败" );
916937 return false ;
917938 }
918939 }
0 commit comments