2019独角兽企业重金招聘Python工程师标准>>>

基本的OpenGL语法

  • OpenGL基本函数库用来描述图元、属性、几何变换、观察变换和进行许多其他的操作。
  • OpenGL基本库中的函数名要以gl为前缀,并且函数名中每一个组成词的第一个字母要大写。
  • OpenGL函数也要求专门的数据类型。OpenGL采用专门的内置数据类型名来描述数据类型。
  • 每个数据类型名以大写字母GL开头,名字中其余部分是用小写字母表示的标准数据类型名。

相关库

  • OpenGL实用函数提供了一些例程,可以设置观察和投影矩阵,利用线条和多边形近似法来描述复杂对象,使用线性近似法显示二次曲线和样条曲线,处理表面绘制操作。
  • 为了使用OpenGL建立一个图形,首先必须在视频屏幕上设置显示窗口。我们不能直接使用基本的OpenGL函数来创建显示窗口,因为该库中只有与设备无关的函数,并且窗口管理操作依赖于所用的计算机。
  • OpenGL的X窗口系统扩充提供了一组以glx为前缀的函数。
  • OpenGL实用函数工具包(GLUT)提供了与任意屏幕窗口系统进行交互的函数库。GLUT库函数以glut为前缀,该库中包含了描述与绘制二次和样条曲线及曲面的方法。

头文件

  • 存取WGL函数的头文件是windows.h
  • 如果我们使用GLUT处理窗口管理操作,就不需要引入gl.h和glu.h。我们可以使用以下头文件:
  • 在Apple OS X系统中,头文件引入语句是

使用GLUT进行显示窗口管理

  • 使用OpenGL实用库的第一步是初始化GLUT。该初始化函数也能任何命令行变量。
  • 完成GLUT初始化的语句是
  • 需要说明的是显示窗口在创建时要给定一个标题。
  • 使用OpenGL函数创建一个图并将图的定义传递给GLUT函数glutDisplayFunc,即将图赋给显示窗口。
  • 利用下列函数,所有已创建的显示窗口连同其中的图形内容将被激活。它显示初始图形并使程序进入检查鼠标或键盘等设备输入的无穷循环之中。
  • glutInitWindowPosition可用来给出显示窗口左上角的初始位置,该位置使用以屏幕左上角为原点的整数坐标来表示。
  • glutInitWindowSize函数用来设定显示窗口的初始宽度和高度的像素数。
  • 我们可以使用glutInitDisplayMode函数来设定显示窗口的缓存和颜色模型等选项。该函数的变量使用符号化GLUT常量赋值。

一个完整的OpenGL程序

  • 将显示窗口的背景颜色设定为白色,可以使用OpenGL函数:
  • 该函数前面的三个变量将红、绿、蓝三个颜色分量设定为1.0。glClearColor函数的第四个参数称为指定颜色的alpha值。alpha值为0.0表示完全透明的对象,而alpha为1表示不透明的对象。
  • glClearColor命令将某颜色赋给显示窗口,但它不能让显示窗口在屏幕上出现。glClear可以使赋值的窗口得到显示。
  • 变量GL_COLOR_BUFFER_BIT是一个OpenGL符号常量,用来指定它是颜色缓存中的位值。该缓存将使用glClearColor函数中指定的值来设定。
  • glColor函数的后缀3f表示我们在指定三个RGB颜色分量时使用浮点数。
  • 我们可以使用下面两个函数来设置投影类型和其他观察参数:
  • 这表示使用正投影将世界坐标系二维矩阵区域的内容映射到屏幕上,区域的x坐标值从0.0到200.0,y坐标值从0.0到150.0。只要是在该矩形内定义的对象,都会在显示窗口中。
  • GLU函数gluOrtho2D定义了显示窗口以(0.0,0.0)为左下角,以(200.0,150.0)为右上角。
  • 要调用合适的函数来建立线段。下面的程序定义了一个从整数笛卡儿端点坐标(180,15)到(10,145)的二维直线段。
  • 函数glFlush强制执行由计算机系统存放在缓存中不同位置的OpenGL函数,其位置依赖于OpenGL的实现。glFlush将强制清空所有缓存来处理OpenGL函数。

OpenGL的错误处理

  • 当OpenGL发现在对基本库子程序或GLU子程序的一次调用中有错误时,就在内部记录一个出错编码,而造成出错的子程序被忽略。
  • 一旦出现一个出错编码,在你的程序明确查询OpenGL出错状态之前不会再记录另外的出错编码:
  • 该调用返回当前的出错编码并清楚内部出错标志。如果返回的值等于OpenGL符号常数GL_NO_ERROR,则什么事也没有。
  • OpenGL出错编码

转载于:https://my.oschina.net/liyangke/blog/2252212

计算机图形软件---OpenGL简介相关推荐

  1. 计算机图形学 学习笔记 计算机图形软件

    目录 坐标表示 图形功能 软件标准 OpenGL简介 基本OpenGL语法 相关库 一个完整的OpenGL程序 OpenGL出错处理 总结 图形软件有两个大类:专用软件包和通用编程软件包. 专用图形软 ...

  2. Android系统的软件OpenGL介绍以及移植

    一. 简介 Android从很早之前就给出了软件OpenGL的实现,主要应用场景还真不在于代替GPU来实现UI的绘制,它主要目的是让芯片厂商在GPU驱动还没集成之前带起系统. 先讲下软件OpenGL为 ...

  3. 计算机图形学及OpenGL简介摘记

    计算机图形学(Computer Graphics)是研究怎样用计算机表示.生成.处理和显示图形的一门学科.图形的具体应用范围很广,但是按基本的处理技术划分只有两类.一类是线条,如工程图.地图.曲线图表 ...

  4. IDE之EcliPse:EcliPse软件的简介、安装、入门、使用方法之详细攻略

    IDE之EcliPse:EcliPse软件的简介.安装.入门.使用方法之详细攻略 目录 EcliPse软件的简介 Eclipse特点 EcliPse软件的安装 EcliPse软件的入门 1.快捷键集合

  5. Computer:屏幕录像专家软件的简介、安装、使用方法之详细攻略

    Computer:屏幕录像专家软件的简介.安装.使用方法之详细攻略 目录 屏幕录像专家软件的简介 屏幕录像专家软件的安装 1.安装图文教程 (1).安装主软件 (2).安装lxe播放器 屏幕录像专家软 ...

  6. OpenGL基础2:OpenGL简介

    小朋友你是否有很多问号,不知道为什么需要这么多复杂的方法,也不知道为什么要这么设计,更不知道仅仅显示一个点都那么复杂,后面3D游戏中的那么精美的表现是否离自己很远很远--要不,再来一起看看openGL ...

  7. 康博(COMPUWARE)软件公司简介

    一.康博(COMPUWARE)软件公司简介  美国康博软件公司成立于1973年,是世界五大独立软件供应商之一.康博软件公司是世界上最著名的提供应用软件全生命周期技术的公司.它为全球计算机用户的应用系统 ...

  8. 全新CorelDRAW2023最新版矢量图软件功能简介

    CorelDRAW2023简介 :设计绘画 CorelDraw 是一个绘图与排版的软件,它广泛地应用于商标设计.标志制作.模型绘制.插图描画.排版及分色输出等诸多领域. 作为一个强大的绘图软件,它被喜 ...

  9. 《FLUENT 14.0超级学习手册》——第2章 FLUENT软件介绍2.1 FLUENT软件特点简介

    本节书摘来自异步社区<FLUENT 14.0超级学习手册>一书中的第2章,第2.1节,作者: 唐家鹏 更多章节内容可以访问云栖社区"异步社区"公众号查看. 第2章 FL ...

最新文章

  1. s4-2 ALOHA 协议
  2. TeamViewer密码存储
  3. 使用 GraalVM 将纯 JavaFX 项目打包成 EXE
  4. 夺命雷公狗---微信开发39----微信语言识别接口1
  5. ES5-15 数组基础、数组方法、数组排序
  6. android studio 导入依赖报错——Could not find com.xxx,(# fields: 66338 > 65536)
  7. mysql or全表_mysql or条件可以使用索引而避免全表
  8. 密码学常用的算法填充模式_密码学的操作模式
  9. 一文搞懂浏览器同源策略
  10. MYSQL中日期与字符串间的相互转换
  11. python打开浏览器的三种方法
  12. springboot实现数据库读写分离的一款框架
  13. 判断点在多边形内(射线法)
  14. 基于STM32的超声波HC-SR04和红外测距模块测量距离的实验对比(HAL库)
  15. CMAQ-5.2安装及测试数据运行
  16. ioi2020集训队作业_IOI2020集训队作业
  17. 漫话最短路径(二)--bellman-Ford(贝尔曼-福特)算法
  18. 数据挖掘#特征工程(二)特征重要性及可解释性总结
  19. python爬虫(6)——Selenium的使用
  20. linux shell脚本

热门文章

  1. 数据库文档生成数据库脚本工具
  2. 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
  3. 面向对象精要-理解对象
  4. jsonArray转换成List
  5. 通过onActivityResult()先跳转到联系人界面,然后把传回来的手机号显示到应用的EditText上...
  6. 浅谈C++的virtual 动态绑定。
  7. java中HashMap详解
  8. [转] iOS中@class #import #include 简介
  9. 使用 Maven 执行 java main class(java应用程序)
  10. 【转】细数中国十大名校的IT牛人