OpenGL ES 2.0: 2 डी प्रोजेक्शन की स्थापना


15

यह आलेख सामान्य रूप से वर्णन करता है कि कैसे फिक्स्ड फ़ंक्शन पाइपलाइन का उपयोग करते हुए, तेज ओएनजीएल 2 डी ग्राफिक्स खींचना है।

क्योंकि OpenGL ES 2.0 में कुछ ES 1.x फ़ंक्शंस उपलब्ध नहीं हैं (जैसे: glOrtho ()), उनकी कार्यक्षमता को Fragment / Vertex shaders में प्रतिस्थापित किया जाना चाहिए।

मेरा सवाल यह है कि, प्रोग्रामेबल पाइपलाइन में निम्नलिखित 2 डी प्रोजेक्शन को कैसे सेटअप किया जाए?

const XSize = 640, YSize = 480
glMatrixMode (GL_PROJECTION)
glLoadIdentity ();
glOrtho (0, XSize, YSize, 0, 0, 1)
glMatrixMode (GL_MODELVIEW)

उपर्युक्त निश्चित फ़ंक्शन 2 डी प्रोजेक्शन सेटअप को पूरी तरह से बदलने के लिए फ्रैगमेंट और वर्टेक्स शेड्स को कैसे कॉन्फ़िगर किया जाना चाहिए?

जवाबों:


12

मेरे OpenGL ES 2.X इंजन में, मैं CPU साइड पर MVP मैट्रिक्स (मॉडल व्यू प्रोजेक्शन) की गणना करता हूं और इसे वर्टेकर ग्रेडर में इंजेक्ट करता हूं।

ऑर्थोगोनल प्रक्षेपण एक 4 * 4 मैट्रिक्स है । जब मेरे पास एमवीपी होता है, तो मैं इसे इसके साथ शीर्ष की छाया में इंजेक्ट करता हूं:

 mMvpLoc = getUniformLocation("uMvp");
 glUniformMatrix4fv(mMvpLoc, 1, false, mMvp.pointer());

MMvp CPU की तरफ मेरा मैट्रिक्स 4 * 4 है। GetUniformLocation प्रोग्राम शेडर को लोड करने के केवल एक समय बाद किया जा सकता है।

वर्टेकर shader का एक उदाहरण:

uniform mat4    uMvp;
attribute vec3 aPosition;
varying vec4 vColor;

void main() {
   vec4 position = vec4(aPosition.xyz, 1.);
   gl_Position = uMvp * position;
}

Gl_Position एक विशेष पूर्वनिर्धारित चर है। इसमें शीर्ष की स्थिति होनी चाहिए।

टुकड़े टुकड़े का एक उदाहरण। प्रत्येक बिंदु को आकर्षित करने के लिए, अंतिम रंग "gl_FragColor" की गणना की जानी चाहिए:

#ifdef GL_ES
precision highp float;
#endif

void main(void)
{
   gl_FragColor = vColor;
}

यह कार्यक्रम प्रत्येक शीर्ष के लिए परिभाषित रंगों के चौरसाई के साथ एक त्रिकोण खींचता है।

एक बेहतर ट्यूटोरियल के लिए, इस अद्भुत दस्तावेज़ को देखें।


हैलो एलिस, यह उत्कृष्ट और पूर्ण उत्तर है। आपका बहुत बहुत धन्यवाद। सादर।
Bunkai.Satori

9

GlOrtho doc से, प्रतिस्थापित मानों के साथ:

         2
    ------------       0              0             -1
       XSize
                       2
        0         ------------        0              1
                   - Ysize
        0              0              -2            -1
        0              0              0              1

इस मैट्रिक्स को एक समान रूप में संग्रहीत करें, और फिर आप इसे (यानी एम। वी उत्पाद) अपने आने वाले शीर्ष पदों पर लागू कर सकते हैं।


प्रिय बहबर, उत्तर के लिए धन्यवाद। इसलिए मूल रूप से, ES2.0 में कुछ और अलग नहीं है, बस मैन्युअल रूप से glOrtho () मैट्रिक्स रिप्लेसमेंट बना रहा है।
बंकई। कटोरी।

@ Bunkai.Satori: वैसे, आम तौर पर इसमें थोड़ा अधिक है, जीएल एक समान मॉडलव्यू और प्रक्षेपण का एक समग्र अपलोड करता है।
बाहबर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.