多重纹理
glActiveTexture(GL_TEXTURE0)
glBindTextrue(GL_TEXTURE_2D, textrue0)
glActiveTextrue(GL_TEXTURE1)
glBindTextrue(GL_TEXTURE_2D, textrue1)
点精灵的核心代码
glEnable(GL_PROGRAM_POINT_SIZE)
fragColor = textrue(pointImage, gl_PointCoord)
glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_LOWER_LEFT)
加载2D纹理数组
glTexture3D(target, level, internalformat, width, height, depth, border, format, type, void *data);
一次性加载一个2D图像数组并不方便,如果将data = NULL Opengl 会保留纹理存储空间,将它们保持为未初始化状态
for(i to n )
glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, i,width, height, 1, GL_RGBA, GL_UNISIGNED_BYTE, pBit);
vertex.vs
{
out vec3 moonCoords
moonCoord.st = vTexCoord.st
moonCoord.p = time
}
fragment.fs
{
in vec3 moonCoords;
fragColor = texture2DArray(moonImage, moonCoords.stp)
}
纹理代理
glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA, 2048, 4096, 0, GL_BGRA,
GL_UNSIGNED_BYTE, NULL);
glGetTexLevelParameter(GL_PROXY_TEXTRUE_2D, 0, GL_TEXTURE_HEIGHT, &height);
根据这 height 值查看显卡是否支持4096的高度。