将统一值传递给顶点和片段着色器
Posted
技术标签:
【中文标题】将统一值传递给顶点和片段着色器【英文标题】:Passing uniform values to into vertex and fragment shaders 【发布时间】:2018-09-13 14:42:38 【问题描述】:如何?
我知道在QMaterial
中可以做到这样的事情:
self.colorParameter = Qt3DRender.QParameter("color", color)
self.addParameter(self.colorParameter)
还有其他方法吗?
我的目标是传递一些统一的值并不时更改它们。
【问题讨论】:
glUniform*()
由于某种原因无法正常工作?
@genpfault 感谢您的评论。不,我用的是qt3d
,我不能用这个。
查看github.com/qt/qt3d/tree/5.11/src/extras/defaults At 已经实施的材料。这应该向您展示如何将参数传递给着色器。
再次感谢@Florian Blume。现在可以了!
我很高兴它有效 :) 在下面为其他人发布您的答案!
【参考方案1】:
正如@Florian Blume 所建议的,我正在发布我的答案:
class MyMaterial(Qt3DRender.QMaterial):
def __init__(self, parent):
super().__init__(parent)
# some code ...
self.parameter_position = Qt3DRender.QParameter("position", QVector3D(0, 0, 0))
self.addParameter(self.parameter_position)
def update_position(self, position):
self.removeParameter(self.parameter_position)
self.parameter_position.setValue(position)
self.addParameter(self.parameter_position)
【讨论】:
以上是关于将统一值传递给顶点和片段着色器的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL:为啥我不能将单个浮点数从顶点着色器传递到片段着色器?
使用金属顶点和片段着色器将 MTLTexture 传递给 SCNProgram
如果几何着色器处于活动状态,如何将信息从顶点着色器传递到片段着色器?