大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
今天我们开始学习Opengl编程。
freeglut,然后具体配置可以参看网页:http://blog.csdn.net/dayeshisir/article/details/7433631。
a*(2*sin(t)-sin(2*t))
a*(2*cos(t)-cos(2*t))
由于所以要使用sin和cos函数,所以我们导入头文件math.h。
#include <GL/glut.h>
#include <math.h>
#define PI 3.14159265358979323846
下一步是要初始化设置。
glClearColor的作用是来清除RGBA模式下的颜色缓冲区,其中的四个参数分别代表red、green、blue和alpha值。
void init()
{
glClearColor(1.0f,1.0f,1.0f,1.0f);
}
GL_COLOR_BUFFER_BIT),还记得我们在初始化函数里设定的RGBA颜色值吗?这里就是用当前的缓冲区清除值来清除指定的缓冲区。
red、green、blue的强度值,大小从0.0-1.0。我们这里要绘制红色的心,所以把red强度设为1,其余两个设为0。
lBegin()和glEnd()函数里设置我们所需要绘制的点,然后在glBegin参数里使用
GL_POLYGON,即为画凸多边形(为什么设为
GL_POLYGON?
因为当我们所画的点足够多的时候,就能够近似看做曲线),而后Opengl会把glBegin和glEnd里面所有绘制的点依次相连然后填充其内部,就得到了我们所需要绘制的心形线。
void display(void)
{
GLfloat a=0.25;
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f,0.0f,0.0f);
glBegin(GL_POLYGON);
for(GLfloat t=0;t<2*PI;t+=0.01)
{
GLfloat x=a*(2*sin(t)-sin(2*t)),y=a*(2*cos(t)-cos(2*t));
glVertex2f(x,y);
}
glEnd();
glFlush();
}
glutInitDisplayMode,里面有三个参数,分别为
GLUT_SINGLE(单缓冲),
GLUT_RGB(RGBA颜色模式),
GLUT_DEPTH(带有深度缓冲区)
glutInitWindowSize,里面两个参数分别为窗口的宽和高。
glutInitWindowPosition,里面两个参数分别为窗口左上角的屏幕位置。
glutCreateWindow,里面的参数为窗口的标题。
函数display,当GLUT窗口里的内容需要重新显示时,通过
glutDisplayFunc注册的那个回调函数就会被执行
。
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(300,300);
glutInitWindowPosition(300,300);
glutCreateWindow("Cardioid");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
到这里所有的工作就做完啦~下面是运行出来的结果:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181255.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...