मेरे पास हेडर है, उदाहरण के लिए #include <GL/gl.h>
। इसमें ओपनजीएल एपीआई फ़ंक्शंस का सबसेट शामिल है।संकलन समय पर वैश्विक दायरे में फ़ंक्शन घोषित किया गया है या नहीं,
static_assert(has_glDrawArraysIndirect::value, "There is no glDrawArraysIndirect");
या और भी बेहतर:: मैं कुछ इस तरह की जरूरत है
PFNGLDRAWARRAYSINSTANCEDPROC ptr_glDrawArraysIndirect = ptr_to_glDrawArraysIndirect::ptr;
कहाँ ptr_to_glDrawArraysIndirect::ptr
glDrawArraysIndirect सूचक को अगर यह एक ठूंठ समारोह stub_glDrawArraysIndirect
अन्यथा करने के लिए परिभाषित या है unrolls।
मेरा लक्ष्य ऑपरेटिंग सिस्टम बहुत विशिष्ट है। कोई भी लिंकर आधारित समाधान (जैसे GetProcAddress
या dlsym
) मेरे लिए काम नहीं करता है, क्योंकि कोई गतिशील लिंकर नहीं है। इससे अधिक, मेरा चालक glXGetProcAdrress
और न ही wglGetProcAddress
प्रदान करता है, मूल रूप से फ़ंक्शन नाम से रन टाइम पर पॉइंटर पूछने का कोई तरीका नहीं है (असल में, मैं इस तरह के तंत्र को कार्यान्वित करना चाहता हूं)।
कोई विचार?
यदि कोई गतिशील लिंकिंग नहीं है, तो यह स्थिर रूप से लिंक होना चाहिए। तो या तो संकलन समय पर कार्य मौजूद है या यह नहीं है। और चूंकि यह एक शीर्षलेख की सामग्री द्वारा निर्धारित किया जाएगा, आप बस उस पर देख सकते हैं। –
@ निकोल बोलस: यही वह है जो मैं लंबे समय से कर रहा था। चूंकि चालक भारी विकास में है, इसलिए मैं अपना कोड अपडेट करने से थक गया हूं। मैं सामान्य रूप से इसे हल करना चाहता हूं। – ivaigult