Hi,
I am using texture buffer objects for the texturing, the problem is that when i pass diff values for pixels it renders max values and there is no change in the intensity of color. e.g. my texture data type is GLubyte, when i pass 34, 43 values as color it renders color with highest intensity values which is same as 255.

here is my code:

Vert shader:

Code :
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 shader:
Code :
out vec4 Color;
uniform isamplerBuffer sampler;
uniform int index;
void main() 
{
   Color=texelFetch(sampler,index);
 
}

Code :
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);

In this case it draws all the 3 squares with dark red color and no change in the intensity of the color.