के साथ 2 डी बहुभुज पर एक सीमा रेखाचित्रण करना मेरे पास कुछ सरल बहुभुज (20 से कम शिखर) हैं जो एक साधारण एक्सई प्लेन पर फ्लैट प्रस्तुत करते हैं, GL_TRIANGLES और एक फ्लैट रंग, 2 डी सिमुलेशन का उपयोग करते हुए।एक टुकड़े टुकड़े
मैं चर बहुसंख्यक की सीमा और इन बहुभुजों के लिए एक अलग रंग जोड़ना चाहता हूं। मेरे पास एक ही शिखर और glLineWidth/GL_LINE_LOOP का उपयोग करके कुछ कार्यान्वित किया गया है, जो काम करता है, लेकिन एक और प्रतिपादन पास है और सभी कशेरुक परिवर्तनों को दोहराता है।
मुझे लगता है कि मुझे gl_FragCoord और vertex डेटा और/या बनावट निर्देशांक का उपयोग करके खंड टुकड़े में ऐसा करने में सक्षम होना चाहिए, लेकिन मुझे यकीन नहीं है, और मेरे निष्पक्ष प्रयास स्पष्ट रूप से गलत हैं।
मुझे कुछ ऐसा लगता है।
uniform vec2 scale; // viewport h/w
uniform float line_width;
uniform vec4 fill_color;
uniform vec4 border_color;
varying vec4 vertex; // in world coords
void main()
{
if (distance_from_edge(gl_FragCoord, vertex, scale) < line_width)
{
// we're close to the edge the polygon, so we're the border.
gl_FragColor = border_color;
}
else
{
gl_FragColor = fill_color;
}
}
जिस भाग को मैं समझने की कोशिश कर रहा हूं वह दूरी_from_edge फ़ंक्शन है - इसकी गणना कैसे की जा सकती है? Gl_FragCord को गलत दृष्टिकोण का उपयोग कर रहा है - क्या मुझे किसी प्रकार की बनावट मैपिंग का उपयोग करना चाहिए?
एक प्रयोग के रूप में मैंने कशेरुक को पिक्सेल स्पेस को स्केल के साथ परिवर्तित करने की कोशिश की, और उसके बाद उस दूरी और gl_FragCoord के बीच की दूरी की गणना पिक्सल में की, लेकिन यह अजीब परिणाम देता है कि मैं वास्तव में समझ में नहीं आया। इसके अलावा मुझे एज की दूरी की आवश्यकता है, कशेरुक नहीं, लेकिन मुझे यकीन नहीं है कि इसे कैसे प्राप्त किया जाए।
कोई भी विचार?
संपादित करें: निकोल की प्रतिक्रिया के आधार पर, मेरे सवाल का हो जाता है:
मान लिया जाये कि मैं एक त्रिकोण 3 कोने कोने किनारे कोने के रूप में चिह्नित के साथ है, और बीच में एक शीर्ष के रूप में चिह्नित किनारे के रूप में नहीं (ताकि में 3 त्रिकोण साथ गाया कुल), तो मैं किसी दिए गए मोटाई की सीमा खींचने के लिए टुकड़े टुकड़े में कैसे घुसपैठ कर सकता हूं? मुझे लगता है कि मैं टुकड़े के टुकड़े के साथ किनारे के झंडे को पास करता हूं, साथ ही साथ वांछित रेखा की मोटाई भी पास करता हूं, और यह किनारे के बीच की दूरी को समझने के लिए कुछ इंटरपोलेशन गणना करता है, किनारे के किनारों के बीच की दूरी को समझने के लिए, और रंग को सीमा के रूप में सीमा/सीमा के रूप में थ्रेसहोल्ड करता है ?
'gl_FragCoord' बड़े पैमाने पर होने जा रहा है आप के लिए असहाय यह आपको बताता है कि स्क्रीन पर टुकड़ा कहाँ है; यह त्रिज्या के सापेक्ष कहां है इसके बारे में कुछ भी नहीं कहता है। कशेरुक स्थिति समान रूप से बड़े पैमाने पर अनुपयोगी होगी। आपको वर्टेक्स शेडर/उपयोगकर्ता द्वारा प्रदान किए गए डेटा की मदद की आवश्यकता होगी जो कि किनारे पर मूल्य रखता है या नहीं, यह एक किनारे के चरम पर है या नहीं, और मान को अलग करता है। इसका मतलब है कि आप एक त्रिकोण के किनारे का पता नहीं लगा सकते हैं; आपको त्रिभुज को कई त्रिकोणों में विभाजित करना होगा, ताकि आंतरिक शिखर और किनारे के शिखर को अलग किया जा सके। –
धन्यवाद, मुझे संदेह है कि मुझे कुछ याद आ रहा था। तो अगर मेरे पास किनारे के शीर्ष के रूप में चिह्नित 3 अक्षरों वाले त्रिभुज हैं, और बीच में एक नहीं है (इसलिए 4 त्रिकोणों के साथ प्रस्तुत किया गया है), तो मैं सीमा के लिए दी गई रेखा चौड़ाई में कैसे इंटरपोलेट करूं? – bloodearnest