可能重複:
Open GL :- Filling portion of quadrilateral的Open GL: - 灌裝四邊形的部分顏色
我是新來的Open GL發展和開發一個遊戲,我想說明的能級的球員。我想填補一部分四邊形。
Plz幫助我創建q四邊形的一部分被填充?
可能重複:
Open GL :- Filling portion of quadrilateral的Open GL: - 灌裝四邊形的部分顏色
我是新來的Open GL發展和開發一個遊戲,我想說明的能級的球員。我想填補一部分四邊形。
Plz幫助我創建q四邊形的一部分被填充?
我在OpenGL中製作了一些簡單的健康條。第一個是你要求的,其他的則是爲了好玩:)
爲了說明方便,所有代碼都在舊的OpenGL中。這些函數將健康狀況視爲介於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();
}
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();
下面是一個繪製您想要的顏色的四邊形的示例,請用您的四邊形的端點替換glVertex2d的參數。要使能級欄簡單地繪製一個背景四邊形,然後在其中繪製一個四邊形來表示填充的部分。使用座標來控制內部四邊形的大小。
感謝您的描述建議。我喜歡離散酒吧的概念。我實施了一些修改:)。 – ni30rocks