如何用透视图绘制位图?

时间:2009-06-07 07:04:19

标签: 3d bitmap

我需要使用透视图绘制Windows位图,例如:

alt text http://img410.imageshack.us/img410/3905/example.png

仅使用Windows API C函数(没有MFC,没有DirectX等)

2 个答案:

答案 0 :(得分:1)

如果您不能使用OpenGL(或Direct3D),那么您可能需要编写自己的光栅化器。我还要指出这是一个糟糕的想法,如果你可以使用OpenGL或Direct3D那么你将为自己节省大量的工作,即使很难让这些东西与你的应用程序一起工作。是的,您可以使用OpenGL或Direct3D渲染到纹理中,而无需创建屏幕上下文。

在理论方面,您正在对广场上的每个点应用透视投影(查找该术语)。这是每个点,不仅仅是角落,而是所有点。如果你只是将变换应用到四个点,人们会发现变形是可以接受的,所以我们这样做了。

通过使用透视变换将3D点转换为2D点后,绘制多边形,将纹理中的像素复制到目标上下文中。您需要遍历目标中的每个像素,并计算哪个源像素在那里结束。如果它只是像图片中显示的那样围绕X轴旋转,那么你将使事情变得更容易,因为目标中的每一行对应于源中的一行。 Wolfenstein利用相同的技巧(除Y轴之外)在286上实时进行透视渲染,Doom也是如此。

如果您仍想继续但不知道我在说什么,请查看其中一本旧书,告诉您如何制作自己的Doom克隆。那些书有您正在寻找的代码。现在可以在线获得一两个,转到this wiki并寻找“3D游戏编程的黑色艺术”或“Windows游戏编程大师的技巧”。可能有一两个人在那里。

答案 1 :(得分:0)

实施此algorithm