如何将GLUT颜色存储到变量中以提升代码可读性?
如何将GLUT颜色存储到变量中提升代码可读性
GLUT/OpenGL本身并没有提供glColor这种现成的类型,但你完全可以自己定义数据结构来存储颜色值,以此替代直接在glColor3f中写硬编码的参数,提升代码可读性。
方法一:用C语言结构体实现
先定义一个存储RGB颜色的结构体:
typedef struct { float r, g, b; } Color;
接着就可以定义常用颜色的变量:
Color white = {1.0f, 1.0f, 1.0f}; Color red = {1.0f, 0.0f, 0.0f}; Color blue = {0.0f, 0.0f, 1.0f};
使用时直接将结构体的成员传给glColor3f:
glColor3f(white.r, white.g, white.b);
方法二:C++中封装成类简化调用
如果用C++开发,可以给结构体加一个成员函数,直接调用OpenGL的颜色设置函数:
struct Color { float r, g, b; // 直接应用该颜色 void set() const { glColor3f(r, g, b); } };
使用时会更简洁:
Color white{1.0f, 1.0f, 1.0f}; white.set(); // 等价于glColor3f(1.0f,1.0f,1.0f);
备选:用宏定义常用颜色
如果你不想定义结构体,也可以用宏来快速复用颜色值:
#define COLOR_WHITE 1.0f, 1.0f, 1.0f #define COLOR_BLACK 0.0f, 0.0f, 0.0f
使用时直接传入宏:
glColor3f(COLOR_WHITE);
不过宏没有类型检查,可读性和维护性不如结构体,更推荐前两种方法。
内容的提问来源于stack exchange,提问作者pinguxx28
相关产品推荐
相关产品推荐

