OSX - 将 GLSL 'InOut' 转换为 Metal
OSX - Convert GLSL 'InOut' to Metal
我正在尝试转换下面的 GLSL
函数:
float pMod1(inout float p, float size) {
float halfsize = size*0.5;
float c = floor((p + halfsize)/size);
p = mod(p + halfsize, size) - halfsize;
return c;
}
用于 Metal
static float pMod1( thread float &p, float size) {
float halfsize = size*0.5;
float c = floor((p + halfsize)/size);
p = mod(p + halfsize, size) - halfsize;
return c;
}
然后使用它:
static float map( float3 p )
{
p.x = pMod1(p.x,10);
...
}
我得到一个错误:
Non-cont reference cannot bind to vector element
- 如何解决这个问题?
Metal
中 InOut
的等效限定词是什么?
我找到了解决方案:
首先你必须定义它:
#define _inout(T) T
然后在你的函数中使用它:
static float somefunction( _inout(float) p)
我正在尝试转换下面的 GLSL
函数:
float pMod1(inout float p, float size) {
float halfsize = size*0.5;
float c = floor((p + halfsize)/size);
p = mod(p + halfsize, size) - halfsize;
return c;
}
用于 Metal
static float pMod1( thread float &p, float size) {
float halfsize = size*0.5;
float c = floor((p + halfsize)/size);
p = mod(p + halfsize, size) - halfsize;
return c;
}
然后使用它:
static float map( float3 p )
{
p.x = pMod1(p.x,10);
...
}
我得到一个错误:
Non-cont reference cannot bind to vector element
- 如何解决这个问题?
Metal
中InOut
的等效限定词是什么?
我找到了解决方案:
首先你必须定义它:
#define _inout(T) T
然后在你的函数中使用它:
static float somefunction( _inout(float) p)