重複の可能性:
オープンGL:-四辺形の塗りつぶし部分
Gl開発を始めて、プレイヤーのエネルギーレベルを表示したいゲームを開発するのは初めてです。四辺形の一部を塗りつぶしたいのですが。
Plzは、一部が塗りつぶされているq四辺形を作成するのに役立ちますか?
重複の可能性:
オープンGL:-四辺形の塗りつぶし部分
Gl開発を始めて、プレイヤーのエネルギーレベルを表示したいゲームを開発するのは初めてです。四辺形の一部を塗りつぶしたいのですが。
Plzは、一部が塗りつぶされているq四辺形を作成するのに役立ちますか?
OpenGLでいくつかの簡単なヘルスバーを作成しました。最初のものはあなたが求めたものであり、他のものは楽しみのためでした:)
説明のために、すべてのコードは古いOpenGLにあります。関数は、ヘルスを0から1までの数値として受け取り、Y軸を中心としてy=0で高さ1.0の正方形を描画します。スクリーンショットは、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();
}
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();
}
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();
}
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();
}
glColor4f(r,g,b,a);
glBegin(GL_QUADS);
glVertex2d(-R,-1.0);
glVertex2d(R,-1.0);
glVertex2d(R,1.0);
glVertex2d(-R,1.0);
glEnd();
これは、必要な色のクワッドを描画する例です。jsutは、glVertex2dのパラメーターをクワッドの端点に置き換えます。エネルギーレベルバーを作成するには、背景のクワッドを1つ描画し、その中にクワッドを描画して、塗りつぶされた部分を表します。座標を使用して、内側のクワッドのサイズを制御します。
動的長さの1つではなく、2つの四角形を作成できます。
アイデアを得るにはこれで十分だと思います。