本节我们来讲WebGL里面很重要的纹理
纹理贴图在游戏开发中十分常见,但是纹理不单单只是一张贴图那么简单。
在WebGL中,纹理有多种,一维纹理:就是一条线;二维纹理:一张二维图片;二维纹理数组:由多张二维图片组成;还有三维纹理,立体纹理,本节主要介绍二维纹理
在早期的OpenGL中,只支持图片大小为2^n的纹理,但现在支持,但是最好用大小为2^n的纹理,这样效率会比较高
先看看效果:
\
var jsArrayData =
[
0, 0, 0, 0.0, 0.0,
400, 0, 0, 1.0, 0.0,
400, 400, 0, 1.0, 1.0,
0, 0, 0, 0.0, 0.0,
400, 400, 0, 1.0, 1.0,
0, 400, 0, 0.0, 1.0,
];
void texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, TexImageSource? source):
第一个参数target:指定是什么类型的纹理(2选1),
第二个参数level:是纹理的级别,0是基本文件级别,之后再详细说,
第三个参数internalforma:t是纹理像素在显卡内存中存储的格式,GL_RGBA表示一个像素由4个分量(r,g,b,a)组成,
第四个参数format:是指我们传入的图片像素的存储格式,
第五个参数type:是像素每个分量的存储类型,webgl.UNSIGNED_BYTE表示r,g,b,a的存储类型是unsigned byte,1个字节,范围是[0,255],
最后一个参数source:是图片文件
void texParameteri(GLenum target, GLenum pname, GLint param) 是设置纹理参数用的,
第一个参