用 Triton 模拟在水面上粘贴贴花
Triton有能力在水面上应用贴花纹理,这些贴花看起来会漂浮在水面上。
例如,你可以为Triton提供一个代表油膜的纹理,并在特定的位置将其应用于水面,以创造一个浮油的效果。
贴花纹理可以在运行时进行缩放和调整其混合。
使用Triton::Ocean::AddDecal()方法在水面上添加一个水贴。你必须传递给它一个用于贴花的纹理,贴花的原始尺寸,以及它在水面上的位置。
比如说:
Triton::DecalHandle myDecal = ocean->AddDecal((Triton::TextureHandle)(openGLTextureID), 10.0f, Vector3(20.0, 0, 0));
将使用你之前加载的纹理(由openGLTextureID指示)创建一个贴花,这个贴花宽和深都是10米,中心是(20, 0, 0)。给予AddDecal的TextureHandle应该是一个GLuint、LPDIRECT3DTEXTURE9或者ID3D11ShaderResourceView*,这取决于你是使用OpenGL、DirectX9还是DirectX11。
Triton::Ocean::ScaleDecal()和Triton::Ocean::SetDecalAlpha()可以在运行时使用AddDecal()返回的DecalHandle来调整贴花。
如果不再需要贴花,可以使用Triton::Ocean::RemoveDecal()将其从场景中移除。贴花确实会产生性能代价,所以应该少用。
请注意,在使用Triton::Ocean::SetPatchShader()渲染你自己的水体几何体时,使用贴花将需要进行第二次处理。更多信息请参见渲染用户定义的几何体的补丁。
渝公网安备50010702505508