gpt4 book ai didi

opengl-es-2.0 - opengl es 2.0 中的 glcolor4ub

转载 作者:行者123 更新时间:2023-12-04 05:53:28 24 4
gpt4 key购买 nike

我有一些使用 opengl 在屏幕(健康栏)上画线的函数,我最近从 opengl es 1.1 移到了 opengl es 2.0。我正在使用 glColor4ub(50,160,50,255);在屏幕上渲染之前将线条颜色更改为绿色,但该功能在 2.0 版中似乎不存在。它说它无效,只是将所有行呈现为白色。

有没有不同的方式我应该改变线条颜色?我试着查了一下,但似乎没有人有同样的问题。这可能是我没有看到的简单内容。

我的游戏使用 cocos2d 2.0 并且健康栏几乎是我直接使用 opengl 渲染的唯一内容。其他一切都使用 Sprite 表等。谢谢你的帮助。

最佳答案

与 OpenGL ES 2.0 中的所有其他内容一样,您需要将线条颜色发送到片段着色器(通过顶点着色器作为顶点属性,或直接作为统一)并在片段着色器中输出颜色。

在最简单的情况下,您可以在片段着色器中使用静态值:

void main(void) {
gl_FragColor = vec4(50.0/255.0, 160.0/255.0, 50.0/255.0, 255.0/255.0);
}

如果要在运行时改变颜色,请将值作为统一值发送到片段着色器:
GLfloat color[4];
color[0] = 50.0/255.0;
color[1] = 160.0/255.0;
color[2] = 50.0/255.0;
color[3] = 255.0/255.0;

GLint lineColorSlot = glGetUniformLocation(shaderProgram, "LineColor");
glUniformMatrix4fv(lineColorSlot, 1, 0, color);

片段着色器:
uniform lowp vec4 LineColor;

void main(void) {
gl_FragColor = LineColor;
}

关于opengl-es-2.0 - opengl es 2.0 中的 glcolor4ub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9794508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com