我正在制作一个简单的像素自上而下的游戏。我想在那里添加一些简单的灯光,但我不知道做到这一点的最佳方式。这张照片是我想要实现的光的一个例子。
http://imgur.com/a/PpYiR
当我搜索到这个任务时,我只看到了这种光的解决方案。
https://www.youtube.com/watch?v=mVlYsGOkkyM
但是当光源靠近时,我需要增加纹理部分的亮度。如果我在不使用UV的情况下对GL_QUADS使用纹理,我该如何做到这一点?openGL简单的2d光
-3
A
回答
-1
好的,我的回答可能不会完全回答你的问题,但它会引导你走向正确的道路。
看起来您正在使用即时模式,现在已折旧并更改为VBO(顶点缓冲对象)将使您的工作更轻松。
照片中的照明似乎是手绘的。即使是最好的算法,也无法完全实现这种照明风格。
你真的有两个选择来解决你的问题,他们都需要纹理坐标和着色器。
您可以使用光照贴图,它使用预先生成的纹理乘以四边形纹理。这是非常快的,但需要某种工具来生成光照贴图,这可能在目前有点头痛。
相反,学习基于着色器的照明。 3D照明存在许多教程,但2D的原理保持不变。 有些Google会为您提供实现着色器所需的资源。 一个基本距离的基于照明算法将看起来像这样:
GL_Color = texturecolor * 1.0/distance(light_position,world_position);
它乘以纹理像素的由纹理像素多远是从光位置的颜色。有一些教程更深入地讨论了这一点。
如果您想让照明效果看起来像第一张图像中的“复古”,则可以在后处理步骤中对颜色进行缩减采样。
+0
这不是问题的答案。 – Rabbid76
相关问题
- 1. XNA一个简单的2D点光源
- 2. Iphone上的OpenGL ES:简单的2D动画(插值/补间)
- 3. iPhone - 绘制2D与OpenGL ES的,快速和简单
- 4. OpenGL-简单的2D裁剪/遮挡方法?
- 5. OpenGL的:没有光一个简单的立方体过剩
- 6. opencv - 简单的2D <-> 2D变换
- 7. OpenGL:制作阴影和光线卷的最简单方法?
- 8. 使用VBOs在OpenGL中进行简单2D剔除
- 9. 简单的2D运动
- 10. 简单的2D Java游戏
- 11. OpenGL简单的VBO麻烦
- 12. 简单的OpenGL实现
- 13. Opengl,简单的动画
- 14. 简单的纹理在OpenGL
- 15. 光流的简单情况
- 16. webGL/openGL中多个2D点光源的最高性能方法? [动态灯光]
- 17. 2d旋转opengl
- 18. 简单的2D单元阵列追加
- 19. 寻求帮助创建2D OpenGL-ES 2.0游戏的基本,简单的方法
- 20. OpenGL中的全光?
- 21. OpenGL ES强光闪光灯
- 22. OpenGL光照
- 23. OpenGL环境光
- 24. OpenGL多灯光
- 25. 使用OpenGL for 2D
- 26. Android 2D opengl线圈
- 27. 2D例如用OpenGL
- 28. Android OpenGL ES和2D
- 29. OpenGl ES 2D Android redraw
- 30. OpenGL C++ SDL 2D Shadows
您是否想过着色?请阅读[我如何问一个好问题?](https://stackoverflow.com/help/how-to-ask) – Rabbid76
对于固定管道(无着色器),您可以使用[原生OpenGL灯](https:/ /www.cse.msu.edu/~cse872/tutorial3.html)设置为点光源。或者对自定义模式使用alpha纹理+混合。 – Spektre