OpenGL阴影贴图在所有对象上均相同

汤玛士

(作业相关问题)

我正在尝试通过遵循本教程来实现阴影映射,但是,我遇到了一个奇怪的问题-我场景中的所有对象都将相同的阴影应用于它们,如下所示:(暗影虫光在-3 ,5,-3(右下)

我做错了什么?我认为这将与矩阵有关,但我不知道如何解决...

创建视图矩阵:

viewMatrix = new Matrix4f();
Matrix4f.rotate(MathHelpers.degreesToRadians(verticalRotation), new Vector3f(1f, 0f, 0f), viewMatrix, viewMatrix);
Matrix4f.rotate(MathHelpers.degreesToRadians(horizontalRotation), new Vector3f(0f, 1f, 0f), viewMatrix, viewMatrix);
Matrix4f.translate(position, viewMatrix, viewMatrix);
viewMatrix.store(cameraMatrix);
cameraMatrix.flip();

将数据发送到GPU:

Mat4 proj2 = Matrices.perspective(90, 1, 3f, 20f);
Mat4 view2 = = MathHelpers.Matrix4fToMat4(lights.get(i).getViewMatrix());
Mat4 model2 = Mat4.MAT4_IDENTITY;
Mat4 mvp = MathHelpers.biasMVP(proj2, view2, model2);
FloatBuffer matBuffer = org.lwjgl.BufferUtils.createFloatBuffer(16);
MathHelpers.Mat4ToMatrix4f(mvp).store(matBuffer);
matBuffer.flip();

深度着色器:http : //pastebin.com/SqFaBnSE http://pastebin.com/t5t35XNM

普通着色器:http : //pastebin.com/yQhqyAWc http://pastebin.com/2C2sXByz

汤玛士

所以,我最终弄清楚了。这是一个简单的逻辑错误,没有使用正确的位置。

public static void setLightUniforms(int program, Matrix4f mat) { Mat4 proj2 = Matrices.perspective(90, 1, 3f, 20f); Mat4 view2 = = MathHelpers.Matrix4fToMat4(lights.get(i).getViewMatrix()); Mat4 model2 = Mat4.MAT4_IDENTITY;

我一直在使用恒等矩阵作为位置,而不是使用要计算的模型的位置。

现在的代码是(请注意该参数的用法):

public static void setLightUniforms(int program, Matrix4f mat) { Matrix4f proj = MathHelpers.Mat4ToMatrix4f(Matrices.perspective(90, 1, 3f, 20f)); Matrix4f view = lights.get(i).getViewMatrix(); Matrix4f bias = MathHelpers.Mat4ToMatrix4f(MathHelpers.biasMatrix); Matrix4f MVP = Matrix4f.mul(proj, Matrix4f.mul(view, mat, null), null); Matrix4f.mul(bias, MVP, MVP);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

引导卡,所有尺寸均相同

来自分类Dev

所有列的结果均相同

来自分类Dev

在所有节点上投射阴影SCNLight

来自分类Dev

OpenGL中的阴影贴图

来自分类Dev

State对象中的map在所有节点上都相同吗?

来自分类Dev

使用带有延迟渲染 Opengl 3.3 的阴影贴图的问题

来自分类Dev

在所有ViewController上应用相同的逻辑

来自分类Dev

在所有线程上读取相同的结构

来自分类Dev

在所有行上强制使用相同的颜色

来自分类Dev

在所有设备上使引导箱的高度相同

来自分类Dev

OpenGL阴影贴图-阴影位置错误

来自分类Dev

如何在所有Android版本上显示支持库的ActionBar&Toolbar的阴影?

来自分类Dev

在所有视图控制器上显示对象

来自分类Dev

在所有全局对象原型上设置方法

来自分类Dev

OpenGL阴影贴图几乎可以正常工作

来自分类Dev

OpenGL Variance阴影贴图倒置衰减

来自分类Dev

QML:如何在所有菜单中添加阴影?

来自分类Dev

检查列是否在所有行上都具有相同的值

来自分类Dev

您如何强制Flutter BottomNavigationBar在所有TABS上具有相同的宽度?

来自分类Dev

附加在所有具有相同类别的div上

来自分类Dev

使用#create_list的Factory_girl,在所有创建的对象之间共享相同的关联

来自分类Dev

我想知道如何在所有新对象的类中都保持相同的库存变量?

来自分类Dev

JMH:在所有基准测试中使用相同的静态对象

来自分类Dev

SQL Server存储过程返回正确的行数,但所有行均相同

来自分类Dev

自定义ListView,其中所有图像的大小均相同

来自分类Dev

所有数组值均相同时发生拼接问题

来自分类Dev

所有Firebase依赖项的版本均相同,启动后应用仍然崩溃

来自分类Dev

SQL Server-插入表中-除1以外的所有列值均相同

来自分类Dev

以宽高比显示图像,并且所有图像尺寸的高度和宽度均相同

Related 相关文章

  1. 1

    引导卡,所有尺寸均相同

  2. 2

    所有列的结果均相同

  3. 3

    在所有节点上投射阴影SCNLight

  4. 4

    OpenGL中的阴影贴图

  5. 5

    State对象中的map在所有节点上都相同吗?

  6. 6

    使用带有延迟渲染 Opengl 3.3 的阴影贴图的问题

  7. 7

    在所有ViewController上应用相同的逻辑

  8. 8

    在所有线程上读取相同的结构

  9. 9

    在所有行上强制使用相同的颜色

  10. 10

    在所有设备上使引导箱的高度相同

  11. 11

    OpenGL阴影贴图-阴影位置错误

  12. 12

    如何在所有Android版本上显示支持库的ActionBar&Toolbar的阴影?

  13. 13

    在所有视图控制器上显示对象

  14. 14

    在所有全局对象原型上设置方法

  15. 15

    OpenGL阴影贴图几乎可以正常工作

  16. 16

    OpenGL Variance阴影贴图倒置衰减

  17. 17

    QML:如何在所有菜单中添加阴影?

  18. 18

    检查列是否在所有行上都具有相同的值

  19. 19

    您如何强制Flutter BottomNavigationBar在所有TABS上具有相同的宽度?

  20. 20

    附加在所有具有相同类别的div上

  21. 21

    使用#create_list的Factory_girl,在所有创建的对象之间共享相同的关联

  22. 22

    我想知道如何在所有新对象的类中都保持相同的库存变量?

  23. 23

    JMH:在所有基准测试中使用相同的静态对象

  24. 24

    SQL Server存储过程返回正确的行数,但所有行均相同

  25. 25

    自定义ListView,其中所有图像的大小均相同

  26. 26

    所有数组值均相同时发生拼接问题

  27. 27

    所有Firebase依赖项的版本均相同,启动后应用仍然崩溃

  28. 28

    SQL Server-插入表中-除1以外的所有列值均相同

  29. 29

    以宽高比显示图像,并且所有图像尺寸的高度和宽度均相同

热门标签

归档