问题标签 [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 投票
1 回答
354 浏览

java - 我在 JOGL 中编写了一个 CAD 程序,效果很好,直到我放入 glu 二次曲线,然后灯光关闭

我编写了 CAD 软件(Protocase Designer),它运行良好。除了在 ATI 卡上它一直崩溃的地方。理论上,显示列表已被弃用,也许 ATI 卡不完全支持它们,我决定用顶点缓冲区对象替换显示列表。我大部分时间都在工作,但是当我输入以下代码时,由于某种原因,照明变得一团糟。有谁知道为什么?我将代码放在顶点缓冲区对象的渲染之前还是之后都没有关系。

任何想法为什么?这并没有弄乱显示列表版本。我正在渲染的是一个使用 glu 镶嵌器的带有孔的外壳。

谢谢!

0 投票
1 回答
1399 浏览

opengl - 使用 GLSL 着色器 + 光照/法线

我有这个不再那么小的基于图块的游戏,这是我的第一个真正的 OpenGL 项目。我想将每个图块渲染为 3D 对象。所以一开始我创建了一些对象,比如一个立方体和一个球体,为它们提供了顶点法线,并在即时模式下用平面着色渲染它们。但是由于我每个级别有 10.000 个对象,所以速度有点慢。所以我将顶点和法线放入 VBO。

那就是我遇到第一个问题的地方:在使用 VBO 之前,我只是为每个对象push()编辑和编辑矩阵,并使用/将它们放置在我的场景中。但是当我对 VBO 做同样的事情时,灯光开始表现得很奇怪。而不是相机后面的固定照明位置,灯光似乎随着我的物体旋转。当绕着它们转 180 度时,我只能看到一个影子。pop()glTranslateglRotate

所以我做了一些研究。我找不到针对我的具体问题的任何答案,但我读到,应该实现着色器并为它们提供统一矩阵,而不是使用glTranslate/ 。glRotate

我想“也许这也可以解决我的问题”并实现了第一个小型顶点着色器程序,它只会稍微拉伸我的对象,只是想看看我是否可以在关注细节之前让着色器工作。

好吧,我的对象被拉伸了——但现在 OpenGL 的平面着色被破坏了。我只是得到白色的阴影。而且我找不到任何有用的信息。所以我有几个问题:

  • 我一次只能使用一个着色器,而当使用我自己的着色器时,OpenGL 的平面着色被关闭了吗?那么我必须自己实现平面阴影吗?

  • 我的向量法线呢?我在某处读到,有一些类似于正常矩阵的东西。也许我在修改顶点时也必须对我的法线应用操作?

0 投票
3 回答
2935 浏览

opengl - GLSL 固定功能片段程序替换

当使用 OpenGL 固定函数管道进行顶点设置时,片段程序看起来如何与固定函数顶点设置兼容?我想这通常取决于光源和纹理层等的数量。例如,一个简单的非纹理单光源 goraud 着色片段程序看起来如何取代 GL 的固定功能着色器?

0 投票
2 回答
3695 浏览

opengl - 静态几何体的全局照明

我一直在尝试寻找一种合适的全局照明技术,最好基于 OpenGL 或 GPGPU,来照亮具有静态物体和动态光源的室外场景(它是一个城市模型)。它不需要非常详细或准确,但它应该相当简单,并且如果可能的话,迭代和精炼(这样我可以显示中间结果)。

我在互联网上找到的最佳匹配是光线追踪、预计算辐射转移 (PRT) 和辐射。

光线追踪对于我的应用程序来说太慢了。PRT 似乎太复杂并且具有巨大的预计算步骤,并且辐射性似乎太慢,我不确定它是否可以实现多线程。

有谁知道更好的技术或上述问题的解决方法?

0 投票
1 回答
1225 浏览

opengl - 如何在opengl中用灯光旋转我的对象

在我的代码中,我无法根据对象设置照明坐标,因此我无法将照明固定在移动的对象上。我怎样才能用物体移动灯光

我有一个位于 0,0,-15 位置的对象,当我按下左上右下按钮时,这个对象随着作为羔羊对象的光而移动。然而,虽然我将 light(lamb object) 放置在 0,0,-15 位置并将 move_x 和 move_z 坐标作为 light 的位置,但灯光出现在不同的位置,并且与我的对象没有链接。这是我的代码:

0 投票
1 回答
4507 浏览

java - Java/lwjgl 中的 OpenGL 光照问题

我在 Java/lwjgl 中创建了一个带有旋转立方体的场景。如果我启用照明,无论我将光源放在哪里,我都会得到一个逼真的行为,就好像光源在相机位置一样。

这是我初始化openGL的方法:

当我开始渲染时,调用了这段代码:

这绘制了立方体。我认为法线是正确的,至少在我的测试中,将它们反转会阻止绘制脸部。

我在照明方面做错了什么?

编辑:有关错误的其他信息

当我将灯光位置数组的最后一个值设置为 0 时,整个场景都是黑色的。将其设置为任何其他值,光会按照描述从视口中出来。环境光不会改变任何东西,当光源不工作时,我要绘制的立方体保持黑暗。我试图将照明的东西放在代码中的其他位置,例如直接GLU.gluPerspective(70, 4f / 3f, 1, 10000);在行之后,或者放到循环中,而不改变任何描述的效果。

0 投票
1 回答
5898 浏览

c# - XNA - 3D 游戏 - 为所有模型应用灯光

我想制作一个带有 3D 图形的 XNA 游戏,我想知道一件事。假设我Model的场景中有 10 秒,我想用相同的光源来绘制它们,比如定向光。现在我知道Models 有Effects 和Effects 有照明信息等等。我的问题是,如何将相同的光源应用于场景中的所有模型,而不是每个模型都有自己的光源?有人告诉我,如果我离基地很远。

0 投票
1 回答
747 浏览

c++ - OpenGL - 光照值和位置

这就是我声明我的光值及其位置的方式

这是正确的还是有另一种更正式的方式?

0 投票
1 回答
592 浏览

graphics - 图形管道中的平面着色

我被要求分析 3d 照明的平面着色模型并“讨论它如何集成到图形管道中”。

在此处输入图像描述

由于每个面都应用了一次平面着色,所以我认为计算光的正确位置是片段计算的阶段。但是我也可能完全错了......

有人可以指出我正确的方向吗?

0 投票
1 回答
779 浏览

opengl - Opengl:如何在 opengl 中指定照明的方向矢量?

这对我来说根本没有意义,但无论如何,假设我们有这个:

你猜怎么着?光线指向上方,而不是像我想要的那样指向下方。很不直观。为什么opengl 设计者决定这样做?