用OpenGL绘制国旗出现了一点问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:13:24
我用OpenGL来绘制一面五星红旗,下面是我的完整代码,但是绘制五角星的地方有点问题,绘出来的居然不是五角星,郁闷死我了,看了一个早上都没有发现到底是什么问题,哪位大侠帮帮忙,我加分~~
#include "stdafx.h"

#include "GL/glut.h"
#include "math.h"
#define PI 3.141592653589793238462643383279

void Rectangle (void)
{

glPolygonMode(GL_FRONT, GL_FILL);

glBegin(GL_POLYGON);
glColor3f(1.0,0,0);
glVertex2f(0.8,0.5);
glVertex2f(-0.8,0.5);
glVertex2f(-0.8,-0.5);
glVertex2f(0.8,-0.5);
glEnd();

}

void BigStar(void)
{
float d=0.1;
float d0=d*sin(PI/10)/cos(PI/5);
float x0=-0.58;
float y0=0.25;

glPolygonMode(GL_FRONT, GL_FILL);

glBegin(GL_POLYGON);
glColor3f(1.0,1.0,0);
glVertex2f(x0,y0+d);
//就是这行出问题了,都画不出这个凹角,但是我怎么看都看不出有什么问题。
glVertex2f(x0+d0*cos(3*PI/10),y0+d0*sin(3*PI/10));
glVertex2f(x0-d*cos(PI/10),y0+d*sin(PI/10));
glVert

gl_polygon 只能画 凸多边形,

凹多边形 请 分解后再画

下面是 我改的程序
PS: 我这是偷懒的做法, 不要用来画凹多边形, opengl 不保证渲染正确, 虽然 在下面的程序 画的是对的

#include "stdafx.h"
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glut32.lib")

#include "GL/glut.h"
#include "math.h"
#define PI 3.141592653589793238462643383279

void Rectangle (void)
{

glPolygonMode(GL_FRONT, GL_FILL);

glBegin(GL_POLYGON);
glColor3f(1.0,0,0);
glVertex2f(0.8,0.5);
glVertex2f(-0.8,0.5);
glVertex2f(-0.8,-0.5);
glVertex2f(0.8,-0.5);
glEnd();

}

void star(float x0,float y0,float d)
{
float d0=d*sin(PI/10)/cos(PI/5);

glPolygonMode(GL_FRONT, GL_FILL);

glColor3f(1.0,1.0,0);

glEnable(GL_POLYGON_SMOOTH);
glBegin(GL_POLYGON);

//就是这行出问题了,都画不出这个凹角,但是我怎么看都看不出有什么问题。
glVertex2f(x0+d0*co