OpenGL(二)之使用GLUT进行显示窗口管理

1.在VS2013中建立一个OpenGL工程

选择File->New->Project,然后选择Win32 Console Application,选择一个名字,然后按OK。

在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。

然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c来作为文件结尾。

搞定了,就跟平时的工程没什么两样的。

2.第一个OpenGL程序

  

 1 //GLUT的头文件
 2 //本来OpenGL程序一般还要包含<GL/gl.h>和<GL/glu.h>,但GLUT的头文件中已经自动将这两个文件包含了,不必再次包含
 3 #include <glut.h>
 4
 5 void myDisplay(void)
 6
 7 {
 8     //表示清除颜色
 9     glClear(GL_COLOR_BUFFER_BIT);
10
11     //画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标
12     glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
13
14     //保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)
15     glFlush();
16
17 }
18
19 //带命令行参数的main函数
20 int main(int argc, char *argv[])
21
22 {
23     //以glut开头的函数都是GLUT工具包所提供的函数
24
25     //对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。其格式比较死板,一般照抄这句glutInit(&argc, argv)就可以了
26     glutInit(&argc, argv);
27
28     //设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜 色)。
29     //GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)
30     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
31
32     //设置窗口在屏幕中的位置
33     glutInitWindowPosition(100, 100);
34
35     //设置窗口的大小
36     glutInitWindowSize(400, 400);
37
38     //根据前面设置的信息创建窗口。参数将被作为窗口的标题
39     //注意:窗口被创建后,并不立即显示到屏幕上。需要调用glutMainLoop才能看到窗口
40     glutCreateWindow("第一个OpenGL程序");
41
42     //每当GLUT确定一个窗口的内容需要重新显示时,通过glutDisplayFunc() 所注册的那个回调函数就会被执行
43     //应该把重绘场景所需要的所有代码都放在这个显示回调函数里。
44     glutDisplayFunc(&myDisplay);
45
46     //所有已经创建的窗口将会在这时显示,对这些窗口的渲染也开始生效
47     //事件处理循环开始启动,已注册的显示回调函数被触发。一旦进入循环,它就永远不会退出。
48     glutMainLoop();
49
50     return 0;
51
52 }

该程序的作用是在一个黑色的窗口中央画一个白色的矩形。具体情况请看注释~~

这就是简单的第一个OpenGL程序~~

时间: 2024-10-29 19:13:26

OpenGL(二)之使用GLUT进行显示窗口管理的相关文章

计算机图形学(二)输出图元_19_显示窗口重定形函数

OpenGL显示窗口重定形函数 在介绍性的OpenGL程序中,我们讨论了建立初始显示窗口的函数.但是在生成图形后,常需要用鼠标将显示窗口拖到屏幕的另一位置或改变其形状.改变显示窗口的尺寸可能改变其纵横比并引起对象形状的改变. 为了允许对显示窗口尺寸的改变做出反应,GLUT库提供下面的函数: glutReshapeFunc(winReshapeFcn); 该函数可和其他GLUT函数一起放在程序的主过程中,它在显示窗口尺寸输入后立即激活.该GLUT函数的变量是接受新窗口宽度和高度的过程名.我们可以接

OpenGL的GLUT事件处理(Event Processing)窗口管理(Window Management)函数[转]

GLUT事件处理(Event Processing)窗口管理(Window Management)函数 void glutMainLoop(void) 让glut程序进入事件循环.在一个glut程序中最多只能调用一次.一旦调用,会直到程序结束才返回. int glutCreateWindow(char* name); 产生一个顶层的窗口.name 作为窗口的名字,也就是窗口标题栏显示的内容. 返回值是生成窗口的标记符,可用函数glutGetWindow()加以引用. int glutCreate

[图形学]Chapter 8.4 OpenGL 二维观察函数——视口

这节有几个显示窗口的控制函数,可以调整视口,创建子窗口,最小化为图标,设置图标名称,隐藏显示等. gluOrtho2D (xwmin, xwmax, ywmin, ywmax); // 定义二维裁剪窗口 glViewport(xvmin, yvmin, vpWidth, vpHeight); // 指定视口参数 其中,视口内的显示坐标由gluOrtho2D定义.如下例: 显示窗口为600*300,屏幕被glViewPort分割成4个视口,每块是300*150每个视口里的坐标是由glOrtho2D

OpenCV入门:(二:加载,显示,修改以及保存图片)

目标: 1.从图片文件打开图片(imread) 2.显示图片(namedWindow和imshow) 3.转换当前图片为灰色图片(cvtColor) 4.保存图片(imwrite) 代码: #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/opencv.hpp> #include <iostream> using namespac

Android实例-手机安全卫士(三十九)-自定义吐司(文本格式、显示窗口)

一.目标 自定义显示的吐司,包括内容文本格式.显示窗口格式. 二.代码实现 1.在“显示号码归属地”服务类(ShowPhoneAddService)中自定义吐司方法(取名myToast(String sting)),参数string为需要显示的字符串(注:本例中只需要使用自定义的吐司来显示号码归属地,其他地方不使用,因此在类中创建方法).在自定义方法中(myToast): (1)通过new TextView(Context context)方法定义一个TextView对象(取名view),参数c

Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activity组件在启动之后,并且在它的窗口显示出来之前,可以显示一个启动窗口.这个启动窗口可以看作是 Activity组件的预览窗口,是由WindowManagerService服务统一管理的,即由WindowManagerService服务负责 启动和结束.在本文中,我们就详细分析WindowManag

WPF编程,指定窗口图标、窗口标题,使得在运行状态下任务栏显示窗口图标的一种方法。

原文:WPF编程,指定窗口图标.窗口标题,使得在运行状态下任务栏显示窗口图标的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/87966584 WPF默认的窗口,如果采用默认的标题与图标,运行状态下在任务栏中显示的图标就比较难看~ 如果要更改在任务栏的显示图标,需要设定窗口的Icon属性.这里给出一种方法. 方法一.前台指定? 1)添加图片到项目中 2)在窗口属性中设置icon 方法二.

Directshow 通过 put_Owner 指定显示窗口后,自动刷新问题

在Directshow中,我们可以对render指定显示窗口,在写程序的过程中, 发现通过put_Owner设置的显示窗口存在自动刷新问题,譬如窗口被遮挡然后再次露出时,被遮挡部分不能自动刷新,需要拖动窗口进行刷新. 网上搜索了一下,找到了解决问题的办法: http://blog.csdn.net/lemon_wei/archive/2008/02/29/2132195.aspx 具体处理方法: 假设图象窗口的picture控件id为IDC_FRAME_VIEW,     pViewWindon

【温故而知新】Javascript窗口效果 (全屏显示窗口、定时关闭窗口)

1.全屏显示窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="