1
我有以下代碼以編程方式爲C中的WebGL生成紋理。我需要在JavaScript中爲WebGL做同樣的事情。以編程方式爲JavaScript中的WebGL生成紋理
如何正確創建3維棋盤格矩陣?
GLubyte checkerboard[64][64][3];
如何設置值?
checkerboard[i][j][0] = (GLubyte) c;
如何在WebGL中正確調用gl.texImage2D()
生成的紋理?
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 64, 64, 0, gl.RGB, gl.UNSIGNED_INT, checkerboard);
這裏是在C當前代碼
void CreateTextures() {
GLubyte checkerboard[64][64][3];
int i, j, c;
for (i=0; i<64; i++) {
for (j=0; j<64; j++) {
c = ((i & 8)^(j & 8))*255;
checkerboard[i][j][0] = (GLubyte) c;
checkerboard[i][j][1] = (GLubyte) c;
checkerboard[i][j][2] = (GLubyte) c;
}
}
glGenTextures(1, &checkerboardTexture);
glBindTexture(GL_TEXTURE_2D, checkerboardTexture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 64, 64, 0, GL_RGB, GL_UNSIGNED_INT, checkerboard);
}
我認爲得到的函數將看起來像這樣在JavaScript
function CreateTextures() {
GLubyte checkerboard[64][64][3];
int i, j, c;
for (i=0; i<64; i++) {
for (j=0; j<64; j++) {
c = ((i & 8)^(j & 8))*255;
checkerboard[i][j][0] = (GLubyte) c;
checkerboard[i][j][1] = (GLubyte) c;
checkerboard[i][j][2] = (GLubyte) c;
}
}
var checkerboardTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, checkerboardTexture);
gl.texParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, 64, 64, 0, gl.RGB, gl.UNSIGNED_INT, checkerboard);
}