Normalize函数在OpenGL中有很多应用。首先,归一化后的向量可以用来计算两个向量之间的夹角。当我们需要判断两个向量之间的夹角是否为锐角、直角或钝角时,归一化后的向量可以提供更直观的判断依据。其次,归一化后的向量可以用来进行光照计算。在光照计算中,我们需要将光源的方向向量归一化,以便得到正确的光照效果。此外,归...
normalize()函数可以产生一个与原向量方向一致的单位向量。dot和cross函数分别可以 用来计算两个向量的点积和叉积。 The reflect() and refract() functions take an input vector and a normal to a plane and calculate the reflected or refracted vector that results. refract() takes the index ofrefraction,...
#version 330 core out vec4 FragColor; in VS_OUT { vec3 FragPos; vec3 Normal; vec2 TexCoords; } fs_in; struct Light { vec3 Position; vec3 Color; }; uniform Light lights[16]; uniform sampler2D diffuseTexture; uniform vec3 viewPos; void main() { vec3 color = texture(diffuseTexture...
求矢量x与y的叉乘,即(x1 · y2 - y1 · x2 , x2 · y0 - y2 · x0 , x0 · y1 - y0 · x1) 5、normalize(x) 归一化操作,即x / length(x) 五、矩阵函数 1、matrixCompMult(mat x, mat y) 矩阵x与y相乘 2、outerProduct(vec3 a, vec3 b) 向量a与b的外积 3、transpose(mat3 m...
GL_NORMALIZE——如果启用,法向量被计算为单位向量,详见glNormal和glNormalPointer。 GL_POINT_SMOOTH——如果启用,使用调整过滤器描绘点,否则,画aliased点,详见glPointSize。 GL_POLYGON_OFFSET_FILL——如果启用,在深度比较进行前多边形片段的深度值会进行移位。
binormal=normalize(binormal); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 法线,切线,副切线函数实现 Vector3Math::calculateTangentSpaceVector( constVector3&position1,constVector3&position2,constVector3&position3, ...
distance:计算两点的距离 length:求解向量的长度 normalize:对一个向量进行标准化 clamp:将一个值截取到两个值之间 matrixCompMult:在两个矩阵之间执行一个逐分量的操作 outerProduct:提取两个向量的外积,这个函数的作用就是将一个n*1的向量与1*m的向量相乘,得到一个n*m的矩阵 ...
N = normalize(N); //计算入射光方向\视线方向\半角向量 float3 L = normalize(lightPosition - worldPos); float3 V = normalize(eyePosition - worldPos); float3 H = normalize(L + V); // 计算漫反射分量 float3 diffuseColor = Kd * globalAmbient+Kd*lightColor*max(dot(N, L), 0); ...
void glBlendFunc(GLenum sfactor, GLenum dfactor)接收两个参数,来设置源(source)和目标(destination)因子。OpenGL为我们定义了很多选项,我们把最常用的列在下面。注意,颜色常数向量C¯constant可以用glBlendColor函数分开来设置。 为从两个方块获得混合结果,我们打算把源颜色的alphaalpha给源因子,1−alpha1−alp...
这几行代码也没什么好说的,就是使用了uniform变量来向shader传递数据。接下来,就是我们这次第一次看到的GLSL中的函数了。 void getEyeSpace( outvec3 norm, out vec4 position ) { norm = normalize( NormalMatrix *VertexNormal); position = ModelViewMatrix *vec4(VertexPosition,1.0); ...