JavaScript:用onclick事件改变webgl的纹理
JavaScript: Changing a texture on webgl globe with onclick event
我正在使用谷歌的webGL全球为我的一个有趣的项目。
希望:当用户点击带有"月亮"图标的框时,它会改变所使用的图像从world.jpg到world_night.jpg.
有一个文件处理地球仪的纹理元素。下面这行代码负责获取图像位置,用。
包裹地球仪scene = new THREE.Scene();
sceneAtmosphere = new THREE.Scene();
var geometry = new THREE.Sphere(200, 40, 30);
shader = Shaders['earth'];
uniforms = THREE.UniformsUtils.clone(shader.uniforms);
*uniforms['texture'].texture = THREE.ImageUtils.loadTexture('/images/world' +
'.jpg');*
重要的一行在底部的星号内。
我正在使用这样一个简单的函数来改变纹理
<style>
function nightTime() {
uniforms['texture'].texture = THREE.ImageUtils.loadTexture('/images/world_night' +
'.jpg');
}
</style>
...filler html
<img src="moon.png" width="30px" onClick="nightTime()">
谁能帮我解决这个问题?
当有人点击月亮图标时,我需要这个
*uniforms['texture'].texture = THREE.ImageUtils.loadTexture('/images/world' +
'.jpg');*
更改为
*uniforms['texture'].texture = THREE.ImageUtils.loadTexture('/images/world_night' +
'.jpg');*
注意:我想改变的东西是在一个名为global .js的文件。该函数位于index.html文件
这:https://github.com/mrdoob/three.js/wiki/Uniforms-types还有这个:http://blog.cjgammon.com/?p=392
应该足以解释你自定义着色器是如何工作的,以及它们是如何与你需要的所有制服绑定的。
myTex = THREE.ImageUtils.loadTexture('/images/world' + '.jpg');
myUniforms = [
myTex: { type: 't' /*texture type*/, value: myTex} ];
material = new THREE.ShaderMaterial({
uniforms: myUniforms,
vertexShader: someMyVS,
fragmentShader: someMyFS});
// function onclick()
myUniforms.myTex = THREE.ImageUtils.loadTexture('/images/world_night' +
'.jpg');
相关文章:
- webgl在一个正方形上操纵两个纹理
- WebGL多纹理多维数据集
- webGL纹理未显示在矩形中
- 如何在WebGL中编辑纹理的RGBA值
- 在 Chrome 中创建多个 webgl 纹理
- 如何在 WebGL 中实现滚动纹理
- 如何在 WebGL 中的多维数据集上使用多个纹理
- 使用三.js和
- 如何将多个纹理发送到 WebGL 中的片段着色器
- 尝试将 WebGL 纹理清除为纯色
- WebGL纹理图像源更新
- JavaScript 为 WebGL 加载纹理
- WebGL / Three.js - 由纹理着色的粒子在移动相机时不规则地闪烁
- 检查 WebGL 纹理是否加载到片段着色器中
- WebGL纹理加载结果(Javascript)类型错误
- 强制WebGL纹理从缓冲区重新加载
- 调整画布和webGL纹理的大小
- 使用多个RGBA值创建WebGL纹理
- 使用RGBA值创建WebGL纹理
- 当分配HTML5视频标签给webGL纹理时,CORS/跨域安全异常