OpenGL编程指南13:光源移动
模型视图变换移动光源
#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:光源移动相关推荐
- 《OpenGL编程指南》一第2章 着色器基础
本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...
- OpenGL编程指南7:视图-
1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...
- OpenGL编程指南5:学习绘制不同风格的曲线
1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...
- OpenGL编程指南4:双缓冲实现运行
1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...
- OpenGL编程指南3:GLUT:OpenGL使用工具库
1.前言 我们知道的,OpenGL包含了很多的渲染函数,这些函数的设计目的就是独立与任何窗口系统或操作系统.因此,他并没有包含打开窗口或者从键盘或鼠标读取事件的函数.遗憾的是,如果连最基本的打开窗口的 ...
- opengl编程指南第8版源码编译详细说明
1. 到:https://github.com/openglredbook/examples 下载完全版的源码examples-master.zip,大小有131MB左右,不要下载缩略版的,否则\bi ...
- 《OpenGL编程指南(原书第8版)》——计算着色器
原文 http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...
- 《OpenGL编程指南》一第3章 OpenGL绘制方式
本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第3章 Op ...
- 《OpenGL编程指南》一3.2 OpenGL缓存数据
本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...
最新文章
- JPPhotoBrowserDemo--微信朋友圈浏览图片
- html网页共用头部和脚部,如何在HTML不同的页面中,共用头部与尾部?_html/css_WEB-ITnose...
- MySQL-查询结果缓存
- “五心”知“五感”,平安打造有温度的智慧城市
- mysql 5.7源码包安装教程_MYSQL5.7源码包编译安装
- Chosen通用初始化
- python可视化神器_详解Python可视化神器Yellowbrick使用
- 学习android 画板源代码,Android实现画画板案例
- docker 提交自定义镜像
- 使用Beautifulsoup去除特定标签
- python close_wait_TCP time_wait close_wait问题(可能是全网最清楚的例子)
- HDU 1027 全排列
- Python-Matplotlib可视化(9)——精通更多实用图形的绘制
- SQL中使用UNION ALL一定比OR效率高吗?
- 线性代数学习笔记8-3:二次型、合同矩阵、标准型、规范型
- 微信公众号开发C#系列-1、微信公众平台注册
- K8S Ingress的安装与使用
- Go-使用wmi获取硬盘smart信息并解析
- 浏览器被恶意篡改(百分百成功)
- 关于loop unwinding