gpt4 book ai didi

javascript - 具有简单纹理的 Webgl 怪异渲染

转载 作者:行者123 更新时间:2023-11-30 06:35:02 25 4
gpt4 key购买 nike

我在自定义 3D 形状上渲染纹理时遇到问题。

使用以下参数:

gl.bindTexture(gl.TEXTURE_2D, texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
gl.generateMipmap(gl.TEXTURE_2D);
gl.bindTexture(gl.TEXTURE_2D, null);

它给了我这个结果:

result

更改以下参数:

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);

它给了我这个:

result2

使用这些参数:

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);

result3

我尝试更改纹理坐标但没有成功,这里用于每个面孔的坐标是: 0.0, 0.0,
0.0, 10.0,
10.0, 10.0,
10.0, 0.0

知道为什么一个三 Angular 形(实际上是平行面上的 2 个三 Angular 形)表现怪异吗?

最佳答案

问题是您使用的面具有不同数量的点 - 但仍然对面使用固定数量 (4) 的纹理坐标。由于一些面有 5 个点,在某些点纹理坐标被“移动”。

相反,您应该像添加顶点一样添加它们:

for (var j=0; j < face.length; j++){
vertices...

//generate texture coords, they could also be stored like the points
textureCoords.push(points[face[j]][0] / 4);
textureCoords.push((points[face[j]][1]+points[face[j]][2]) / 4);

http://jsfiddle.net/bNTkK/9/

关于javascript - 具有简单纹理的 Webgl 怪异渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com