我正在尝试绘制一个8位风格的游戏角色(来自Zelda的链接),因为我正在练习OpenGL。 我从他的脸开始,这是右边的大方块,并且他的眼睛是他脸部开始右边两个街区的眼睛......(6个街区,最左边的2个是眼睛)
眼睛的顶部(绿色块上方的块)应该是深绿色(参见代码),但它会继续采用第一个较大块(面部)的颜色。
我希望这是有道理的...... 请看这张图:
为了不断改变颜色,我做错了什么?
我假设我需要做更多的事情才能接受RGB颜色? glColor3f(29, 137, 59);
...
答案 0 :(得分:9)
glColor3f
接受浮点参数。通过这样做,大数字将被转换为浮点数,因此变为29.0f,137.0f和59.0f。给定的颜色在0-1范围内表示,这些颜色被限制在0-1范围内,当然,显示为白色(1.0,1.0,1.0)。
请改用glColor3ub
。它接受一个无符号字节作为其参数,其范围为0-255,这可能是您最常用的。还有其他形式,例如glColor3i
,glColor3s
,glColor3ui
,glColor3us
等接受整数和短路(以及它们的无符号变体),它们在整数和短路范围内定义。这些只是在内部转换为十进制变量(例如decimal = int / INT_MAX
)。