这节有几个显示窗口的控制函数,可以调整视口,创建子窗口,最小化为图标,设置图标名称,隐藏显示等。

gluOrtho2D (xwmin, xwmax, ywmin, ywmax); // 定义二维裁剪窗口

glViewport(xvmin, yvmin, vpWidth, vpHeight); // 指定视口参数

其中,视口内的显示坐标由gluOrtho2D定义。如下例:

显示窗口为600*300,屏幕被glViewPort分割成4个视口,每块是300*150
每个视口里的坐标是由glOrtho2D决定的,-100到100的200*200,超出视口的内容不被显示
其中原点(0,0)在视口的中心,视口之后的画点和画线都是以视口中的坐标系为准

#include <GLUT/GLUT.h>

class wcPt2D{
public:
GLfloat x, y;
}; void init (void)
{
glClearColor(0.0, 0.0, 0.0, 1.0); glMatrixMode(GL_PROJECTION);
gluOrtho2D(-, , -, ); glMatrixMode(GL_MODELVIEW);
} void triangle (wcPt2D * verts)
{
GLint k; glBegin(GL_TRIANGLES);
for(k = ; k < ; k++)
{
glVertex2f(verts[k].x, verts[k].y);
}
glEnd();
} void line (GLint x1, GLint y1, GLint x2, GLint y2)
{
glBegin(GL_LINES);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glEnd();
} void displayFcn (void)
{
wcPt2D verts [] = {{-50.0, -25.0}, {50.0, -25.0}, {0.0, 50.0}}; glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0);
line(-, , , );
line(, -, , ); glColor3f(0.0, 0.0, 1.0);
glViewport(, , , );
triangle(verts);
line(-, , , ); // 坐标突破视口则不会显示
line(, -, , ); // 视口的坐标是按glOrtho2D设置的 glColor3f(1.0, 0.0, 0.0);
glViewport(, , , );
glRotatef(90.0, 0.0, 0.0, 1.0);
triangle(verts); glColor3f(1.0, 1.0, 0.0);
glViewport(, , , );
glRotatef(-90.0, 0.0, 0.0, 1.0);
triangle(verts); glColor3f(0.0, 1.0, 1.0);
glViewport(, , , );
glRotatef(90.0, 0.0, 0.0, 1.0);
triangle(verts); glFlush();
} int main(int argc, char ** argv)
{
glutInit (&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(, );
glutInitWindowSize(, );
glutCreateWindow("Split-Screen Example"); init();
glutDisplayFunc(displayFcn); glutMainLoop();
}

https://github.com/p0e0o0p0l0e0/Computer_Graphics.git

dcce100a76dce27145ba5a633183eff4a7281667

[图形学] Chp8.4 OpenGL 二维观察函数——视口的更多相关文章

  1. Matlab绘制三维曲面(以二维高斯函数为例)

    原文地址为:Matlab绘制三维曲面(以二维高斯函数为例) 寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的 ...

  2. 一个不错的PHP二维数组排序函数简单易用存用

    一个不错的PHP二维数组排序函数简单易用存用 传入数组,传入排序的键,传入排序顺序 public function array_sort($arr,$keys,$type='asc') { $keys ...

  3. Matlab 二维绘图函数(plot类)

    plot 功能 绘制二维图形的最基本函数. 语法 //x为向量时,以x的元素值为纵坐标,x的序号为横坐标绘制曲线. //x为矩阵时,以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线. polt( ...

  4. PHP二维数组排序函数

    PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义. 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义: functi ...

  5. HDU2873 Bomb Game(二维SG函数)

    Bomb Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. PHP 二维数组排序函数的应用 array_multisort()

    <?php $arrayData = array( array("name"=>"泰山", "age"=>"23 ...

  7. OpenGL——二维几何变换

    平移.旋转.缩放的实现 #include<iostream> #include <math.h> #include<Windows.h> #include < ...

  8. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

  9. 图像的降采样与升采样(二维插值)----转自LOFTER-gengjiwen

    图像的降采样与升采样(二维插值) 1.先说说这两个词的概念: 降采样,即是采样点数减少.对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中 每行每列每隔k个点取一个点组成一幅图像.降采样很容 ...

随机推荐

  1. android 本地数据库sqlite的封装

    单机android   sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录  运行 sqlite ...

  2. 开涛spring3(6.6) - AOP 之 6.6 通知参数

    前边章节已经介绍了声明通知,但如果想获取被被通知方法参数并传递给通知方法,该如何实现呢?接下来我们将介绍两种获取通知参数的方式. 使用JoinPoint获取:Spring AOP提供使用org.asp ...

  3. 小tips:用java模拟小球做抛物线运动

    这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我 ...

  4. python之路 socket,socketsever初探

    socket的英文原义是"孔"或"插座".作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是 ...

  5. Rxjava observeOn()和subscribeOn()初探

    Rxjava这么强大的类库怎么可能没有多线程切换呢? 其中observeOn()与subscribeOn()就是实现这样的作用的.本文主要讲解observeOn()与subscribeOn()的用法, ...

  6. JSONP不支持循环调用

    问题描述 在jquery或zepto下,循环调用同一个jsonp ;i<;i++){ $.ajax({ url:'https://m.suning.com/authStatus?callback ...

  7. 微信小程序 生命周期函数详解

    微信小程序 生命周期函数 小程序中 判断当前首页是从其他页面返回,还是由入口打开 由于小程序的数据在我们退出小程序时并没有得到释放,因此再次点击开来数据依然没有变成初始化 解决方法:在小程序 data ...

  8. android studio 2.32躺坑记

    按说这是没啥记录意义的.不过作为一个偶尔用一下ADT开发安卓程序的跨界老码农,遇到一个尴尬事,现在手机已经用上安卓6了,而电脑里的ADT里SDK还是18,19.越来越多的项目是android stud ...

  9. js 实现倒计时效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  10. MySql的学习笔记

    良好的理解sql语句: 列:理解可以运算的成变量 where: 理解成表达式,放在行中看是否成立 查出来的结果可以当成一张表理解,select 套用select综合查询:   五种查询 where g ...