मेरे पास एक शेडर है जिसे चौड़ाई, ऊंचाई, आप ऑफ़सेट और वी ऑफ़सेट और एक रंग स्वीकार करना चाहिए।

हस्ताक्षर इस तरह दिखता है:

vertex VertexOut texturedVertex(constant packed_float3* pPosition   [[ buffer(0) ]],
                            constant packed_float2*        pTexCoords  [[ buffer(2) ]],
                            constant float&         pWidth      [[buffer(4)]],
                            constant float&         pHeight     [[buffer(5)]],
                            uint                    vid         [[ vertex_id ]],
                            constant packed_float4&        pColor      [[buffer(3)]])

यह बदसूरत दिखता है और स्केलेबल बिल्कुल नहीं है। क्या ओपनजीएल की वर्दी की तरह कुछ मूल्यों को अलग से घोषित करना संभव है?

0
Raildex 3 जिंदा 2020, 15:24

1 उत्तर

सबसे बढ़िया उत्तर

Argument Buffers - एक तर्क बफर संसाधनों के एक समूह का प्रतिनिधित्व करता है जिसे सामूहिक रूप से ग्राफिक्स या कंप्यूट फ़ंक्शन के तर्क के रूप में असाइन किया जा सकता है। आप CPU ओवरहेड को कम करने, संसाधन प्रबंधन को सरल बनाने और GPU-संचालित पाइपलाइनों को लागू करने के लिए तर्क बफ़र्स का उपयोग करते हैं।

निम्न उदाहरण My_AB नामक एक तर्क बफर संरचना दिखाता है जो my_kernel नामक कर्नेल फ़ंक्शन के लिए संसाधन निर्दिष्ट करता है:

struct My_AB {
    texture2d<float, access::write> a;
    depth2d<float> b;
    sampler c;
    texture2d<float> d;
    device float4* e;
    texture2d<float> f;
    int g;
};
kernel void my_kernel(constant My_AB & my_AB [[buffer(0)]])
{ ... }
1
0xBFE1A8 3 जिंदा 2020, 14:28