【发布时间】:2013-05-12 20:35:13
【问题描述】:
我正在关注 C++ 中 OpenGL 的 xoax.net 教程,但我一直坚持使用 for 循环在美国国旗上绘制条纹。我只是得到一个蓝屏(因为我将背景颜色设置为蓝色)。这是“DrawStripes”函数的代码:
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();
}
}
(我已经把这个函数放在'draw'函数中,所以不仅仅是我没有告诉它使用这个函数) 有什么想法吗?
--- 编辑 --- 以下是“绘制”和“初始化”函数:
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);
}
【问题讨论】:
-
有什么问题?使用这段代码你会得到什么样的结果?
-
正如我在问题中所说,我只是蓝屏(因为我将背景颜色设置为蓝色)
-
发布更多代码。如何设置模型-视图-投影矩阵?
-
啊,对不起,我很快就阅读了你的问题。如果你放下for-lopp,你能画一条线吗?
-
哦,好吧,我想知道它之后的“f”是什么!谢谢 :) 做出回答,我不接受