में एक पिक्सेल शेडर के माध्यम से रंग पास करना मेरे पास एक पिक्सेल शेडर है जो केवल इनपुट रंग को पास करना चाहिए, लेकिन इसके बजाय मुझे निरंतर परिणाम मिल रहा है। मुझे लगता है कि मेरा वाक्यविन्यास समस्या हो सकती है। यहाँ शेडर है:एचएलएसएल
struct PixelShaderInput
{
float3 color : COLOR;
};
struct PixelShaderOutput
{
float4 color : SV_TARGET0;
};
PixelShaderOutput main(PixelShaderInput input)
{
PixelShaderOutput output;
output.color.rgba = float4(input.color, 1.0f); // input.color is 0.5, 0.5, 0.5; output is black
// output.color.rgba = float4(0.5f, 0.5f, 0.5f, 1); // output is gray
return output;
}
परीक्षण के लिए, मैं शीर्ष शेडर कि pipleline 0.5, 0.5, 0.5 का एक रंग पैरामीटर पारित करने में इस से पहले आती है की है। विजुअलस्टूडियो में पिक्सेल शेडर के माध्यम से कदम, input.color के सही मान हैं, और इन्हें output.color पर सही तरीके से assing किया जा रहा है। हालांकि जब प्रस्तुत किया जाता है, तो इस शेडर का उपयोग करने वाले शिखर सभी काले होते हैं।
const D3D11_INPUT_ELEMENT_DESC vertexDesc[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
मुझे यकीन है कि अगर यह महत्वपूर्ण है कि शीर्ष शेडर रंग लेता है के रूप में आरजीबी एक ही आउटपुट, लेकिन पिक्सेल शेडर आउटपुट RGBA नहीं कर रहा हूँ:
यहाँ शीर्ष शेडर तत्व वर्णन है। अल्फा परत कम से कम सही ढंग से काम कर रही है।
यदि मैं पहले असाइनमेंट को टिप्पणी करता हूं, इनपुट इनपुटर का उपयोग करता हूं, और स्पष्ट असाइनमेंट के साथ अन्य असाइनमेंट को असम्बद्ध करता हूं, तो प्रस्तुत किए गए पिक्सेल ग्रे (अपेक्षित) होते हैं।
क्या मैं यहां गलत कर रहा हूं पर कोई विचार?
मैं अनुकूलक अक्षम और डीबग जानकारी सक्षम के साथ शेडर मॉडल 4 स्तर 9_1 का उपयोग कर रहा हूं।
धन्यवाद यति जैसे कुछ करें। मेरे पास फ्लोट 4 प्रारंभिकता है जो मैंने डायरेक्ट 3 डी नमूने से सीधे लिया है जो वीएस2012 के साथ जहाजों। मैंने उस व्यक्ति को बदलने की कोशिश की जिसका आप उल्लेख करते हैं लेकिन मुझे एक ही परिणाम मिल रहा है। –
मैंने अपने कोड को संशोधित किया है कि कशेरुक घोषणा में अब रंग DXGI_FORMAT_R32G32B32A32_FLOAT के रूप में है, और मैंने shaters को फ्लोट 3 के बजाय फ्लोट 4 लेने और वापस करने के लिए संशोधित किया है, लेकिन आउटपुट में कोई बदलाव नहीं है। –
फ्लोट 4 (फ्लोट 3, 1.0 एफ); सही एचएसएलएस वाक्यविन्यास है, लेकिन मुझे उस पर msdn दस्तावेज़ नहीं मिल रहा है। – Stardidi