[pyglet] [shader] [光照] 关于pyglet如何正确应用shader到导入的obj模型上
·
我是大标题
起因
lz闲的没事干想研究一下3d,然后转啊转啊转,就找到了pyglet 这个库,它甚至能用 shader,正巧我也不知道shader 是什么,于是又……(balabala)……总之现在我搞清楚为什么我导入的 obj 模型根本不受我创建的 shader 的影响了。
那么什么是pyglet
我不知道,我没用明白呢,憋问我,有人讲过了,有人搞出 Minecraft 的demo过了。
那么我这个问题是个什么问题
先贴上祸首,这是自带 obj 导入的解码器pyglet.model.codecs.obj中 class OBJModelDecoder的片段。

原理
在导入obj时这个解码器通过 parse_obj_file (pyglet.model.codecs.obj.parse_obj_file) 把 obj 文件解码成 list[Mesh](面片列表), 然后给面片上 shader, 这里能看出它给有 texture(贴图) 的上了一种,给没有的上了另一种。
于是
我从OBJModelDecoder继承了一个类,把 shader 换成了我自己的 shader,于是问题解决。
后续
但是我的 shader 的点光源 渲染出来总是感觉怪怪的,属于那种对了但不全对的感觉。等我搞定了高低再水一篇。
更多推荐
所有评论(0)