计算机图形软件(三)6-4 使用GLUT进行显示窗口管理

news2024/11/19 3:19:51

 使用GLUT进行显示窗口管理


        我们从使用简化的、最少的操作来显示一个图开始。使用 OpenGL 实用库的第一步是初始化GLUT。该初始化函数也能处理任何命令行变量,但不需要在第一个示例程序中使用参数。完成GLUT初始化的语句是
glutInit (&argc,argv);
        接着,需要说明的是显示窗口在创建时要给定一个标题。这是用下列语句实现的:glutCreateWindow ("An Example OpenCL Program");这里的单一变量可以是用做显示窗口标题的任意字符串。
        下面,我们需要指定显示窗口中要显示什么内容。为此,使用 OpenGL函数创建一个图并将图的定义传递给GLUT函数glutDisplayFunc,即将图赋给显示窗口。作为一个例子,假定我们在称为lineSegment的过程中已经有了线段的OpenGL描述程序。则调用下列函数就将线段描述送到显示窗口:

        glutDisplayFunc (lineSegment);
        但是显示窗口还未出现在屏幕上。我们需要使用另一个GLUT函数来完成窗口处理操作在执行下列语句后,所有已创建的显示窗口连同其中的图形内容将被激活:
        glutMainLoop ();
        该函数必须是程序中的最后一个。它显示初始图形并使程序进入检查鼠标或键盘等设备输入的无穷循环之中。我们的第一个例子不是交互式的,所以程序仅仅显示其中的图形直到显示窗口关闭。在后面的几章里,我们将考虑怎样修改 OpenGL程序,使之能处理交互输人。尽管我们创建的显示窗口有默认的位置和大小,但还是可以使用另外的 GLUT 函数来设定这些参数。glutInitwindowPosition 可用来给出显示窗口左上角的初始位置。该位置使用以屏幕左上角为原点的整数坐标来表示。例如,下面的语句指定了显示窗口左上角应该在屏幕左边界向右50个像素屏幕上边界之下100像素的位置上:
        glutInitWindowPosition (50,100);
        类似地,glutInitwindowsize 函数用来设定显示窗口的初始宽度和高度的像素数。因此要指定一个宽度为400像素、高度为300像素(如图3.2所示)的显示窗口相应的语为glutInitWindowSize (400.300):
在显示窗口已出现在屏幕上之后,我们可重新设定它的位置和大小。

                图3.2位于相对于视频监视器左上角的(50100)位置的400 x300 显示窗口
        我们还可以使用glutInitDisplayMode函数来设定显示窗口的缓存和颜色模型等选项该函数的变量使用符号化 GLUT 常量来赋值。例如下面的命令指出显示窗口使用单个缓存且使用由红、绿、蓝(RCB)三元素组成的颜色模型来选择颜色值:

  glutInitDisplayMode (GLUT_SINGLEGLUT RGB):

传送给该函数的常量值利用逻辑或操作组合起来。实际上,单缓存和 RGB 颜色模型是默认的选项。但现在使用该函数是为了强调要使用这些选项来设定我们的显示。后面将会更详细地讨论颜色模型及动画应用的双缓存和观察三维场景的参数选项等其他显示选项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/962253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14 mysql bit/json/enum/set 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 bit/json/enum/set 类类型的相关…

Kafka环境搭建与相关启动命令

一、Kafka环境搭建 点击下载kafka_2.11-2.3.1.tgz文件链接 1、上传kafka_2.11-2.3.1.tgz,解压kafka_2.11-2.3.1.tgz,得到kafka_2.11-2.3.1文件夹 1)上传 #使用mobaxterm将 kafka_2.11-2.3.1.tgz 传入tools文件夹 #用下面代码进入tools文件…

seq2seq与引入注意力机制的seq2seq

1、什么是 seq2seq? 就是字面意思,“句子 到 句子”。比如翻译。 2、seq2seq 有一些特点 seq2seq 的整体架构是 “编码器-解码器”。 其中,编码器是 RNN,并将 最后一个hidden state(隐藏状态)【即&…

nacos闪退、密码修改等通用问题

问题1:nacos闪退 解决方案:通常是jdk环境变量配置有问题,nacos获取不到环境变量所以闪退。因为nacos的启动文件会获取JAVA_HOME,如果配置的不对,会直接闪退。如图所示,nacos启动文件最开始就是获取环境…

Rust 学习笔记(持续更新中…)

一、 编译和运行是单独的两步 运行 Rust 程序之前必须先编译,命令为:rustc 源文件名 - rustc main.rs编译成功之后,会生成一个二进制文件 - 在 Windows 上还会生产一个 .pdb 文件 ,里面包含调试信息Rust 是 ahead-of-time 编译的…

CleanMyMac X和腾讯柠檬清理功能对比区别介绍

Mac电脑的清理软件款式多样,不同软件之间的功能和清理效果各不相同,那么大家的Mac都用什么清理软件呢?小编看了一篇Mac清理软件介绍的知乎,里面大部分评论用户推荐的主要是两款清理软件:CleanMyMac和腾讯柠檬清理软件。…

Linux挖矿程序清除

1. 找到挖矿进程 2.找到病毒的文件地址 ls -l /proc/进程ID/exe3.删除文件命令 rm -rf 文件地址4.杀死挖矿进程 kill -9 进程ID

【教学类-35-01】学号+姓名+班级(描字帖)A4一页

背景说明: 本学期我带机动班,其中大4班去的频率比较高,与是我用大四班的名单做了一份 “描字帖”,在9月1日第一天见面时,孩子们用记号笔描字帖时,我也可以对这些孩子初步混个眼熟(聪明的&#x…

0基础学习VR全景平台篇 第95篇:VR实景智慧导航操作手册

一、实景导航前期准备工作及点位采集 (一)实景导航前期准备工作 (1)拍摄设备 1.推荐相机:全画幅的佳能 Canon EOS​ 5D Mark IV 2.搭配镜头:原厂的佳能 Canon EF卡口 8-15mm 全画幅鱼眼镜头 3.三角架 …

基于鱼鹰算法优化的BP神经网络(预测应用) - 附代码

基于鱼鹰算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于鱼鹰算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.鱼鹰优化BP神经网络2.1 BP神经网络参数设置2.2 鱼鹰算法应用 4.测试结果:5.Matlab代码 摘要…

【JavaEE进阶】Spring事务和事务传播机制

文章目录 一. 什么是Spring事务二. Spring中事务的实现1. Spring编程式事务2. 声明式事务2.1 trycatch下事务不会自动回滚的解决方案2.2 Transactional 作用范围2.3 Transactional 参数说明2.4 Transactional 工作原理 三. 事务的隔离级别1. 事务的四大特性2. Spring中设置事务…

15 mysql tiny/meidum/long blob/text 的数据存储

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 tiny/medium/long blob/text 类…

基于电气特征分析(ESA)的状态监测是如何实现的?

在现代工业和生产环境中,设备的正常运行和高效性对于维持生产的连续性和质量至关重要。然而,设备的故障和损坏可能会导致生产中断、不必要的维修成本以及生产效率的下降。为了应对这些挑战,状态监测技术已成为工业界的重要工具之一&#xff0…

C++之std::search应用实例(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Redis数据结构总结

Redis 是一款开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis 支持多种类型的数据结构,如字符串(String)、哈希(Hashes)、列表(Lists)、集合&…

45、springboot 文件上传到指定磁盘路径 及 上传成功后的文件回显

需求: 写一个文件上传的功能,把文件上传到指定的文件夹。 然后上传成功后的文件回显 ★ Spring Boot对文件上传提供的自动配置支持 Spring Boot的文件上传自动配置主要由 MultipartAutoConfiguration 和 MultipartProperties 两个类组成。MultipartPro…

linux并发服务器 —— 多线程并发(六)

线程概述 同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域; 进程是CPU分配资源的最小单位,线程是操作系统调度执行的最小单位; Linux环境下,线程的本质就是进程; ps -Lf pid&…

【方案】基于视频与AI智能分析技术的城市轨道交通视频监控建设方案

一、背景分析 地铁作为重要的公共场所交通枢纽,流动性非常高、人员大量聚集,轨道交通需要利用视频监控系统来实现全程、全方位的安全防范,这也是保证地铁行车组织和安全的重要手段。调度员和车站值班员通过系统监管列车运行、客流情况、变电…

MySQL数据库——多表查询(3)-自连接、联合查询、子查询

目录 自连接 查询语法 自连接演示 联合查询 查询语法 子查询 介绍 标量子查询 列子查询 行子查询 表子查询 自连接 通过前面的学习,我们对于连接已经有了一定的理解。而自连接,通俗地去理解就是自己连接自己,即一张表查询多次。…

Python小知识 - 一致性哈希算法

一致性哈希算法 一致性哈希算法(Consistent Hashing Algorithm)是用于解决分布式系统中节点增减比较频繁的问题。它的思想是,将数据映射到0~2^64-1的哈希空间中,并通过哈希函数对数据进行映射,计算出数据所在的节点。当…