"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > TForm::Handle का उपयोग करके C++ बिल्डर फॉर्म में OpenGL फ़्रेम कैसे प्रस्तुत करें?

TForm::Handle का उपयोग करके C++ बिल्डर फॉर्म में OpenGL फ़्रेम कैसे प्रस्तुत करें?

2024-11-07 को प्रकाशित
ब्राउज़ करें:946

How to Render an OpenGL Frame in a C   Builder Form Using TForm::Handle?

सी बिल्डर में एक ओपनजीएल फ्रेम प्रस्तुत करना

प्रश्न

मैं सी बिल्डर में एक फॉर्म के भीतर एक ओपनजीएल फ्रेम प्रस्तुत करना चाहता हूं, लेकिन मैं ऐसा नहीं कर पा रहा हूं। प्रदान किए गए ओपनजीएल स्टार्टअप कोड का पालन करते समय समस्याओं का सामना करना पड़ रहा है। मैं इसे कैसे हल कर सकता हूं?

उत्तर

TForm::Handle को विंडो हैंडल के रूप में उपयोग करना

इसका समाधान TForm::Handle को विंडो हैंडल के रूप में उपयोग करने में निहित है विंडो हैंडल।

नमूना कार्यान्वयन

यहां सी बिल्डर के पुराने संस्करण से अनुकूलित एक उदाहरण दिया गया है:

int TForm1::ogl_init()
{
    if (ogl_inicialized)
        return 1;
    hdc = GetDC(Form1->Handle); // Get device context
    PIXELFORMATDESCRIPTOR pfd;
    // Set pixel format for the DC
    ...
    // Create current rendering context
    hrc = wglCreateContext(hdc);
    if (hrc == NULL)
    {
        ShowMessage("Could not initialize OpenGL Rendering context !!!");
        ogl_inicialized = 0;
        return 0;
    }
    if (!wglMakeCurrent(hdc, hrc))
    {
        wglDeleteContext(hrc); // Destroy rendering context
        ogl_inicialized = 0;
        return 0;
    }
    // ...
    ogl_inicialized = 1;
    return 1;
}

अतिरिक्त नोट्स

  • आवश्यक हेडर शामिल करें: और
  • रेंडरिंग को ट्रिगर करने के लिए एक टाइमर बनाएं।
  • फॉर्म का आकार बदलने, दोबारा पेंट करने और माउस व्हील इनपुट के लिए इवेंट को संभालें।
  • सुनिश्चित करें कि gl.h प्रोजेक्ट में शामिल है।
  • परामर्श करें अधिक उन्नत ओपनजीएल तकनीकों के लिए लिंक प्रदान किए गए।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3