【发布时间】:2014-12-05 00:48:21
【问题描述】:
我已经编写了使用 OpenGL 的 GL_POLYGON 原始模式绘制多边形的代码。我将输入点作为数组提供。这是我的代码:
#include <GL/freeglut.h>
#include <GL/gl.h>
#include <iostream>
using namespace std;
int Np;
double X[1000];
double Y[1000];
void init1()
{
glOrtho(-250.0, 250.0, -250.0, 250.0, -250.0, 250.0);
}
void func4()
{
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
for (int i = 0; i < Np; i++) {
glVertex2f(X[i], Y[i]);
}
glEnd();
glFlush();
}
int main(int argc, char ** argv)
{
cin >> Np;
for (int i = 0; i < Np; i++) {
cin >> X[i] >> Y[i];
}
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutInitWindowPosition(50, 50);
glutCreateWindow("Polygon");
glutDisplayFunc(func4);
glutMainLoop();
return 0;
}
上面的代码几乎没有为每个输入提供所需的输出。代码有什么问题?
例如,我使用以下输入进行测试:
4
-100 -100
-100 0
100 100
100 -100
我希望这会在黑色背景上围绕窗口中心绘制一个有 4 个顶点的白色多边形。
【问题讨论】:
-
你知道多边形必须是凸的吗?你的样本是,但它是一个失败的例子吗?
-
我尝试了更多示例,例如:3 -50 0 0 50 50 0 对于这种情况,它不会打印任何内容。
-
您没有为任何地方的顶点设置颜色。您的多边形的颜色可能与您的清晰颜色相同,这会使它看起来好像没有绘制任何内容。您可以使用 glColor3f(r,g,b) 设置一次或每个顶点的颜色。
标签: c++ opengl graphics polygons