2.11.6 什么是纹理槽?
纹理槽是GPU中用于管理不同纹理资源的机制。在OpenGL或其他图形API中,一个纹理槽代表了一个可以被着色器程序使用的纹理的存储位置。由于GPU的限制,可用的纹理槽数量是有限的。
当在渲染过程中需要使用多个纹理时(例如,一个物体的漫反射贴图、法线贴图、高光贴图等),每个纹理都需要绑定到一个不同的纹理槽中,然后指定纹理槽来访问这些纹理。
在当前项目中,滤镜就是纹理,不同的滤镜会被绑定到不同的纹理槽中。
2.11.7 建立连接(source到target)?
重载后的这个函数会把图象源和一个滤镜连接起来,并且指定了源图像在滤镜处理过程中应该使用的纹理槽的位置。可以确保图像数据流向滤镜,以便图像处理或渲染。
2.12 landmarks生成之后,发生了什么?
1,生成之后,会调用之前注册的回调函数来处理这些landmarks数据。这些回调函数就是不同的滤镜了(纹理),不同的滤镜对象根据landmarks数据,对自己的纹理数据进行一个更新,然后将纹理数据映射到纹理槽中。
2,最终的target_view,会将以上四种滤镜的图像数据进行一个整合,然后也绑定在一个最终的纹理槽中。
3,最终进行一个渲染的工作:
4,再进行一个视图更新的工作:
完整的渲染逻辑就是这样的。
2.13 那如何标记关键点呢?
目前的想法是在这个函数中做添加:
涉及到修改库代码,这个功能开发的时间就有点长了,可以先设计个保底的选项,那就是先用opencv把关键点结合之前的图像画一张图,保存为png格式,这样做应该会好办一些。
2.13.1 Opencv方案进行处理
接下来的目标是,将这个原始的landmarks进行引入:
关键点是111个:
然后再传回来,发现一点不对劲。不打印,这说明了有问题。
在这个函数中才会打印:
得找一个会调用的地方,然后只打印一次,就可以了。
在这个循环中进行一个调用就可以了。
最终输出来这个东西,我觉得这个人脸识别做的还是蛮好的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。