可能重复:
打开GL: - 四边形的填充部分
我是新手,开放Gl开发并开发一款游戏,我想展示玩家的能量水平.为此,我想填补四边形的一部分.
Plz帮助我创建q部分四边形,其中一部分被填充?
Jac*_*ker 11
我在OpenGL中制作了一些简单的健康栏.第一个是你要求的,其他的是为了好玩:)
为了说明,所有代码都在旧的OpenGL中.这些函数将health视为0到1之间的数字,并在y = 0处绘制一个高度为1.0的正方形,以Y轴为中心.屏幕截图显示了0.3,0.5和1.0的健康状况.
1)矩形的高度与健康成正比:
void drawHealth(float health) {
glBegin(GL_QUADS);
glColor3f(1, 0, 0);
glVertex2f(0, 0);
glVertex2f(1, 0);
glVertex2f(1, health);
glVertex2f(0, health);
glEnd();
}
Run Code Online (Sandbox Code Playgroud)

2)矩形的颜色与健康成正比:
void drawHealth2(float health) {
glBegin(GL_QUADS);
glColor3f(health, 0, 0);
glVertex2f(0, 0);
glVertex2f(1, 0);
glVertex2f(1, 1);
glVertex2f(0, 1);
glEnd();
}
Run Code Online (Sandbox Code Playgroud)

3)此版本创建了一种渐变.动画时看起来不错,图片并不完全正义.
void drawHealth3(float health) {
glBegin(GL_QUADS);
glColor3f(1, 0, 0);
glVertex2f(0, 0);
glVertex2f(1, 0);
glColor3f(health, 0, 0);
glVertex2f(1, health);
glVertex2f(0, health);
glVertex2f(0, health);
glVertex2f(1, health);
glColor3f(0, 0, 0);
glVertex2f(1, 1);
glVertex2f(0, 1);
glEnd();
}
Run Code Online (Sandbox Code Playgroud)

4)此版本绘制离散条.
void drawHealth4(float health) {
const int numDiv = 15;
const float sep = 0.04;
const float barHeight = 1.0/(float)numDiv;
glBegin(GL_QUADS);
glColor3f(1, 0, 0);
for(float i = 0; i < health; i += (sep + barHeight)) {
glVertex2f(0, i);
glVertex2f(1, i);
glVertex2f(1, i + barHeight);
glVertex2f(0, i + barHeight);
}
glEnd();
}
Run Code Online (Sandbox Code Playgroud)
