मैं वर्तमान में डायरेक्टएक्स एपीआई में उपयोग करने की कोशिश कर रहा हूं और मुझे आश्चर्य है कि डायरेक्टएक्स 11 (जैसे टेट्रिस क्लोन के लिए) में स्प्राइट प्रस्तुत करने का सामान्य तरीका क्या है।डायरेक्टएक्स 11 में स्प्राइट्स प्रस्तुत करने के लिए सबसे अच्छा प्रेटिस क्या है?
क्या ID3DX10Sprite
के रूप में एक समान इंटरफ़ेस है, और यदि नहीं, तो DirectX 11 में sprites आकर्षित करने के लिए सामान्य तरीका कौन सा होगा?
संपादित करें:
struct SpriteData
{
float2 position;
float2 size;
float4 color;
};
struct VSOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
cbuffer ScreenSize : register(b0)
{
float2 screenSize;
float2 padding; // cbuffer must have at least 16 bytes
}
StructuredBuffer<SpriteData> spriteData : register(t0);
float2 GetVertexPosition(uint VID)
{
[branch] switch(VID)
{
case 0:
return float2(0, 0);
case 1:
return float2(1, 0);
case 2:
return float2(0, 1);
default:
return float2(1, 1);
}
}
float4 ComputePosition(float2 positionInScreenSpace, float2 size, float2 vertexPosition)
{
float2 origin = float2(-1, 1);
float2 vertexPositionInScreenSpace = positionInScreenSpace + (size * vertexPosition);
return float4(origin.x + (vertexPositionInScreenSpace.x/(screenSize.x/2)), origin.y - (vertexPositionInScreenSpace.y/(screenSize.y/2)), 1, 1);
}
VSOut VShader(uint VID : SV_VertexID, uint SIID : SV_InstanceID)
{
VSOut output;
output.color = spriteData[SIID].color;
output.position = ComputePosition(spriteData[SIID].position, spriteData[SIID].size, GetVertexPosition(VID));
return output;
}
float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
return color;
}
तुम मुझे एक छोटी कोड उदाहरण दे सकता है कृपया? मैं बफर के साथ शुरू करने के लिए संघर्ष। –
डीएक्सएसडीके से सभी डी 3 डी 11 नमूने देखें, और ध्यान से देखें कि वे बफर बनाने, उन्हें बाध्य करने, उन्हें अपडेट करने आदि के लिए कैसे करते हैं। – Stringer
वाह, धन्यवाद। यह वास्तव में मुझे शुरू करने में मदद की :) –