Как текстура отображается в цвете, а не в серой шкале в OpenGL3? - PullRequest
0 голосов
/ 06 августа 2020

Я разрабатываю программу GUI, используя Golang.

И я использую im gui - go framework для моего GUI.

Теперь я возникла проблема с отображением цветовой текстуры.

Я загрузил изображение из файла и сделал изображение в виде текстуры, а затем прикрепил его к GUI.

Изображение определенно цветное, но оно отображает оттенки серого gui.

Есть ли лучшее решение для этой проблемы?

Спасибо.

Фрагментный шейдер OpenGL:

uniform int ImageType;
uniform sampler2D Texture;
uniform sampler2D Palette;
in vec2 Frag_UV;
in vec4 Frag_Color;
out vec4 Out_Color;
void main()
{
     
    Out_Color = vec4(Frag_Color.rgb, Frag_Color.a * texture( Texture, Frag_UV.st).r); 
}

Текстура изображения:

gl.BindTexture(gl.TEXTURE_2D, texture)

width := int32(bm.W)
height := int32(bm.H) 
dataPtr := gl.Ptr(bm.Data)

gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
gl.PixelStorei(gl.UNPACK_ROW_LENGTH, 0)
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, int32(width), int32(height),
    0, gl.RGBA, gl.UNSIGNED_BYTE, dataPtr)

введите описание изображения здесь

1 Ответ

0 голосов
/ 06 августа 2020

Я не знаю, что такое Frag_Color, но вы помещаете его в выходной цвет как Frag_Color.rgb, что делает цвет текстуры зависимым от его значения. Вы помещаете Texture только в альфа-значение, которое является прозрачностью / видимостью. Попробуйте этот код, он должен работать: Out_Color = texture(Texture, Frag_UV.st); Если этот код не работает, вы также можете попробовать это: Out_Color = Frag_Color * texture(Texture, Frag_UV.st);

Прошу прощения за форматирование, он не работает, когда я пишу на телефон

...