qt - 用 Qt 实现 3D 着色器到 2D 对象?
问题描述
我正在尝试从这里实现以下着色器: https ://gamedev.stackexchange.com/questions/68401/how-can-i-draw-outlines-around-3d-models
我的基础是预先应用着色器的 2D 图像。
我不确定如何应用这个
glDrawBuffer( GL_COLOR_ATTACHMENT1 );
Vec3f clearVec( 0.0, 0.0, -1.0f );
// from normalized vector to rgb color; from [-1,1] to [0,1]
clearVec = (clearVec + Vec3f(1.0f, 1.0f, 1.0f)) * 0.5f;
glClearColor( clearVec.x, clearVec.y, clearVec.z, 0.0f );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
所以我没有,这就是我的 QML 代码的样子:
ShaderEffect {
id: outline
anchors.fill: swirls
visible: true
property variant source: swirls
//property variant source: mascot
// first render target from the first pass
property variant uTexColor: swirls
// second render target from the first pass
property variant uTexNormals: swirls
property variant uResolution: Qt.vector2d(960, 640) //screen resolution
property variant delta: Qt.size(0.1 / width, 0.2 / height)
fragmentShader: "qrc:effects/shaders/outline.frag"
layer.enabled: true
layer.effect: OpacityMask {
maskSource: swirls
}
}
我对法线漫反射贴图了解不多,也不知道是什么
in vec2 fsInUV;
这似乎对让它发挥作用很重要。我正在尝试围绕我用不透明蒙版+着色器制作的圆圈创建精灵般的轮廓(它的动画看起来像带有着色器的水)
着色器的原始用户处于非活动状态,我不熟悉 QML 如何实现着色器,因为我一般对着色器非常不熟悉。
解决方案
推荐阅读
- javascript - 将二维坐标转换为一维数组
- google-cloud-platform - google.datalab.bigquery 和 google.cloud.bigquery 之间的区别
- php - 使用 Symfony 的 EventDispatcher 触发事件
- algorithm - 如何在多源流网络中找到最大流量?
- haskell - Haskell 为新数据类型创建 map 和 foldr 函数
- atom-editor - Atom 文本编辑器中的代码片段返回错误:意外换行
- html - 如何在 4 列中显示我的自定义 woocommerce 产品?
- dart - Flutter:无法从 Firebase 身份验证中获取错误代码?
- javascript - FormData 无法发送 Javascript
- python - 错误:找不到 MagickWand 共享库。您可能还没有安装 ImageMagick 库。(虽然我有)