模型视图变换移动光源

#include <vgl.h>static int spin = 0;
void init(void)
{glClearColor(0.0,0.0,0.0,0.0);glShadeModel(GL_SMOOTH);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_DEPTH_TEST);
}
void display(void)
{GLfloat position [] = {0.0,0.0,1.5,1.0};glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glPushMatrix();glTranslatef(0.0,0.0,-5.0);glPushMatrix();glRotatef((GLdouble)spin,1.0,0.0,0.0);glLightfv(GL_LIGHT0 , GL_POSITION, position);glTranslated(0.0,0.0,1.5);glDisable(GL_LIGHTING);glColor3f(0.0,1.0,1.0);glutWireCube(0.1);glEnable(GL_LIGHTING);glPopMatrix();glutSolidTorus(0.275,0.85,20,150);glPopMatrix();glFlush();
}void reshape(int w, int h)
{glViewport(0,0,(GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(40,(GLfloat)w/(GLfloat)h,1.0,20.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();
}void mouse(int button, int state, int x, int y)
{switch(button){case GLUT_LEFT_BUTTON:if( state == GLUT_DOWN ){spin = (spin+30)%360;glutPostRedisplay();}break;default:break;}
}int main(int argc, char** argv)
{glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB|GLUT_DEPTH);glutInitWindowSize(400,400);glutInitWindowPosition(200,200);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMouseFunc(mouse);glutMainLoop();return 0;
}

输出结果:

OpenGL编程指南13:光源移动相关推荐

  1. 《OpenGL编程指南》一第2章 着色器基础

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...

  2. OpenGL编程指南7:视图-

    1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...

  3. OpenGL编程指南5:学习绘制不同风格的曲线

    1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...

  4. OpenGL编程指南4:双缓冲实现运行

    1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...

  5. OpenGL编程指南3:GLUT:OpenGL使用工具库

    1.前言 我们知道的,OpenGL包含了很多的渲染函数,这些函数的设计目的就是独立与任何窗口系统或操作系统.因此,他并没有包含打开窗口或者从键盘或鼠标读取事件的函数.遗憾的是,如果连最基本的打开窗口的 ...

  6. opengl编程指南第8版源码编译详细说明

    1. 到:https://github.com/openglredbook/examples 下载完全版的源码examples-master.zip,大小有131MB左右,不要下载缩略版的,否则\bi ...

  7. 《OpenGL编程指南(原书第8版)》——计算着色器

    原文  http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...

  8. 《OpenGL编程指南》一第3章 OpenGL绘制方式

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第3章 Op ...

  9. 《OpenGL编程指南》一3.2 OpenGL缓存数据

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

最新文章

  1. JPPhotoBrowserDemo--微信朋友圈浏览图片
  2. html网页共用头部和脚部,如何在HTML不同的页面中,共用头部与尾部?_html/css_WEB-ITnose...
  3. MySQL-查询结果缓存
  4. “五心”知“五感”,平安打造有温度的智慧城市
  5. mysql 5.7源码包安装教程_MYSQL5.7源码包编译安装
  6. Chosen通用初始化
  7. python可视化神器_详解Python可视化神器Yellowbrick使用
  8. 学习android 画板源代码,Android实现画画板案例
  9. docker 提交自定义镜像
  10. 使用Beautifulsoup去除特定标签
  11. python close_wait_TCP time_wait close_wait问题(可能是全网最清楚的例子)
  12. HDU 1027 全排列
  13. Python-Matplotlib可视化(9)——精通更多实用图形的绘制
  14. SQL中使用UNION ALL一定比OR效率高吗?
  15. 线性代数学习笔记8-3:二次型、合同矩阵、标准型、规范型
  16. 微信公众号开发C#系列-1、微信公众平台注册
  17. K8S Ingress的安装与使用
  18. Go-使用wmi获取硬盘smart信息并解析
  19. 浏览器被恶意篡改(百分百成功)
  20. 关于loop unwinding

热门文章

  1. placement new 操作符
  2. LINQ系列:LINQ to SQL Exists/In/Any/All/Contains
  3. 95cloud云主机管理系统 使用手册 图片去网站看吧
  4. VIM中常用的替换模式总结
  5. 使用VS2003创建WEB程序的时候出现AutoMation服务器不能创建对象错误
  6. hdu 4991(树状数组优化dp)
  7. NYOJ 76 超级台阶
  8. NYOJ 647 奋斗的小蜗牛在请客
  9. Mysql远程无法连接
  10. oracle数据库更改字符集