openGL多边形内填充

编程入门 行业动态 更新时间:2024-10-27 10:29:28

openGL<a href=https://www.elefans.com/category/jswz/34/1760301.html style=多边形内填充"/>

openGL多边形内填充


#include<stdlib.h>

#include<gl/glut.h>
#include<math.h>




const double two_pi=3.1415926*2; //定义圆周率pi
GLsizei winwidth=400,winheight=400; //定义框架长宽
GLuint reghex;
class screenPT //对所调用数据进行实例化
{
private:
GLint x,y;
public:
screenPT()
{
x=y=0;
}
void setcoods(GLint xcoord,GLint ycoord)
{
x=xcoord;
y=ycoord;
}
GLint getx() const
{
return x;
}
GLint gety() const
{
return y;
}
};
static void init(void)
{
screenPT hexvertex,circctr;
GLdouble theta;
GLint k;
circctr.setcoods(winwidth/2,winheight/2);
glClearColor(1.0,1.0,1.0,0.0);
reghex=glGenLists(1);
glNewList(reghex,GL_COMPILE);
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
for(k=0;k<6;k++) //利用FOR循环的方法绘制一个正六边形,改变K的值可以改变多边形
{
theta =two_pi*k/6.0;
hexvertex.setcoods(circctr.getx()+150*cos(theta),circctr.gety()+150*sin(theta));
glVertex2i(hexvertex.getx(),hexvertex.gety());
}
glEnd();
glEndList();
}
void reghexagon(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glCallList(reghex);
glFlush();
}
void winreshapefcn(int newwidth,int newheight)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble) newwidth,0.0,(GLdouble) newheight);
glClear(GL_COLOR_BUFFER_BIT);
}


void main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,100);
glutInitWindowSize(winwidth,winheight);
glutCreateWindow("000");
init();
glutDisplayFunc(reghexagon);
glutReshapeFunc(winreshapefcn);
glutMainLoop();

}

资源下载地址:

更多推荐

openGL多边形内填充

本文发布于:2024-02-25 07:38:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1698253.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多边形   openGL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!