काम करने के लिए 2 डी परिवर्तन नहीं मिल सकता है

मैं और मेरी बच्ची एक 2 डी इंजन बनाने की कोशिश कर रही है, लेकिन हम काम पर परिवर्तन नहीं कर सकते हैं, इस तरह यह अभी दिखता है। हमने स्केलिंग, अनुवाद इत्यादि जैसे प्रत्येक तत्व के लिए मैट्रिक्स बनाए हैं लेकिन हम किसी भी स्थानांतरित करने या कुछ करने के लिए ट्रैक्टर नहीं प्राप्त कर सकते हैं, क्या हमने कोई गणित त्रुटियां की हैं? यही वह है जो हम अभी प्राप्त करते हैं, हम सिर्फ VBO प्रस्तुत करते हैं और शेडर्स का उपयोग नहीं करते हैं। शेडर्स के साथ मेरा मतलब है कि हम जीएलएसएल हैं।

http://imgur.com/T0jDSTO

परिवर्तन

http://pastebin.com/dKRW244e

Matrix3f

http://pastebin.com/GY0872k6

Matrix4f

http://pastebin.com/f1YNuM09

VBO

http://pastebin.com/5zVgWYtK

Basicशेडर

http://pastebin.com/RyeSxibQ

शेडर

http://pastebin.com/68tJTswq

Vertexशेडर

http://pastebin.com/ffDvsL2Y

Fragmentशेडर

http://pastebin.com/SWT5EKAi

जहां से हम प्रस्तुत करते हैं और अपडेट करते हैं

http://pastebin.com/dTG6HHDX

I think that I have messed up to bind the शेडरs to the VBO, is that right? And if so, how do I fix it...

इसके अलावा, मैं सिर्फ आधुनिक opengl में जवाब चाहता हूं, इसलिए कोई glbegin() और glEnd() धन्यवाद!

0
मैं रेंडर विधि को कॉल करने से पहले यह कर रहा हूं। इंजन नामक कक्षा से।
जोड़ा लेखक thetheodor, स्रोत
मेरे पास है, मैंने भी vbo के प्रतिपादन से पहले इसे सही करने के लिए परीक्षण किया है। क्या आप देख सकते हैं कि यह सही ढंग से बदल रहा है या नहीं?
जोड़ा लेखक thetheodor, स्रोत
मैं उत्सुक हूं, क्योंकि इससे मदद मिल सकती है, लेकिन कक्षा में जहां आप शुरू करते हैं, क्या आपने प्रत्येक फ्रेम से पहले अपनी स्क्रीन को साफ़ करना सुनिश्चित कर लिया है? यह आमतौर पर आपके मुख्य गेम लूप के अंदर glClear (GL_COLOR_BUFFER_BIT); का उपयोग करके किया जाता है।
जोड़ा लेखक hasherr, स्रोत
जहां भी glClear() है, इसे अपने मुख्य गेम लूप में प्राप्त करें। किसी भी प्रकार के आंदोलन को अनुकरण करने के लिए स्क्रीन को प्रति फ्रेम एक बार साफ़ करने की आवश्यकता है, चाहे वह अनुवाद, परिवर्तन या प्रतिबिंब हो।
जोड़ा लेखक hasherr, स्रोत

1 उत्तर

In your vertex shader, you wrote gl_Position = in_Position * transform;

यह एक वेक्टर की बजाय एक मैट्रिक्स वापस करना चाहिए। यह देखते हुए कि आपका आयताकार सादा सफेद है और आपने रंग के प्रावधान किए हैं, मुझे खतरा होगा कि आपका शेडर संकलित करने में असफल रहा।

gl_Position = transform * in_Position; is the correct order for transforming a vector with a matrix.

0
जोड़ा
शेडर बग को ठीक करने के बाद मैं इसका परीक्षण करूंगा।
जोड़ा लेखक thetheodor, स्रोत
क्या आप देख सकते हैं कि मेरे मैट्रिस सही तरीके से किए गए हैं या नहीं? और अगर मैं ट्रांसफॉर्म मैट्रिक्स प्राप्त करने के लिए प्रत्येक matrices गुणा करना चाहिए?
जोड़ा लेखक thetheodor, स्रोत
मैट्रिक्स * वेक्टर के साथ कुछ भी गलत नहीं है (यह वास्तव में सम्मेलन पुरानी फिक्स्ड फ़ंक्शन पाइपलाइन का पालन करता है)। जीएलएसएल गुणों के ऊपरी भाग के आधार पर एक वेक्टर को एक पंक्ति या स्तंभ वेक्टर के रूप में पेश करेगा, इसलिए एम * वी वी * ट्रांसपोज़ (एम) जैसा ही है
जोड़ा लेखक derhass, स्रोत