का उपयोग कर बनावट जब मैं बनावट बफर में गैर अधिकतम मान पास करता हूं, जबकि इसे प्रस्तुत करने से रंगों के साथ अधिकतम मूल्यों पर ज्यामिति आकर्षित होती है। GlteexBuffer() API का उपयोग करते समय मुझे यह समस्या मिली।texelFetch()
उदा। आइए मान लें कि मेरा बनावट डेटा GLubyte है, जब मैं 255 से कम मान देता हूं, तो रंग काला और उस रंग के मिश्रण के बजाय 255 के साथ खींचा जाता है।
मैंने एएमडी और एनवीडिया कार्ड पर कोशिश की, लेकिन परिणाम समान हैं। क्या आप मुझे बता सकते हैं कि गलत कहां जा सकता है?
मैं यहां अपने कोड को कॉपी कर रहा हूँ:
Vert शेडर:
in vec2 a_position;
uniform float offset_x;
void main()
{
gl_Position = vec4(a_position.x + offset_x, a_position.y, 1.0, 1.0);
}
Frag शेडर:
out vec4 Color;
uniform isamplerBuffer sampler;
uniform int index;
void main()
{
Color=texelFetch(sampler,index);
}
कोड:
GLubyte arr[]={128,5,250};
glGenBuffers(1,&bufferid);
glBindBuffer(GL_TEXTURE_BUFFER,bufferid);
glBufferData(GL_TEXTURE_BUFFER,sizeof(arr),arr,GL_STATIC_DRAW);
glBindBuffer(GL_TEXTURE_BUFFER,0);
glGenTextures(1, &buffer_texture);
glBindTexture(GL_TEXTURE_BUFFER, buffer_texture);
glTexBuffer(GL_TEXTURE_BUFFER, GL_R8, bufferid);
glUniform1f(glGetUniformLocation(shader_data.psId,"offset_x"),0.0f);
glUniform1i(glGetUniformLocation(shader_data.psId,"sampler"),0);
glUniform1i(glGetUniformLocation(shader_data.psId,"index"),0);
glGenBuffers(1,&bufferid1);
glBindBuffer(GL_ARRAY_BUFFER,bufferid1);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices4),vertices4,GL_STATIC_DRAW);
attr_vertex = glGetAttribLocation(shader_data.psId, "a_position");
glVertexAttribPointer(attr_vertex, 2 , GL_FLOAT, GL_FALSE ,0, 0);
glEnableVertexAttribArray(attr_vertex);
glDrawArrays(GL_TRIANGLE_FAN,0,4);
glUniform1i(glGetUniformLocation(shader_data.psId,"index"),1);
glVertexAttribPointer(attr_vertex, 2 , GL_FLOAT, GL_FALSE ,0,(void *)(32));
glDrawArrays(GL_TRIANGLE_FAN,0,4);
glUniform1i(glGetUniformLocation(shader_data.psId,"index"),2);
glVertexAttribPointer(attr_vertex, 2 , GL_FLOAT, GL_FALSE ,0,(void *)(64));
glDrawArrays(GL_TRIANGLE_FAN,0,4);
इस मामले में यह सब ड्रॉ काले लाल रंग के साथ 3 वर्ग या।
आपको बहुत बहुत धन्यवाद .. !! अब, समस्या यह है कि जब मैं samplerBuffer द्वारा isamplerBuffer को प्रतिस्थापित करता हूं तो यह GL_R8, GL_R16, GL_R16F, GL_R32F के लिए सही आउटपुट देता है लेकिन http://www.opengl.org/sdk/docs/man3/xhtml पर दिए गए अन्य आंतरिक प्रारूपों के लिए /glTexBuffer.xml। क्या आप मुझे बता सकते हैं कि सभी आंतरिक प्रारूपों के लिए सही ओ/पी कैसे प्राप्त कर सकते हैं ..? असल में मुझे glsl के बारे में ज्यादा जानकारी नहीं है .. कृपया मुझे इसके साथ मदद करें .. – debonair
@ user1737197: स्टैक ओवरफ़्लो वेब-फ़ोरम नहीं है। यहां, यदि आपके पास कोई नया प्रश्न है, तो पूछने के लिए "प्रश्न पूछें" बटन का उपयोग करें। या आप बस [ओपनजीएल विकी पर जा सकते हैं और इसके बारे में पढ़ सकते हैं] (http://www.opengl.org/wiki/GLSL_Sampler)। –
इसके बारे में खेद है, मैंने नया प्रश्न बनाया है। – debonair