मैं एक AMD Radeon HD 6970M 2048 एमबी ग्राफिक्स कार्ड के साथ एक आईमैक के लिए एक GLSL शिखर शेडर लिख रहा हूँ:अति ग्राफिक्स कार्ड पर जीएलएसएल शेडर के लिए वर्टेक्स वर्दी घटकों की वास्तविक संख्या क्या है?
GL_MAX_VERTEX_ATTRIBS: 16
GL_MAX_VERTEX_UNIFORM_COMPONENTS: 4096
GL_VERSION: 2.1 ATI-7.12.9
GL_SHADING_LANGUAGE_VERSION: 1.20
मेरी शेडर में मैं वर्दी mat4s की एक बड़ी सारणी रखने के लिए करना चाहते हैं:
uniform mat4 T[65]
लेकिन अगर मैं इनमें से 65 में से अपने शेडर (गुप्त रूप से) ऐप्पल सॉफ्टवेयर रेंडरर मोड में स्विच करने का प्रयास करता हूं। यदि मैं इसके बजाय 64:
uniform mat4 T[64]
सबकुछ ठीक है।
वर्दी की अधिकतम संख्या से अधिक होने में एक समस्या होने लगती है। लेकिन जैसा कि मैंने ऊपर मैं GL_MAX_VERTEX_UNIFORM_COMPONENTS के लिए 4096 हो रही है लिखा था तो 4096/(4 * 4) = 256 नहीं 64 ...
OpenGL.org wiki कहते
अति/AMD ध्यान दें: अति अधिकतम घटक मान हैं गलत। वे द्वारा 4.
विभाजित घटकों की वास्तविक संख्या रहे हैं लेकिन यह पढ़ मुझे लगता है कि होता है कि अगर मैं GL_MAX_VERTEX_UNIFORM_COMPONENTS क्वेरी और 4096 कि मैं वास्तव में 16,384 है मिलता है। क्या है कि GL_MAX_VERTEX_UNIFORM_COMPONENTS रिटर्न घटकों 4. यह द्वारा गुणा की वास्तविक संख्या तो देना होगा है मामला प्रतीत हो रहा है 1024/(4 * 4) = 64.
किसी को भी इस बात की पुष्टि कर सकते हैं?
संपादित करें: मेरे शेडर बस है:
#version 120
// 65 goes into software render mode
#define MAX_T 64
attribute vec4 indices;
uniform mat4 T[MAX_T];
void main()
{
gl_Position = T[int(indices[0])]*gl_Vertex;
}
क्या आप कृपया अपने शेडर कोड, या कम से कम सभी वर्दी की वर्दी की परिभाषा पोस्ट कर सकते हैं। और आप सही आइसोफर हैं, कि आपको 1024 से 4 को गुणा करने की आवश्यकता नहीं है। विकी प्रविष्टि बुरी तरह से बुलाया जाता है। – datenwolf
मैंने उपरोक्त शेडर कोड पोस्ट किया (मैंने यह भी देखा कि मेरे गिनती में एक बंद होने से पहले, इसलिए मैंने मूल प्रश्न 63-> 64 और 64-> 65 के अनुसार संख्याओं को संपादित किया)। –
@ डेटनवॉल्फ आपको इसे एक उत्तर के रूप में पोस्ट करना चाहिए, क्योंकि यह उसकी समस्या काफी स्पष्ट रूप से प्रतीत होता है। मुझे लगता है कि वह सिर्फ कुछ अन्य छोटी वर्दी का उपयोग करता है जो पिछले 64 वें मैट्रिक्स स्लॉट को "ब्लॉक" करता है (बिल्टिन वर्दी भी गिनती है, मुझे लगता है)। –