2012-06-21 30 views
7

नहीं ढूंढ सकते हैं, मुझे नहीं पता कि आप में से कई ने Visual StudioD अनुप्रयोगों को डीबग करने के लिए विजुअल स्टूडियो 2012 की नई उत्कृष्ट सुविधा की कोशिश की है।विजुअल स्टूडियो 2012 पर डिबगिंग शेडर्स, प्रतीक

मैं सफलतापूर्वक मेरे एप्लिकेशन का एक फ्रेम पर कब्जा, तो मैं एक शीर्ष shader के निष्पादन डिबग करने के लिए करना चाहते हैं: enter image description here

मैं किसी दिए गए शीर्ष डिबग करने के लिए हरे रंग त्रिकोण पर क्लिक करें, लेकिन मैं एक "कोई प्रतीक मिल गया मिला "संदेश जो मुझे इसे डीबग करने से रोकता है।

कोई जानता है कि प्रतीकों को ढूंढने के लिए विजुअल स्टूडियो के लिए क्या करना है?

धन्यवाद।

+0

क्या आप इसे उसी मशीन पर डिबग कर रहे हैं जिसने अपना ऐप बनाया है? – reuben

उत्तर

3

msdn से:

यह एक ही समय में एक एप्लिकेशन और उसके शेडर कोड डिबग करने के लिए संभव नहीं है। हालांकि, आप उनके बीच वैकल्पिक हो सकते हैं

यह संभव है कि आप एप्लिकेशन को डिबग कर रहे हों और एक ही समय में शेडर को डीबग करने का प्रयास कर रहे हों।

+0

यह एक अलग मुद्दा है। जब आप ग्राफिक्स डायग्नोस्टिक्स मोड में होते हैं और ग्राफिक्स कैप्चर में डिबगिंग विकल्पों का उपयोग करते हैं, तो डिफ़ॉल्ट रूप से आप पहले से ही डिबगिंग ग्राफिक्स कर रहे हैं। एमएसडीएन बुलेट बिंदु का मतलब है कि आप एचएलएसएल कोड के माध्यम से कदम उठाने के दौरान सीपीयू ब्रेकपॉइंट्स नहीं डाल सकते हैं, और इसके विपरीत। – Camille

3

स्लिम डीएक्स का उपयोग करते समय आप शेडर कंपाइलर को ShaderFlags पास कर सकते हैं। ShaderFlags.Debug पास करने से डीबग प्रतीकों को शामिल किया जा सकता है।

var bytecode = ShaderBytecode.CompileFromFile("shader.fx", "VShader", "vs_4_0", ShaderFlags.Debug, EffectFlags.None) 

उम्मीद है कि यह देशी Direct3D में कुछ समान है।

+0

शार्पडीएक्स (टूलकिट) के लिए कुछ समान है, उदाहरण के लिए, var compiledEffect = (नया EffectCompiler())। CompileFromFile (@ "Content \ MiniTri - Copy.fx", EffectCompilerFlags.Debug | EffectCompilerFlags.SkipOptimization); –

3

आपको डीबग जानकारी के साथ अपने शेडर्स को संकलित करने की आवश्यकता है। और विश्वसनीय रूप से डीबग करने के लिए, आप शायद अनुकूलन को भी अक्षम करना चाहेंगे।

D3DCompile/D3DCompileFromFile: D3DCompile को D3DCOMPILE_DEBUG और D3DCOMPILE_SKIP_OPTIMIZATION झंडे दर्रा कैसे आप अपने shaders संकलन के आधार पर यह दो तरह से हो जाएगा। ध्यान दें कि डी 3 डी संस्करण के आधार पर और क्या आप डी 3 डीएक्स का उपयोग कर रहे हैं, इन झंडे में अलग-अलग उपसर्ग हो सकते हैं।

fxc.exe: संकलन झंडे स्विच समकक्ष हैं। D3DCOMPILE_DEBUG के लिए, fxc पर /Zi पास करें। D3DCOMPILE_SKIP_OPTIMIZATION के लिए, /Od पास करें।

विजुअल स्टूडियो 2012 एम्बेडेड डीबग जानकारी के आधार पर आपके शेडरों के स्रोत को ढूंढने के बारे में काफी स्मार्ट है, लेकिन इसे ऐसा करने में असफल होना चाहिए, इससे आपको उचित फ़ाइल को इंगित करने के लिए संकेत मिलेगा।

1

मैं वीएस2012 में शेडर्स डीबग करने में सक्षम था।

fxc /TTargetProfile /EShaderMainFunctionName /Od /Zi /FdMyShader.pdb MyShaderFile 

कोड में, मैं प्रयोग किया है::

D3DX11CompileFromFile(filename, NULL, NULL, "ShaderMainFunctionName, "TargetProfile", D3D10_SHADER_DEBUG | D3D10_SHADER_SKIP_OPTIMIZATION, ...); 

TargetProfile vs_5_0 या ps_5_0 की तरह कुछ है

मैं इस कमांड लाइन का इस्तेमाल किया।

मुझे पूरा यकीन है कि यह डी 3 डी कॉम्पाइल के साथ काम करेगा।

जब मैं D3D10_SHADER_DEBUG | D3D10_SHADER_SKIP_OPTIMIZATION डालना भूल गया, और मैंने पीडीबी फ़ाइल को मैन्युअल रूप से लोड करने का प्रयास किया, तो यह कहा गया कि प्रतीकों का मिलान नहीं हुआ।

जब मुझे यह सही मिला, तो पिक्सेल इतिहास दृश्य में पिक्सेल शेडर एक नीला लिंक था। जब मैंने इसे क्लिक किया, तो यह स्वचालित रूप से सही फ़ाइल लोड कर दिया और मैं इसे डीबग करना शुरू कर सकता था।

मुझे पीडीबी फ़ाइल जेनरेट करने वाले/इन-कोड समकक्ष नहीं मिला, इसलिए मुझे कमांड लाइन से गुजरना पड़ा।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^