opengl视图矩阵_心形线四个图像

opengl视图矩阵_心形线四个图像今天我们开始学习Opengl编程。在学习之前,我们要开始配置Opengl,我这里使用的是VS2010,语言是C++。Opengl是C++的一个拓展包,用来进行计算机图形方面的编程。Opengl实用工具库(OpenglUtilityTooklit,GLUT)是独立于窗口系统的工具包,可以隐藏不同窗口系统API所带来的复杂性。所以这里我们首先要去下载freeg

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
今天我们开始学习Opengl编程。


在学习之前,我们要开始配置Opengl,我这里使用的是VS2010,语言是C++。
Opengl是C++的一个拓展包,用来进行计算机图形方面的编程。Opengl实用工具库(Opengl Utility Tooklit, GLUT)是独立于窗口系统的工具包,可以隐藏不同窗口系统API所带来的复杂性。
所以这里我们首先要去下载
freeglut,然后具体配置可以参看网页:http://blog.csdn.net/dayeshisir/article/details/7433631。

配置好环境,就开始学习如何使用Opengl编程。
第一步就是要导入glut.h头文件。我们今天要绘制的是心形线,通过查阅资料可以获取其参数方程:
x=
a*(2*sin(t)-sin(2*t))
y=
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);
}
下一步是设置回调函数display。
首先我们先定义一个参数方程里的常数a使得最终绘制出的心能够在窗口里。
然后我们调用glClear函数来清除颜色缓冲区(
GL_COLOR_BUFFER_BIT),还记得我们在初始化函数里设定的RGBA颜色值吗?这里就是用当前的缓冲区清除值来清除指定的缓冲区。
下一步调用glColor*函数是用来指定下面我们绘制的点、线、面是什么颜色,函数里有三个参数,分别代表
red、green、blue的强度值,大小从0.0-1.0。我们这里要绘制红色的心,所以把red强度设为1,其余两个设为0。
下面就到了最关键的环节,就是绘制图像。我们只需要在g
lBegin()和glEnd()函数里设置我们所需要绘制的点,然后在glBegin参数里使用
GL_POLYGON,即为画凸多边形(为什么设为
GL_POLYGON?
因为当我们所画的点足够多的时候,就能够近似看做曲线),而后Opengl会把glBegin和glEnd里面所有绘制的点依次相连然后填充其内部,就得到了我们所需要绘制的心形线。
最后glFlush是强制完成绘图操作,相当于刷新的功能,这样我们的绘制部分就完成啦!

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();
}

最后就是编写主函数。我们知道C++的主函数里包含了两个参数argc和argv,这里我们在初始化GLUT的时候也要用到。
首先我们初始化GLUT,调用glutInit函数,里面包含两个参数即为主函数的两个参数。
然后我们初始化显示模式,调用
glutInitDisplayMode,里面有三个参数,分别为
GLUT_SINGLE(单缓冲),
GLUT_RGB(RGBA颜色模式),
GLUT_DEPTH(带有深度缓冲区)
而后我们定义窗口大小,使用
glutInitWindowSize,里面两个参数分别为窗口的宽和高。
定义窗口位置,使用
glutInitWindowPosition,里面两个参数分别为窗口左上角的屏幕位置。
创建窗口,使用
glutCreateWindow,里面的参数为窗口的标题。
调用初始化函数init。
glutDisplayFunc函数是GLUT用来绑定回调
函数display,当GLUT窗口里的内容需要重新显示时,通过
glutDisplayFunc注册的那个回调函数就会被执行
最后,必须使用glutMainLoop来启动程序,所有已经创建的窗口将会在这里显示,对这些窗口的渲染也将开始生效。
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;
}

到这里所有的工作就做完啦~下面是运行出来的结果:

opengl视图矩阵_心形线四个图像

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181255.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一些基本数字图像处理算法

    一些基本数字图像处理算法一些基本数字图像处理算法所有的图像算法都在DIPAlgorithm类中,并且所有算法都为抽象成员函数。我已经按照java注释规范为所有方法添加使用说明注释,具体实现可见于DIPAlgorithm.java,这里只做算法说明。1图像扭曲模仿PS的扭曲功能,通过建立一个三角形映射网格实现对图像的扭曲。如上图,一共设置了45个控制点围成74个三角形网格扭曲即形变处理其实是寻找一个函数,以所…

    2022年5月13日
    42
  • 去除字符串中的双引号「建议收藏」

    去除字符串中的双引号「建议收藏」str为“123”如果一个双引号:str1=str.replace(“\””,””).replace(“\””,””);如果不确定有多少个双引号:str2=str.replace(/\”/g,””);此方法为替换,也可用于去除制定字符,如:Stringstr=”12/3″;str1=str.replace(“\/”,””);str2=str.replace(/\//g,

    2022年5月23日
    50
  • JAVA异或运算符_java位运算符详解

    JAVA异或运算符_java位运算符详解目录目录性质应用举例其他用途示例异或是一种基于二进制的位运算,用符号XOR或者^表示,起运算法则是对运算符两侧数的每一个二进制位同值则取0,异值则取1.简单理解就是不进位加法,如1+1=0,0+0=0,1+0=1.性质1、交换律2、结合律(即(a^b)^c==a^(b^c))3、对于任何数x,都有x^x=0,x^0=x4、自反性AXORBXORB=

    2022年10月4日
    2
  • 计算机管理的事件id,事件查看器7035是什么意思_windows事件查看器常见ID代码含义详解…「建议收藏」

    计算机管理的事件id,事件查看器7035是什么意思_windows事件查看器常见ID代码含义详解…「建议收藏」windows系统事件查看器7035是什么意思呢?windows事件查看器有一个事件ID,这个事件ID由不同的数字表示,比如7035、7036、6005、6006等等,不同的数字代表不同的含义。大部分用户不知道事件查看器ID表示什么含义,这边系统城小编为大家整理分享windows事件查看器常见的事件ID所代表的含义。一、Windows事件查看器打开方法:方法一:右键计算机/此电脑/我的电脑—管理—…

    2025年6月7日
    2
  • 敏捷开发和瀑布式开发模式有何区别(瀑布,敏捷 devops)

    软件开发模式对比(瀑布、迭代、螺旋、敏捷)1、瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型, 瀑布式开发是一种老旧的计算机软件开发方法。瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 瀑布式的主要的问题是它的严格分级导致

    2022年4月14日
    121
  • 安装 | MATLAB2018a (64位) 安装教程及安装包下载链接「建议收藏」

    安装 | MATLAB2018a (64位) 安装教程及安装包下载链接「建议收藏」博主github:https://github.com/MichaelBeechan博主CSDN:https://blog.csdn.net/u011344545安装包下载链接:内附MATLAB从入门到精通视频教程全17讲链接:https://pan.baidu.com/s/12NM-hWPhXg8mFhdoGbpv7A提取码:1i4x链接:https://pan.baidu…

    2022年6月12日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号