/ / ओपनजीएल 2.1+ में एफबीओ गहराई बनावट - opengl, glsl

OpenGL 2.1+ में एफबीओ गहराई बनावट - opengl, glsl

मैं "जीएलएसएल का उपयोग करके शडाउन बनाने के लिए सीख रहा हूं लेकिन मुझे यहां कुछ परेशानी है:
1. जीएलएसएल 3.3 में, हम इस कथन का खंड खंड में उपयोग कर सकते हैं:

layout(location = 0) out float fragmentdepth;

बनावट के लिए केवल गहराई 16 बिट लिखने के लिए (के रूप में सेट GL_DEPTH_COMPONENT16 पहले) लेकिन मैं ओपनजीएल 2.1 (जीएलएसएल 1.20) में ऐसा कुछ कैसे कर सकता हूं?

  1. जहां तक ​​मुझे पता है, गहराई बफर प्रस्तुत करने के लिए, हमकेवल कैमरे की स्थिति को प्रकाश की स्थिति और कैमरे की दिशा में हल्की दिशा में बदलने की जरूरत है और यदि हम असली दृश्य खींच रहे हैं तो वापस बदले, क्या यह सही है?

उत्तर:

जवाब के लिए 3 № 1

जीएलएसएल 3.3 में, हम इस कथन का खंड खंड में उपयोग कर सकते हैं:

बनावट के लिए केवल गहराई 16 बिट लिखने के लिए (पहले GL_DEPTH_COMPONENT16 के रूप में सेट)

नहीं, आप "टी" कर सकते हैं।

वह सेट होगा fragmentdepth एक को लिखने के लिए रंग बफर। और आप एक छवि को संलग्न नहीं कर सकते हैं GL_DEPTH_COMPONENT16 छवि प्रारूप सेवा मेरे GL_COLOR_ATTACHMENTi एक एफबीओ का लगाव बिंदु। ऐसा करने का प्रयास करेंगे आपको एक दे GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT त्रुटि.

में सब जीएलएसएल के संस्करण, संलग्न गहराई बफर को लिखने का एकमात्र तरीका लिखना है gl_FragDepth। और में सब जीएलएसएल के संस्करण, आप केवल एफबीओ से जुड़े एक गहराई बफर कर सकते हैं। हालांकि छवि लोड / स्टोर आपको इसके आसपास काम करने की अनुमति देता है, लेकिन आप गहराई से परीक्षण खो देते हैं और ऐसे।


उत्तर № 2 के लिए 1

जैसा कि कहा गया यहाँ लक्ष्यीकरण करते समय आपको एफबीओ एक्सटेंशन (EXT) का उपयोग करने की आवश्यकता हैओपनजीएल 2.1.इसलिए आप अभी भी फिक्स्ड पाइपलाइन का उपयोग क्यों कर रहे हैं? इसे बहिष्कृत किया गया है। यदि आपका हार्डवेयर आपको अनुमति देता है - ओपनजीएल 3.3+ का उपयोग करें और उसके बाद लेजरेज (कोर) एफबीओ बनावट संलग्नक (या रेंडरबफर) के साथ करें जिसमें आप गहराई बफर डेटा खींच सकते हैं हाँ, आप अभी भी बहिष्कृत प्रोफ़ाइल के साथ ऐसा ही कर सकते हैं, लेकिन आधुनिक ओपनजीएल ने तब से एक बड़ा कदम आगे बढ़ाया।

वैसे भी, यहाँ आपको अपने संस्करण के लिए क्या चाहिए।