代码拉取完成,页面将自动刷新
using AnyCAD.Foundation;
using System;
namespace AnyCAD.Demo.Graphics
{
class Graphics_GeometryDynamic : TestCase
{
uint worldWidth = 128;
uint worldDepth = 128;
BufferGeometry mGeometry;
public override void Run(IRenderView render)
{
mGeometry = GeometryBuilder.CreatePlane(20000, 20000, worldWidth - 1, worldDepth - 1);
var position = mGeometry.GetAttribute(0);
position.SetDataUsage(EnumBufferDataUsage.DYNAMIC_DRAW);
var mPosition = new Float32Array(position.GetData());
for (uint i = 0; i < position.GetCount()/3; i++)
{
float z = (float)(35 * Math.Sin(i / 2));
mPosition.SetValue(i * 3 + 2, z);
}
var material = BasicMaterial.Create("basic-water");
var img = FileImage.Create(GetResourcePath("textures/water.png"));
var texture = new ImageTexture2D();
texture.SetSource(img);
var desc = texture.GetDesc();
desc.SetWrapS(EnumTextureWrappingType.REPEAT);
desc.SetWrapT(EnumTextureWrappingType.REPEAT);
texture.SetRepeat(new Vector2(5, 5));
material.AddTexture("map", texture);
var color = ColorTable.Hex(0x0044ff);
material.SetUniform("diffuse", color);
var node = new PrimitiveSceneNode(mGeometry, material);
node.SetPickable(false);
node.SetCulling(false);
render.ShowSceneNode(node);
render.EnableAnimation(true);
}
public override void Exit(IRenderView render)
{
render.EnableAnimation(false);
}
public override void Animation(IRenderView render, float time)
{
var position = mGeometry.GetAttribute(0);
position.SetDataUsage(EnumBufferDataUsage.DYNAMIC_DRAW);
var mPosition = new Float32Array(position.GetData());
var count = mPosition.GetItemCount() / 3;
for (uint i = 0; i < count; i++)
{
var z = (float)(35 * Math.Sin(i / 5 + (time * 50 + i) / 7));
mPosition.SetValue(i*3+2, z);
}
position.RequestUpdate();
mGeometry.RequestUpdate();
render.RequestDraw();
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。