opengl编程基础篇opengl中几种光照参数

肉松松鼠 肉松松鼠     2022-09-09     567

关键词:

一、定义

1.GL_AMBIENT:环境光,经过很多次反射后最终遗留在环境中的光线强度(颜色)。

2.GL_DIFFUSE:漫反射,表示光线照射到该材质上,经过漫反射后形成的光线强度(颜色)。

3.GL_SPECULAR:镜面反射,表示光线照射到该材质上,经过镜面反射后形成的光线强度(颜色)。

注:通常,GL_AMBIENT和GL_DIFFUSE都取相同的值,可以达到比较真实的效果。使用GL_AMBIENT_AND_DIFFUSE可以同时设置GL_AMBIENT和GL_DIFFUSE属性。

4.GL_SHININESS:只有一个值,称为“镜面指数”,取值范围是0到128。该值越小,表示材质越粗糙,点光源发射的光线照射到上面,也可以产生较大的亮点。该值越大,表示材质越类似于镜面,光源照射到上面后,产生较小的亮点。

5.GL_EMISSION:由四个值组成,表示一种颜色。OpenGL认为该材质本身就微微的向外发射光线,以至于眼睛感觉到它有这样的颜色,但这光线又比较微弱,以至于不会影响到其它物体的颜色。

6.GL_COLOR_INDEXE:仅在颜色索引模式下使用,由于颜色索引模式下的光照比RGBA模式要复杂,并且使用范围较小,这里不做讨论。

二、使用样例

//设置表面材料的属性
    GLfloat mat_ambient[] = {0.7f,0.7f,0.7f,1.0f};
    GLfloat mat_diffuse[] = {0.6f,0.6f,0.6f,1.0f};
    GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f};
    GLfloat mat_shininess[] = { 50.0f };
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

 

opengl编程基础篇对象的变换——用实心体绘制3d场景

1.函数介绍GLUT提供几种现成的对象,包括球体、圆锥体、圆环面、5个柏拉图立体,以及著名的茶壶。每个形状都可以作为一种线框的模型,也可以作为一种实心模型,每个面均已覆盖上材质。以下列表是用于绘制这些对象的函... 查看详情

opengles之基础光照模型的实现(代码片段)

一、OpenGLES基础光照模型OpenGLES目前还无法模拟现实世界的复杂光照效果,为了在效果要求和实现难度之间做一个平衡,往往采用一些简化的模型来模拟光照效果。冯氏光照模型(PhongLightingModel)便是其中常用的一个光照模型,... 查看详情

opengl编程基础篇世界窗口和视口

...行)的窗口,这个世界窗口外的部分被裁减并不被绘制。OpenGL会自动地做剪裁。视口:在显示器的屏幕窗口上定义一个对齐的矩形的视口,OpenGL会自动建立世界窗口和视口的变换(包括缩放和平移)。当世界窗口中所有对象都被... 查看详情

opengl编程基础篇与鼠标的交互

当用户按下或释放鼠标按钮、按下按钮时移动鼠标或按下和松开键盘按键时,就会产生一个相关事件。程序员可以用每类事件注册一个回调函数,例如使用如下函数:glutMouseFunc(myMouse):利用按下或释放鼠标按钮时发生的事件来注... 查看详情

从零开始写一个opengl渲染器——基础设施搭建篇

基于OpenGL书《计算机图形学编程(使用OpenGL和C++)》中的描述,已经可以在屏幕上输出物体了。但是代码复用的比较多,所以要把复用的代码封装成类,方便后期的维护。先从原始代码中抽象出3个类:窗口类,相机类和控制器类... 查看详情

opengles光照效果

一个立方体光照模型环境光散射光镜面光为了演示光照效果,在前面学习过的内容基础上我们首先创建一个立方体,同时为了看起来直观一些,这个立方体每个面采用中心为白色,周围红色的渐变方案,不然看上去同样的颜色混... 查看详情

基于qt的opengl可编程管线学习-使用subroutine绘制不同光照的模型

使用Subroutine在shader中封装不同的函数,在CPU端选择调用那个函数效果如下图所示650)this.width=650;"src="https://s5.51cto.com/wyfs02/M01/97/72/wKiom1kueWvDpG2mAABjiJqvPoc568.jpg-wh_500x0-wm_3-wmp_4-s_1464959810.jpg"title="qt_opengl_ 查看详情

opengl:光照模型视图投影变换

OpenGL:光照、模型视图投影变换OpenGL光照模型视图投影变换数学基础程序库配置程序图示代码shaderwrapperhvertexshadermvp_testvsfragmentshadermvp_testfragreferences数学基础矩阵与线性变换坐标系变换深入探索透视投影变换OpenGLNormalVectorTran... 查看详情

opengl场景中加光照包含几个步骤,各个步骤实现用的函数是啥?

Opengl场景中加光照包含几个步骤,各个步骤实现用的函数是什么?这两个问题回答清楚就行了,不用说别的。粘贴的一律无视。主要分三步:设置光源参数、开启光照、设置法线信息。  1.设置光源参数。通过多次调用带有不... 查看详情

opengl光照

 前面代码:https://files.cnblogs.com/files/zach0812/zcb202007121246.zip颜色:资料:https://learnopengl-cn.github.io/02%20Lighting/01%20Colors/  查看详情

OpenGL中的光照问题

】OpenGL中的光照问题【英文标题】:LightingissueinOpenGL【发布时间】:2009-06-1202:58:48【问题描述】:我在开发OpenGL应用程序时遇到问题。奇怪的是,我和我的一个朋友正在Linux下使用OpenGL开发3d场景,并且存储库中有一些代码,但... 查看详情

计算机图形学(opengl):基础光照

参考技术A本文同时发布在我的个人博客上:https://dragon_boy.gitee.io  光往往不来源于单一的光源,而是多个光源将光线散射到我们周围。光线可以散射和四处反射,这样会直接或间接影响物体的颜色。基于这种理论的算法... 查看详情

opengles着色语言-光照效果之散射光

  OpenGL光照模型,在固定管线中,主要是调用OpenGL函数实现,如果使用着色器,该怎么实现。本文的例子是移植OpenGL4.0ShadingLanguageCookbook中第二章的例子。代码已经移植到Android上。  散射光计算主要涉及到两个向量... 查看详情

问题理解 OpenGL 中的光照

】问题理解OpenGL中的光照【英文标题】:IssueUnderstandingLightinginOpenGL【发布时间】:2011-11-1102:13:49【问题描述】:我在理解光照在OpenGL中的工作原理时遇到了一些问题(尤其是理解预定义变量。在某处是否有它们的列表?)。我... 查看详情

OpenGL:如何解决 Cube 的光照问题?

】OpenGL:如何解决Cube的光照问题?【英文标题】:OpenGL:HowtoresolvethelightingproblemofCube?【发布时间】:2020-04-0202:58:34【问题描述】://VerticesinformationGLfloatvertices[]=1,1,1,-1,1,1,-1,-1,1,1,-1,1,//(front)1,1,1,1,-1,1,1,-1,-1,1,1,-1,//(right)1, 查看详情

opengl学习脚印:blinn-phong光照模型

...码可以在我的github下载。本节内容整理自:1.www.learnopengl.com2.Blinn-PhongModelPhong 查看详情

OpenGL 光照着色器

】OpenGL光照着色器【英文标题】:OpenGLLightingShader【发布时间】:2018-04-1617:21:57【问题描述】:我无法理解OpenGL中较小着色器的概念。它是如何工作的?例如:我是否需要创建一个着色器用于在空间中定位对象,然后为另一个着... 查看详情

✠opengl-7-光照(代码片段)

目录光照模型光源材质ADS光照计算公式汇总实现ADS光照Phong反射模型自转与绕轴旋转(mMat*rMat!=rMat*mMat)法向量变换用到『逆转置矩阵』Blinn-Phong反射模型结合光照与纹理补充说明光照模型最常见的光照模型称为“ADS”模型:... 查看详情