मैं अपने गेम इंजन के Directx11 इंस्टेंस को लागू करने पर काम कर रहा हूं और मैं 3D गेम प्रोग्रामिंग में नौसिखिया हूं।

मैं DirectX11 ग्राफिक्स पाइपलाइन और शेडर्स के बारे में कुछ जानता हूं और वर्टेक्स बफर, इनपुट लेआउट इत्यादि क्या हैं।

एपीआई में से किसी एक को देखते समय कोड कुछ ऐसा होता है:

glBindVertexArray(current_vao);
glBindBuffer(GL_ARRAY_BUFFER, current_vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vector3) * Vertices.size(), &Vertices.front(), GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vector3), reinterpret_cast<void*>(0));
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glDisableVertexAttribArray(3);
glDisableVertexAttribArray(4);
glDisableVertexAttribArray(5);
glDisableVertexAttribArray(6);
glBindBuffer(GL_ARRAY_BUFFER, 0);

यह VAO और VBO DirectX11 के बराबर क्या है? यह कोड वास्तव में क्या कर रहा है?

1
Monku 15 नवम्बर 2018, 00:44

1 उत्तर

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

एक "वीबीओ" सिर्फ एक शीर्ष बफर है, जो डायरेक्टएक्स 11 में एक ID3D11Buffer है जिसमें D3D11_BIND_VERTEX_BUFFER का बाइंड फ्लैग होता है जिसमें वर्टेक्स डेटा होता है।

ओपनजीएल "वर्टेक्स एट्रीब्यूट एरे" के बराबर कोई प्रत्यक्ष नहीं है। DirectX 11 में, आप समान राज्य सेटिंग्स (a.k.a material विशेषता) के प्रत्येक समूह के लिए बस एक अलग Draw सबमिट करते हैं।

यदि आप DirectX 11 के लिए पूर्ण रूप से नए हैं, तो आप [DirectX टूल किट ट्यूटोरियलके माध्यम से काम करने पर विचार कर सकते हैं।.

1
Chuck Walbourn 14 नवम्बर 2018, 22:05