我搜索了很多但是在#version 330顶点着色器中找不到以下语句是否合法:
#define note_the_following_whitespaces 0x01
(layout location = 7) vec3 out ov;
(layout location = 8) vec3 out rv;
void main() {
rv = vec3(1.0,2.0,3.0);
ov = (1.0+rv)/2.0;
gl_Position = [whatever]...
}
Run Code Online (Sandbox Code Playgroud)
我特别提到(1.0+rv)- 着色器在每张nVidia卡上编译都很好,但拒绝在ATI卡上编译.不幸的是我没有确切的编译结果,我只知道编译不成功.
我试图重载运算符%因为你不能在双类型上使用模数,
float a = 5.0;
float b = 5.0;
a = a % b;
// not allowed
Run Code Online (Sandbox Code Playgroud)
我试图用这种函数重载运算符%:
template <>
MyClass* MyClass<float>::operator%(Myclass &other)
Run Code Online (Sandbox Code Playgroud)
对于其他涉及浮动的操作,我使用:
template <class T>
MyClass* MyClass<T>::operator%(MyClass &other)
Run Code Online (Sandbox Code Playgroud)
它从来没有编译实际上我被卡住了,无法找到绕过这个问题的方法,g ++仍然警告我你不能对浮点数执行模数,我的模板语法有问题或者它真的不可能.