OpenGL:将RGBA颜色结构发送到glColor*()作为一个参数?

New*_*bie 0 c++ opengl

有没有办法发送像这样的结构:

struct COLOR {
    float r, g, b, a;
};
Run Code Online (Sandbox Code Playgroud)

直接将glColor*()函数作为一个参数?会使代码更好.

我可以自己创建函数并将每个R,G,B,A值分别发送到glColor4f(),但这不会那么好.因此,我正在寻找一种尽可能以最佳方式发送它的方法.

Vik*_*ehr 6

COLOR color;
glColor4fv((GLfloat*) &color);
Run Code Online (Sandbox Code Playgroud)

更新:我不建议创建内联函数,但是,您可以在结构中使用GLfloat来使表达式更清晰.使用&color.r来避免编译器警告.

struct COLOR {
  GLfloat r,g,b,a;
};
COLOR color;
glColor4fv(&color.r);
Run Code Online (Sandbox Code Playgroud)

  • @Newbie:你可以做`glColor4fv(&color.r)`,假设'GLfloat`只是`float`. (2认同)