2013-05-12 120 views
1

我在C++中关注OpenGL的xoax.net教程,并且我坚持使用for循环在美国国旗中绘制条纹。我只是得到一个蓝色屏幕(因为我将背景色设置为蓝色)。下面是“DrawStripes”函数的代码:在OpenGL中绘制条纹(C++)

void DrawStripes() { 
for (int x = 0; x < 13; ++x) { 
    if (x % 2 == 0) { 
     glColor3f(204/255, 0, 0); 
    } else { 
     glColor3f(1, 1, 1); 
    } 

    float fStartX = 0; 
    float fEndX = 1; 
    float fStartY = x * (1/13); 
    float fEndY = (x + 1) * (1/13); 

    if (x > 5) { 
     fStartX = .76/1.9; 
    } 
    glBegin(GL_QUADS); 
    glVertex3f(fStartX, fStartY, 0); 
    glVertex3f(fEndX, fStartY, 0); 
    glVertex3f(fEndX, fEndY, 0); 
    glVertex3f(fStartX, fEndY, 0); 
    glEnd(); 
    } 
} 

(我已经把这个功能在“画”功能,所以它不只是我不告诉它使用的功能) 任何想法?

--- --- EDIT 这里是 '绘制' 和 '初始化' 的功能:

void Draw() { 
glClear(GL_COLOR_BUFFER_BIT); 
    DrawStripes(); 
    glFlush(); 
} 

void Initialize() { 
glClearColor(0.0, 0.0, 0.5, 0.0); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); 
} 
+0

什么问题?你用这段代码得到了什么样的结果? – olevegard 2013-05-12 20:36:04

+0

正如我在问题中所说,我只是得到一个蓝色屏幕(因为我将背景颜色设置为蓝色) – Dan299 2013-05-12 20:38:28

+0

发布更多代码。你如何设置模型视图投影矩阵? – 2013-05-12 20:40:42

回答

5

1/13在C 0 ++。去过也做过。对于你想使用1.0f/13.0f的浮点常量。

+1

好的。另外'204/255'将得到值0,所以颜色将变成黑色而不是红色。 – 2013-05-13 11:52:43

+0

您只需要有一个浮点操作数:1/13。足够。 – alecail 2013-05-17 18:03:41

+0

比对不起更安全。 – 2013-05-17 19:05:45