Я могу получить 1 канал текстуры для отображения с этим кодом:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, image_width, image_height, 0, GL_ALPHA, GL_UNSIGNED_BYTE, image_grayscale);
point bbox[4] = {
{ -0.5, 0.5, 0, 0 },
{ 0.5, 0.5, 1, 0 },
{ -0.5, -0.5, 0, 1 },
{ 0.5, -0.5, 1, 1 },
};
glBufferData(GL_ARRAY_BUFFER, sizeof bbox, bbox, GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glVertexAttribPointer(uniform_color, 4, GL_FLOAT, GL_FALSE, 0, bbox);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Но когда я изменяю на
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, button_image_width, button_image_height, 0, GL_RGB, GL_UNSIGNED_BYTE, image_rgb);
, я получаю цвет solid вместо image
Ниже представлен фрагментный шейдер
GLbyte fShaderStr[] =
"varying vec2 texpos; \n"
"uniform sampler2D tex; \n"
"uniform vec4 color; \n"
"void main() \n"
"{ \n"
" gl_FragColor = vec4(1, 1, 1, texture2D(tex, texpos).a) * color; \n"
"}
Как нарисовать RGB-текстуру?