gpt4 book ai didi

javascript - ThreeJS ShaderMaterial Texture问题

转载 作者:行者123 更新时间:2023-11-30 16:44:10 27 4
gpt4 key购买 nike

使用 three.js r71。我不明白为什么我的纹理没有被 ShaderMaterial 读取。飞机是黑色的。我需要一双新鲜的眼睛来帮助我找出问题所在。

非常感谢!

这是 HTML:

<!DOCTYPE html>

<html>
<head>

<script src="jquery.min.js"></script>
<script src="three.min.js"></script>
<script src="testshdr.js"></script>

</head>

<body>

<!-- Shaders -->
<script id="vertexShader"
type="x-shader/x-vertex" >

varying vec2 vUv;

void main(){
vUv = uv;
gl_Position = projectionMatrix *
modelViewMatrix *
vec4(position, 1.0);

}

</script>

<script name="no_effect"
id="fragmentShader_0"
type="x-shader/x-fragment" >

varying vec2 vUv;

uniform sampler2D editImg;

void main(){
vec4 myTexture = texture2D(editImg, vUv);
gl_FragColor = vec4 (myTexture.r,
myTexture.g,
myTexture.b,
1.0);

}

</script>

<script type="text/javascript">
var tst = new TestShdr();
</script>

</body>

</html>

这是 JS:

var TestShdr = function () {
'use strict';

var
SCENE,
RENDERER,
CAMERA,
GEO,
MAT,
OBJ,
TEX,
UNIFS,
VS,
FS;

SCENE = new THREE.Scene();
RENDERER = new THREE.WebGLRenderer();
RENDERER.setSize(256, 256);

CAMERA = new THREE.PerspectiveCamera(56, 1, 0.1, 1000);

SCENE.add(CAMERA);
CAMERA.position.z = 5;

TEX = THREE.ImageUtils.loadTexture('1107.jpg');

UNIFS = {
editImg: { type: 't', value: TEX}
};
VS = $('#vertexShader').html();
FS = $('#fragmentShader_0').html();

GEO = new THREE.PlaneBufferGeometry(1, 1, 1, 1);
MAT = new THREE.ShaderMaterial({uniforms: UNIFS,
vertexShader: VS,
fragmentShader: FS
});
OBJ = new THREE.Mesh(GEO, MAT);
SCENE.add(OBJ);

document.body.appendChild(RENDERER.domElement);

RENDERER.render(SCENE, CAMERA);

};

最佳答案

你应该这样做:

TEX = THREE.ImageUtils.loadTexture('1107.jpg', {}, function() {
RENDERER.render(SCENE, CAMERA);
});

关于javascript - ThreeJS ShaderMaterial Texture问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31501225/

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