Normalize函数在OpenGL中有很多应用。首先,归一化后的向量可以用来计算两个向量之间的夹角。当我们需要判断两个向量之间的夹角是否为锐角、直角或钝角时,归一化后的向量可以提供更直观的判断依据。其次,归一化后的向量可以用来进行光照计算。在光照计算中,我们需要将光源的方向向量归一化,以便得到正确的光照效果。此外,归...
#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...
The normalize() function divides a vector by its own length, producing a vector that has a length of 1, but points in the same direction as the source. The dot() and cross() functions can be used to find the dot and cross products of two vectors, respectively. GLSL提供了大量的处理...
求矢量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, ...
函数原型: void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz); void glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz); 函数参数: nx, ny, nz 指定新的当前法线的x, y, z坐标。初始值为(0,0,1)。 描述: glNormal指定的法线不需要为单位长度。如果开启了GL_NORMALIZE,由glNormal指定的任何长度的...
这几行代码也没什么好说的,就是使用了uniform变量来向shader传递数据。接下来,就是我们这次第一次看到的GLSL中的函数了。 void getEyeSpace( outvec3 norm, out vec4 position ) { norm = normalize( NormalMatrix *VertexNormal); position = ModelViewMatrix *vec4(VertexPosition,1.0); ...
void glBlendFunc(GLenum sfactor, GLenum dfactor)接收两个参数,来设置源(source)和目标(destination)因子。OpenGL为我们定义了很多选项,我们把最常用的列在下面。注意,颜色常数向量C¯constant可以用glBlendColor函数分开来设置。 为从两个方块获得混合结果,我们打算把源颜色的alphaalpha给源因子,1−alpha1−alp...
vec3 normalized = normalize(color); floatvariance = (normalized.r - normalized.g) * (normalized.r - normalized.g); variance += (normalized.g - normalized.b) * (normalized.g - normalized.b); variance += (normalized.b - normalized.r) * (normalized.b - normalized.r); ...