你渲染地形的方式是什么?
我想知道如何在 directx 中渲染地形。
我听到有人说他们正在使用 RAW 文件,有些人说他们正在使用 .x 文件。我们的方法是什么?为什么它是好的?
I wanna know how you render terrains in directx.
I have heard people saying that they are using RAW files and some said that they are using .x files. What is our way and why is it good?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
许多 3D 引擎使用高度图来渲染地形,因为它们的空间效率很高(只有一张光栅图像必需的)。
Many 3D engines use height maps to render terrain, due to their space efficiency (only one raster image is required).
我的做法是用我的小波压缩系统压缩巨大的纹理(128Kx128K)以获得约150:1的压缩。然后我从磁盘加载纹理。即世界被分成多个 256x256 的块(实际上它是根据距相机的距离进行 mipmap 的)。我使用相机位置来向前加载相机位置周围的多个块。
然后我计算可见的块并绘制它们。为此,我将高度数据直接用作输入顶点着色器的流。然后我有一个网格,其中顶点位置对应于高度流中的高度位置。然后,我可以简单地将 y 从高度图流中拉出,并将其放置在着色器中的 y 位置。
这是一种相当复杂的地形渲染方式,但你确实问过“你”是如何做到的;)
PS 128,000x128,000 的好处是我能以米精度获得 128 公里的地形 :D
Well MY way of doing it is to compress a HUGE texture (128Kx128K) with my wavelet compression system to get ~150:1 compression. I then chunk load the texture from disk. ie the world is split up into multiple 256x256 chunks (Actually its kind of mipmapped with distance from the camera). I use the camera position to forward load a number of chunks around the camera position.
I then calculate the chunks that are visible and draw them. For this purpose I use the height data directly as a stream fed into my vertex shader. I then have a mesh where vertex positions correspond to the height positions in the height stream. I can then simply pull the y out of the heightmap stream and place it in the y position in my shader.
Its a pretty complex way of rendering terrain but you did ask how "you" do it ;)
PS the bonus of 128,000x128,000 is that I get 128km of terrain at meter accuracy :D