픽셀 맵 데이터가 1 채널, 8 비트 있습니다. 픽셀 맵 너비와 높이가 있습니다.GLSL sampler2DRect 및 단일 채널 (GL_RED) 데이터
조각 쉐이더에 pixmap 데이터를 제출하려고합니다. 나는 ogl3과 VAO 및 VBO를 사용하고 있습니다.
내 설정 :
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_RECTANGLE, texture);
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_RED, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, data);
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, ..., vertices, GL_STATIC_DRAW);
...create program...
glUseProgram(program);
glUniform1i(glGetUniformLocation(program, "image"), 0);
glDrawArrays(GL_TRIANGLE_FAN, 0, ...);
그리고 조각 쉐이더 :
uniform sampler2DRect image;
varying vec2 varying_texcoord;
void main() {
vec4 sample = texture2DRect(image, varying_texcoord);
gl_FragColor = vec4(1.0, 0.0, 0.0, sample.a);
}
gl_FragColor 그러나 sample.a 항상 것 같다, 픽셀 빛과 sample.a의 가치를 따라 어두운 붉은 페인트한다 1.0 - 나는 순수한 빨간색 # ff0000을 얻고 있습니다. 문제는 glTexImage2D에 있다고 생각합니까?
프로그램 및 데이터가 유효하다고 가정하십시오.