问题标签 [opengl-es-lighting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2668 浏览

iphone - 什么是 DOT3 照明?

我的问题的回答表明 DOT3 光照可以帮助 OpenGL ES 渲染,但我很难找到关于什么是 DOT3 光照的正确定义。

编辑 1

非常感谢 iPhone 相关信息。

0 投票
2 回答
3570 浏览

iphone - OpenGL ES Light 问题

我是 OpenGL ES 的新手,正在为 iPhone 开发 Objective-C。

我想了解的是光是如何定位在我的视锥体中的。我就是这样做的:

我创建了一个正方形并将其作为我的平截头体中的“地板”。我把灯放在地板中间,就在上面,把灯的方向指向正下方。现在,我希望地板上的光圈位于中间。但事实并非如此,它更靠后(更远)。怎么会?

这不应该使光环位于地板中间而不是稍微向后定位吗?

这是我的重要代码:

设置视图:

和绘图:

另外,我认为改变

伯德变黑了,没有光照在上面。为什么,我只是把灯移近了两步……?如果我像这样将它移开两步,也会发生同样的事情:

非常感谢任何有助于“阐明”我的问题的帮助!(忍不住……;))

提前致谢!

0 投票
1 回答
1065 浏览

c++ - opengl中的街灯和阴影?

为了使场景街道照明,我尝试了点光源,使用了 glMaterial 和环境光。

我得到了一个完全照亮的场景,而不是完全像路灯那样的方式,任何人都可以分享资源或解释我是如何实现这一目标的吗?

我在网上浏览了很多轻资源,无法正确理解。

0 投票
1 回答
7524 浏览

iphone - 将自己的结构传递给opengl es 2.0着色器

我想尝试 OpenGL ES 2.0 Programming Guide 一书中的照明示例。在着色器中,他们制作了两个结构。

他们还根据这些结构制作了两件制服。

问题是,我不知道如何将自己的结构传递到实际的着色器中。

我想在我的主代码中创建相同的结构并将对象传递到着色器中。这怎么可能?

问候尼古拉斯

0 投票
1 回答
2097 浏览

android - 添加glEnable(GL_COLOR_MATERIAL)时OpenGL ES(Android)立方体禁用照明?

这可能是一个非常简单的问题,我只是不明白。我想在立方体上照明,但有些面有不同的颜色。以下代码生成一个没有光照但只有一个黑色面的立方体:

取消注释 glEnable(GL10.GL_COLOR_MATERIAL) 会导致没有黑色面的发光立方体。我怎样才能得到一个黑色的发光立方体?

0 投票
1 回答
2798 浏览

math - 为什么我的 GLSL 着色器照明会随着它所照射的对象在场景中移动?

我正在学习关于 OpenGL ES 2.0 的教程,并将它与我找到的关于GLSL 照明的教程结合起来,使用 developer.apple.com 上的一个方便的犹他茶壶

经过大量的摆弄和实验,我在屏幕上适度正确地绘制了茶壶,围绕所有三个轴旋转,照明教程中的“卡通阴影”工作。由于我只是将整个顶点列表绘制为三角形条带,因此几何中有一些小故障(如果您查看 teapot.h 文件,我应该开始新的三角形条带的地方嵌入了“-1”,但这是仅测试数据,与我的问题无关)。

我真正感到困惑的是如何在场景中定位灯光。在我的 Objective-C 代码中,我有一个包含 {0,1,0} 的浮点3向量,并将其传递给着色器,然后计算光的强度。

为什么灯光在场景中似乎也在移动?我的意思是,光线就像是用一根看不见的棍子固定在茶壶上一样,无论茶壶朝向哪个方向,它总是指向茶壶的同一侧。

这是顶点着色器

“位置”由 Obj-C 代码设置,是对象的顶点,“法线”是来自顶点数组 (VBO) 的法线列表,“投影”和“模型视图”的计算方式如下:

(CC3GLMatrix 来自 Cocos3D 库,在上面链接的 GLES 教程中提到)

我通过做设置场景中的灯光

片段着色器看起来像这样

在尝试解决这个问题时,我遇到了引用(GLES 中不存在)“gl_LightSource”和“gl_NormalMatrix”的代码,但不知道将什么放入等效项中,我必须从我的代码中传递给着色器。对“眼睛空间”、“相机空间”、“世界空间”等的引用令人困惑,我知道我可能应该在它们之间进行转换,但不明白为什么或如何(以及在​​代码中或着色器中的位置) ?)

每一帧都需要修改光源吗?我设置它的代码看起来太简单了。我并没有真正移动茶壶,是吗,而是我在移动整个场景——光线和四周?

0 投票
1 回答
1855 浏览

iphone - 将结构数组传递给 OpenGL ES 2.0 着色器

我想实现某种照明。我正在制作一个结构,它在顶点着色器中包含光源属性:

在我的应用程序中,我想要几个光源。所以我说:

然后我怎样才能从应用程序加载这些制服?这是一个好方法还是更好:

0 投票
1 回答
542 浏览

ios - GLSL ES 将顶点剪辑到远平面

我在我的 iPhone 上玩弄影子音量,如果影子音量上限被远平面夹住,则一切正常。

由于gl_ClipVertex在 GLSL ES 中不可用,我如何将其剪辑gl_Position.z到远平面?我已经尝试使用gl_Position.z = gl_Position.w,但结果是错误的,阴影体积似乎跟随相机方向。还有其他方法吗?

0 投票
2 回答
3088 浏览

android - OpenGL ES 1.1 奇怪的光照问题

我正在研究我在 Android 上使用 OpenGL 照明时遇到的一个有趣问题。我正在开发一个 3D 查看器,您可以在其中添加和操作 3D 对象。您还可以设置具有不同属性的灯光。我的查看器面临的问题是来自灯光(它是点光源)的 3D 对象上的高光表现异常。如果光源与相机位于完全相同的点,则高光将向您预期的相反方向移动。(因此,如果您将对象移动到左侧,突出显示也会移动到对象的左边缘,而不是我所期望的右侧。)

亮点在左下角,而我希望它在右侧

因此,为了进一步缩小问题范围,我创建了一个仅渲染正方形的小型示例应用程序,然后我围绕相机位置(原点)旋转该正方形,这也是放置灯光的位置。这应该会导致所有方块都直接面向相机,这样它们就会被完全突出显示。结果看起来像这样:

灯光

会不会是因为投影导致边框变形而出现这些伪影?

在第一张图像中,球体和相机之间的距离约为 20 个单位,球体的大小约为 2。如果我将光线移近物体,高光看起来会好很多,正如我所期待的那样. 在第二幅图像中,正方形所在的半径为 25 个单位。我在 Android 3.1 上使用 OpenGL ES 1.1(因为我一直在努力让它与 ES 2.0 中的着色器一起工作)

这是我正在使用的一些代码:

我在开始时设置灯光,当活动开始时(在 onSurfaceCreated 中)以及每次我绘制正方形时的材质。

0 投票
1 回答
731 浏览

opengl - 是否可以在不声明表面法线的情况下使用 OpenGL 照明?

是否可以在不声明表面法线的情况下声明对象的照明?

我愿意做的步骤是:

够了吗,还是我必须把 glNormal 也放在那里?