为了账号安全,请及时绑定邮箱和手机立即绑定

纹理如何在OpenGL3中显示为颜色而不是灰度?

纹理如何在OpenGL3中显示为颜色而不是灰度?

Go
慕容3067478 2022-06-21 16:28:11
我正在使用 Golang 开发一个 GUI 程序。我正在为我的 GUI 使用 imgui-go 框架。现在,我遇到了颜色纹理显示问题。我已经从文件中加载了图像,并将图像制作为纹理,然后附加到 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 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

我不知道是什么,Frag_Color但你把它放在输出颜色中,因为Frag_Color.rgb这使得纹理的颜色取决于它的值。您Texture只输入透明度/可见性的 alpha 值。试试这个代码,它应该可以工作: Out_Color = texture(Texture, Frag_UV.st); 如果那个代码不起作用,你也可以试试这个: Out_Color = Frag_Color * texture(Texture, Frag_UV.st);

很抱歉格式化,我在手机上写的时候效果不好


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信