#include <GL/glut.h>
#include <stdlib.h>void display(void)
{glClearColor(0.0, 0.0, 0.0, 0.0); //背景黑色glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 1.0, 1.0); //画笔白色glLoadIdentity();  //加载单位矩阵gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);/*眼睛在(0.0,0.0,5.0)处,望向(0.0,0.0,0.0),后面的三个参数(0.0,1.0,0.0),y轴为1,其余为0,表示脑袋朝上*///1.修改gluLookAt的后三个参数设置为(0.0,-1.0,0.0),即y轴为-1,其余为0,表示脑袋向下,即人眼倒着看//2.修改gluLookAt的后三个参数为(1.0,0.0,0.0);x轴为1,其余为0.即人的脑袋像右歪90度来看,即顺时针转90度(那么,茶壶则逆时针转90度)//3.若修改gluLookAt(0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0);则看到的茶壶是怎样?//4.如果没有调用gluLookAt(),那么照相机设置为默认的位置和方向。默认情况下,照相机位于原点,指向z轴的负方向,朝上向量为(0,1,0)。/*5.把视图变换函数gluLookAt()函数,改为模型变换函数glTranslatef(),并使用参数(0.0,0.0,-5.0)。这个函数的效果和使用gluLookAt()函数的效果是完全相同的,gluLookAt()函数是通过移动照相机(使用视图变换)来观察;glTranslatef()函数是通过移动茶壶(使用模型变换)来观察。注:在二维屏幕上,向右是x轴正方向,向右为正,向上是Y轴正方向,垂直于屏幕的方向是Z轴方向,从屏幕里往外为正z方向,即指向视点(人眼)方面*/glutWireTeapot(2);//画一个线框茶壶//glutSwapBuffers();glFlush();
}void reshape(int w, int h)
{glViewport(0, 0, (GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();//gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);//透视投影glFrustum(-5.0f, 5.0f, -5.0f, 5.0f, 5.0f, 20.0f);//透视投影//glOrtho(-5,5,-5,5,1.0,20.0);//如此设置,当改变窗体尺寸时,茶壶会变形//if (w <= h)//    glOrtho(-5.0f, 5.0f, -5.0f * h / w, 5.0f * h / w, 1.0f, 20.0f);///*定义修剪区函数//void glOrtho(Gldouble left,Gldouble right,Gldouble bottom,Gldouble top,Gldouble near,Gldouble far)//其中left和right指定x轴的最小和最大坐标值,bottom和top用于y轴,而near和far用于z轴//*///else//    glOrtho(-5.0f * w / h, 5.0f * w / h, -5.0f, 5.0f, 1.0f, 20.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();//gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}int main(int argc, char** argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(500, 500);glutInitWindowPosition(100, 100);glutCreateWindow("观察变换与投影变换");glutDisplayFunc(display);glutReshapeFunc(reshape);glutMainLoop();return 0;
}

opengl 观察变换与投影变化 水壶 (学习笔记-仅供参考)相关推荐

  1. opengl光照效果的三棱锥+键盘上下左右控制旋转(学习笔记-仅供参考)

    #include <windows.h> #include <gl/gl.h> #include <gl/glut.h> #include<stdio.h&g ...

  2. MySQL个人学习笔记-仅供参考

    简介 数据库的作用:数据存储 数据库本质上就是个文件系统,而且存储的数据可以实现持久化存储 DBS:->数据库系统:由数据库.数据库管理员.数据库管理系统构成 DBMS:->数据库管理系统 ...

  3. RewriteCond指令格式(个人学习笔记仅供参考)

    RewriteBase指令显式地设置了目录级重写的基准URL. RewriteCond指令格式 [说明]定义重写发生的条件 [语法]RewriteCond TestString CondPattern ...

  4. 教你如何使用android studio 4.0发布release 版本 学习记录 仅供参考

    教你如何使用android studio 4.0发布release 版本 学习记录 仅供参考 这是老师给我们布置的任务,我在这里做一个简单的总结,话不多说,直接上图上步骤吧 首先,在菜单栏中,点击 B ...

  5. SSRF 攻击PHP-FPM(FastCGI 攻击):学习总结仅供参考

    利用条件: Libcurl版本:高于7.45.0 PHP-FPM:监听端口,版本高于5.3.3 知道目标机器上任意一个php文件绝对路径 一.FastCGI fastcgi其实是一个通信协议,和HTT ...

  6. hive学习(仅供参考)

    hive搭建 Hive 什么是hive Hive的优势和特点 hive搭建 解压.改名 修改环境变量 添加hive-site.xml 将maven架包拷贝到hive 替换一下gua包 使环境变量生效 ...

  7. 单链表操作2-单链表A拆分成奇数和偶数值单链表B和C(个人学习笔记,仅供参考)

    单链表A拆分成奇数和偶数值单链表B和C 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 在一个带头结点的单链表A中,头指针为a,设计算法SplitList ( ...

  8. 单链表操作10-带头结点的单链表逆置(个人学习笔记,仅供参考)

    带头结点的单链表逆置 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 设计算法Reverse( ),将带头结点的单链表A逆置,要求利用原有链表的链点,最后输出 ...

  9. opengl 设置每个点的颜色_OpenGL学习笔记(四)着色器

    本文为学习LearnOpenGL的学习笔记,如有书写和理解错误还请大佬扶正: 教程链接: 着色器 - LearnOpenGL CN​learnopengl-cn.github.io 一,基础概念 1, ...

最新文章

  1. js便利json 数组的方法
  2. 1 个闭环 + 1 个案例,为你解读实现数据驱动的秘诀
  3. java mongo 获取所有数据库_Spring Batch —从XML读取并写入Mongo
  4. maven依赖管理_依赖管理和Maven
  5. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
  6. 语音特征参数MFCC的提取过程
  7. 网页设计师必备的35套最佳图标(免费下载)
  8. javascript获取TreeView控件选中节点的Text和Value
  9. hbase put 写入数据慢_HBase运维 | HBase 疑难杂症诊治
  10. html认识数字游戏大全,认识HTML列表元素
  11. day01(计算机基本知识+JAVA基础知识+环境变量的配置+标识符命名规则+注释的分类)
  12. 音乐倒数计数器(求解答,lcd相关知识点)
  13. ios-获取相册相机图片
  14. 全世界应当普及的经典文章:另辟蹊径解读《心经》
  15. 杰理之检测linein音频输入大小(能量)的方法【篇】
  16. 计算机系优秀团员事迹,【国奖风采,榜样力量】真诚,感恩——计算机学院罗惠娴...
  17. 拓嘉启远:拼多多分时折扣是什么意思?怎样优化
  18. html原生listview,设置 ListView 及其各项的样式 (HTML)
  19. RK3568平台开发系列讲解(图像篇)BMP图像处理
  20. 内网渗透笔记——二层发现

热门文章

  1. BoW词袋模型原理学习及Python实现
  2. JS window对象详解
  3. 软件的知识产权保护---反不正当竞争法
  4. nnUnet 在windows 10 上使用
  5. 华为电视升级后不能投屏鸿蒙,更具品价比,华为智慧屏SE系列或将成年轻人心头草...
  6. 数独终结者Rev6附代码
  7. python操作excel去除单元格空格和换行
  8. 《中国互联网络发展状况统计报告》:网民规模达6.88亿
  9. 【Lintcode】1723. Shortest Path in a Grid with Obstacles Elimination
  10. 西门子SMART200PLC通讯程序集合。 根据工程实践整合200SMART支持的各种通讯,包括和第三方如开放式ISO和TCP的服务器和客户端