OpenGL-聚光灯-spot
4.聚光灯
4.1 glLightModelfv()光照模型
GLfloat lmodel_ambient[]={0.2,0.2,0.2,1.0};//微弱环境光,使物体可见
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);
4.2 光源属性参数
GLfloat light1_position[]={1.0,1.0,5.0,1.0};
GLfloat light1_diffuse[]={1.0,1.0,1.0,1.0};
GLfloat light1_specular[]={1.0,1.0,1.0,1.0};
glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse);
glLightfv(GL_LIGHT1,GL_SPECULAR,light1_specular);
glLightfv(GL_LIGHT1,GL_POSITION,light1_position);
4.3 材质属性参数
GLfloat mat_specular[]={1.0,1.0,1.0,1.0};
GLfloat mat_shininess[]={128.0};
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); //指定当前材质属性 镜面反射颜色
glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); //镜面反射指数
4.4 开启聚光灯功能
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT1);
代码示例:
void init()
{GLfloat mat_specular[]={1.0,1.0,1.0,1.0};GLfloat mat_shininess[]={128.0};GLfloat lmodel_ambient[]={0.2,0.2,0.2,1.0};//微弱环境光,使物体可见glClearColor(0.0,0.0,0.0,1.0);glShadeModel(GL_SMOOTH);//GL_SMOOTH//聚光灯light1GLfloat light1_position[]={1.0,1.0,5.0,1.0};GLfloat spot_direction[]={0.0,0.0,-1.0};GLfloat light1_diffuse[]={1.0,1.0,1.0,1.0}; GLfloat light1_specular[]={1.0,1.0,1.0,1.0}; GLfloat light1_ambient[]={0.2,0.2,0.2,1.0};glLightfv(GL_LIGHT1,GL_AMBIENT,light1_ambient);glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse);glLightfv(GL_LIGHT1,GL_SPECULAR,light1_specular);glLightfv(GL_LIGHT1,GL_POSITION,light1_position);glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); //指定当前材质属性 镜面反射颜色glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); //镜面反射指数glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,50.0);//角度glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,spot_direction);//方向glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,2.0);//*/glEnable(GL_LIGHTING); glEnable(GL_LIGHT1);glEnable(GL_DEPTH_TEST);
}
实例图片:
OpenGL-聚光灯-spot相关推荐
- OpenGL聚光灯实现注解
#version 430 coreuniform vec4 Ambient; //环境光uniform vec3 LightColor; //聚光灯颜色 uniform vec3 LightPosit ...
- Avoiding 16 Common OpenGL Pitfalls(避免 16 个常见的 OpenGL 陷阱)
前言 避免 16 个常见的 OpenGL 陷阱原文 Avoiding 16 Common OpenGL Pitfalls Copyright 1998, 1999 by Mark J. Kilgard ...
- 【OpenGL】光照太阳系
一.要求 二.思路 0.效果图 1.实现基本的太阳系 采用局部变换的思路完成,实现太阳.地球.月亮及轨道的绘制 2.宇宙中加入一盏泛光(方向光) 加入思路: 1)设置好物体的法向 在这里可以不进行设置 ...
- OpenGL完整教程专栏完整目录
OpenGL完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:OpenGL完整教程 数量:314篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去的博文, ...
- 用JavaScript玩转计算机图形学(二)基本光源
上一篇介绍了简单的光线追踪,凑合了临时用的光源去渲染效果.这次将讲解三种基本光源,及一些背景理论.过分简化的教材和现成API(OpenGL/Direct3D等)可能会做成一些错误理解.在此,希望文章能 ...
- Three.js入门
Three.js的核心五步就是: 1.设置three.js渲染器 2.设置摄像机camera 3.设置场景scene 4.设置光源light 5.设置物体object 1.设置three.js渲染器 ...
- html怎么导入js编辑,three.js怎么导入html
用户:骑士的素材火 2016年11月18日 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生 ...
- 【three.js详解之一】入门篇
开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择. ...
- 在canvas上实现3D效果
访问地址:http://www.cnblogs.com/shawn-xie/archive/2012/08/16/2642553.html <!DOCTYPE html> <html ...
- threejs 三面体_three.js初探,立体几何入手(一)
前言:首先先推荐一篇博客,关于webgl原理,讲的非常之通俗易懂了 图解WebGL&Three.js工作原理 webGL可以理解为openGL ES2.0 (webGL2.0 - openG ...
最新文章
- 《中国人工智能学会通讯》——2.2 智能汽车人机交互与人机协同技术
- 弹出提示对话框并重定向网页
- 外联接、自联接与联合
- 12016.xilinx裸机开发
- 美工设计灵感|常见的电商页面如何设计?
- 介绍一份数据分析报告
- THUSC2016 游记
- php匹配ubb,php创建属于自己的UBB代码
- 高中计算机考试编程题,高中信息技术《算法及程序设计》试题.docx
- Windows文件所有者恢复TrustedInstaller权限
- Python for循环倒序遍历列表
- 【C++笔试强训】第三天
- 在bluehost如何使用WHM面板和ssh链接添加附加IP
- Windows下配置PHP环境
- 小知识(1):关于端口的复用及重映射
- win7安装centOS双系统超详细(转)
- TFN T3000A万兆以太网测试仪参数性能评测
- Scrapy爬虫框架 启动几种方式
- 移动卡无限GPRS上网方法
- 交易猫闲鱼跳转APP源码
热门文章
- 十万条评论告诉你《流浪地球》的1星都是谁打的?
- ubuntu 7.04 硬盘安装与安装后的常用软件的安装与配置 [zz]
- Vivado调试相关
- vivo手机支持html,vivo手机也能刷门禁了,只有这三款手机支持,教你如何开通使用...
- 网络web渗透工程师-教你怎么喝着茶,把甲方爸爸的活干了。
- 获取拼音-pinyin.js
- 刷题汇总(一)leetcode 精选50题 JavaScript答案总结
- ps快速把图片背景色变成透明图片
- python打包成独立exe_用PyInstaller把Python代码打包成单个独立的exe可执行文件
- python5.0完整版