C++ 将RGB值存储在结构c++;
所以我有一个名为color的结构,我的主要目标是为我的程序创建一个颜色托盘,并通过单个变量而不是RGB值或三个不同的结构变量来访问它们 函数声明C++ 将RGB值存储在结构c++;,c++,opengl,rgb,C++,Opengl,Rgb,所以我有一个名为color的结构,我的主要目标是为我的程序创建一个颜色托盘,并通过单个变量而不是RGB值或三个不同的结构变量来访问它们 函数声明 WINGDIAPI void APIENTRY glColor3f(GLfloat red,GLfloat green,GLfloat blue); struct color { GLfloat r; GLfloat g; GLfloat b; }; color blue={0.0,0.0,255.0}; glColor3
WINGDIAPI void APIENTRY glColor3f(GLfloat red,GLfloat green,GLfloat blue);
struct color
{
GLfloat r;
GLfloat g;
GLfloat b;
};
color blue={0.0,0.0,255.0};
glColor3f(blue);
我可以通过blue.r、blue.g、blue.b访问这些值。
但是我希望它们都在一个变量中,这样当我想要访问它时,我可以调用变量blue。
glColor3f
不将您的struct color
类型作为参数。因此,您不能使用glColor3f(蓝色)
但是,您可以这样定义重载函数:
void glColor3f(struct color &c) {
glColor3f(c.r, c.g, c.b);
}
glColor3f
不将您的struct color
类型作为参数。因此,您不能使用glColor3f(蓝色)
但是,您可以这样定义重载函数:
void glColor3f(struct color &c) {
glColor3f(c.r, c.g, c.b);
}
您不能只将单个变量传递给,因为该函数有三个参数 也就是说,有一个类似的函数需要一个包含三个颜色值的数组。此函数只有一个参数,因此只需向其传递一个参数 因此,对于使用
glColor3fv()
和期望颜色数组的类似函数,我们实际上可以声明如下类型
using color3f = std::array<GLfloat, 3>;
必须调用data()
成员才能转换为指针
为什么我不只是使用color3f=GLfloat[3]声明一个像
这样的普通数组类型,它不需要调用data()
成员?因为普通数组有一些缺点,例如,您不能简单地将一个数组分配给另一个数组,如blue2=blue代码> 您不能只向传递一个变量,因为该函数有三个参数
也就是说,有一个类似的函数需要一个包含三个颜色值的数组。此函数只有一个参数,因此只需向其传递一个参数
因此,对于使用glColor3fv()
和期望颜色数组的类似函数,我们实际上可以声明如下类型
using color3f = std::array<GLfloat, 3>;
必须调用data()
成员才能转换为指针
为什么我不只是使用color3f=GLfloat[3]
声明一个像这样的普通数组类型,它不需要调用data()
成员?因为普通数组有一些缺点,例如,您不能简单地将一个数组分配给另一个数组,如blue2=blue代码> 只使用变量blue?给我一个错误“无法将'blue'(type'main()::color')转换为type'const unsigned char*”你能给我们展示一下试图使用变量'blue'的代码吗?在函数中定义类型不是很有用,由于您不能在该函数之外使用它们。这取决于尝试在何处传递它-使用新编辑的代码-是的,您不能这样做-您需要使用与您传递的变量类型匹配的函数,或者至少有一种转换为该类型的方法-只需使用变量blue?给我一个错误“无法转换'blue'(type'main()::color')键入“const unsigned char*”您能告诉我们尝试使用变量“blue”的代码吗?在函数中定义类型不是很有用,由于您不能在该函数之外使用它们。这取决于尝试将其传入的位置-使用新编辑的代码-是的,您不能这样做-您需要使用与您传入的变量类型匹配的函数,或者至少有转换为该类型的方法