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相关推荐

  1. OpenGL聚光灯实现注解

    #version 430 coreuniform vec4 Ambient; //环境光uniform vec3 LightColor; //聚光灯颜色 uniform vec3 LightPosit ...

  2. Avoiding 16 Common OpenGL Pitfalls(避免 16 个常见的 OpenGL 陷阱)

    前言 避免 16 个常见的 OpenGL 陷阱原文 Avoiding 16 Common OpenGL Pitfalls Copyright 1998, 1999 by Mark J. Kilgard ...

  3. 【OpenGL】光照太阳系

    一.要求 二.思路 0.效果图 1.实现基本的太阳系 采用局部变换的思路完成,实现太阳.地球.月亮及轨道的绘制 2.宇宙中加入一盏泛光(方向光) 加入思路: 1)设置好物体的法向 在这里可以不进行设置 ...

  4. OpenGL完整教程专栏完整目录

    OpenGL完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:OpenGL完整教程 数量:314篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去的博文, ...

  5. 用JavaScript玩转计算机图形学(二)基本光源

    上一篇介绍了简单的光线追踪,凑合了临时用的光源去渲染效果.这次将讲解三种基本光源,及一些背景理论.过分简化的教材和现成API(OpenGL/Direct3D等)可能会做成一些错误理解.在此,希望文章能 ...

  6. Three.js入门

    Three.js的核心五步就是: 1.设置three.js渲染器 2.设置摄像机camera 3.设置场景scene 4.设置光源light 5.设置物体object 1.设置three.js渲染器 ...

  7. html怎么导入js编辑,three.js怎么导入html

    用户:骑士的素材火 2016年11月18日 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生 ...

  8. 【three.js详解之一】入门篇

    开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的原生接口从这款框架入手是一个不错的选择. ...

  9. 在canvas上实现3D效果

    访问地址:http://www.cnblogs.com/shawn-xie/archive/2012/08/16/2642553.html <!DOCTYPE html> <html ...

  10. threejs 三面体_three.js初探,立体几何入手(一)

    前言:首先先推荐一篇博客,关于webgl原理,讲的非常之通俗易懂了 图解WebGL&Three.js工作原理  webGL可以理解为openGL ES2.0 (webGL2.0 - openG ...

最新文章

  1. 《中国人工智能学会通讯》——2.2 智能汽车人机交互与人机协同技术
  2. 弹出提示对话框并重定向网页
  3. 外联接、自联接与联合
  4. 12016.xilinx裸机开发
  5. 美工设计灵感|常见的电商页面如何设计?
  6. 介绍一份数据分析报告
  7. THUSC2016 游记
  8. php匹配ubb,php创建属于自己的UBB代码
  9. 高中计算机考试编程题,高中信息技术《算法及程序设计》试题.docx
  10. Windows文件所有者恢复TrustedInstaller权限
  11. Python for循环倒序遍历列表
  12. 【C++笔试强训】第三天
  13. 在bluehost如何使用WHM面板和ssh链接添加附加IP
  14. Windows下配置PHP环境
  15. 小知识(1):关于端口的复用及重映射
  16. win7安装centOS双系统超详细(转)
  17. TFN T3000A万兆以太网测试仪参数性能评测
  18. Scrapy爬虫框架 启动几种方式
  19. 移动卡无限GPRS上网方法
  20. 交易猫闲鱼跳转APP源码

热门文章

  1. 十万条评论告诉你《流浪地球》的1星都是谁打的?
  2. ubuntu 7.04 硬盘安装与安装后的常用软件的安装与配置 [zz]
  3. Vivado调试相关
  4. vivo手机支持html,vivo手机也能刷门禁了,只有这三款手机支持,教你如何开通使用...
  5. 网络web渗透工程师-教你怎么喝着茶,把甲方爸爸的活干了。
  6. 获取拼音-pinyin.js
  7. 刷题汇总(一)leetcode 精选50题 JavaScript答案总结
  8. ps快速把图片背景色变成透明图片
  9. python打包成独立exe_用PyInstaller把Python代码打包成单个独立的exe可执行文件
  10. python5.0完整版