मेरी मौजूदा प्रोजेक्ट को अपग्रेड करने के लिए आधुनिक ओपनजीएल के बारे में खोज और पढ़ने के बाद, मैं थोड़ा उलझन में हूं, क्योंकि मेरा 3 डी फ्रेमवर्क ओपनजीएल 2.1 पर आधारित है।आधुनिक ओपनजीएल: वीबीओ, जीएलएम और मैट्रिक्स स्टैक्स
हां, जहां तक मैं जानने के रूप में ...
हम कोने, सूचकांक, Normals, रंग, uvs से हमारे वर्टेक्स-बफर-वस्तुओं को उत्पन्न करने की जरूरत है, आदि
तो हम मैट्रिक्स परिवर्तन के लिए GLM उपयोग कर सकते हैं, और हम केवल बना सकते हैं या meshes में हेरफेर करने के VBO उपयोग करते हैं, अंत में हम इस तरह GLSL शिखर शेडर में सब कुछ पारित ...
glm::mat4 MVP = projection * view * model; glUniformMatrix4fv(glGetUniformLocation(shaderProgramID, "MVP"), 1, GL_FALSE, glm::value_ptr(MVP)); //or &MVP[0][0] // uniform mat4 MVP; // in vec3 Vertex; // void main(void) // { // gl_Position = MVP * vec4(Vertex, 1.0); //instead of ftransform(); // }
प्रश्न: हम pushMatrix/popMatrix के बिना पदानुक्रमित परिवर्तन कैसे करते हैं? (या हो सकता है कि हम अपने वीबीओ का उपयोग करके पदानुक्रमित परिवर्तन करते हैं, क्या यह संभव है?)
यदि संभव नहीं है, तो GLM और C++ < स्टैक> लाइब्रेरी का उपयोग करके पुशमैट्रिक्स/पॉपमैट्रिक्स के समान परिणाम कैसे प्राप्त करें?
चलें कहते हैं कि मैं कुछ इस तरह की जरूरत है:
> Set identity
> Translate to X, Y, Z
> Draw Mesh 1
> Rotate 0.5 by X axis
> Draw Mesh 2
> Scale down to 0.1
> Draw Mesh 3
@ BЈовић: [ओपनजीएल गणित (जीएलएम)] (http://glm.g-truc.net/), मैट्रिक्स/वेक्टर गणित के लिए हेडर-केवल सी ++ लाइब्रेरी। – genpfault