android - OpenGL-ES 2.0 (for Android), 如何创建二维动态光照效果?

标签 android dynamic opengl-es 2d lighting

<分区>

我已经找了一段时间了,但我还没有找到合适的答案。 我想像这样使用 OpenGL-ES 2.0 在 android 上创建 2D 动态照明效果 视频:

http://www.youtube.com/watch?v=W53rTHXM6yo

但我真的不知道从哪里开始。

如果有人能给我一点帮助让我开始,我将不胜感激。

提前致谢

最佳答案

我不确定视频作者是如何实现这种效果的。但简单地观看视频并阅读下面的评论,我认为可以达到如下效果:

首先考虑只有一个光源的情况。可以提前绘制径向渐变纹理。 (中心最亮,边界较暗,中间为灰色。您可以使用 Photoshop 绘制它。)以光源位置为中心渲染此类纹理。然后你需要生成一些三角形来渲染阴影。假设光源位于 A。给定任意多边形上的线段 BC,您需要将线 AB 延伸到足够远的点 D(至少超出屏幕)。还将 AC 延伸到 E 点。然后你有一个四边形 BCED(或两个三角形 BCD 和 CDE)。用黑色渲染这个四边形。对所有多边形的所有线段执行相同的操作。那就是影子。您将获得单个光源的效果。

对于多个光源,您可以将每个光源的效果渲染到一个帧缓冲对象 (FBO) 中。最终结果只是对 FBO 进行平均。 (实际上你可以只用一个FBO来累加每个光源的颜色值。在最后的pass中你只需要将它除以光源的数量)。

我认为这是实现 2D 光效的简单方法。

关于android - OpenGL-ES 2.0 (for Android), 如何创建二维动态光照效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9698736/

相关文章:

java - 动态类加载在运行时失败

iphone - iOS CVImageBuffer 使用 AVCaptureSessionPresetPhoto 从 AVCaptureSessionDataOutput 变形

c++ - 在没有对象参数的情况下调用非静态成员函数会发生错误

c - C中动态数组的排序算法

android - libGDX 中缓慢的模型批量渲染

iphone - 仅使用 objective-c 在 iPhone openGL ES 中绘制文本

android - 哪个更好 : Parse or AWS

android - 如何覆盖 backpress 以离开 Activity ?

java - Android - 依赖和代码分离(调试/发布版本)

android - ScrollView 忽略 child 的 layout_height