1个回答
2010-11-21
展开全部
绘制3D图形有两种方法,一种是基于显卡(硬件),另一种是基于CPU(软件)。最终的目标都是求出已知点的像素亮度,只是采用的方式不同。
基于显卡的优点是,速度极快,所以游戏均使用显卡。编程时使用OpenGL或Direct3D。
基于CPU速度就非常慢了。相对于显卡采用的是固定的绘制方式,CPU可以使用任何绘制方式(它也可以模仿显卡的绘制方式)。画质取决于你的算法。
你提出该怎么遍历,这就是计算机图形学研究的重点,不是一两句话可以讲完的。我先告诉你一种显卡中普遍使用的方式:
1)由于球体不好处理,先转换为大量三角面来近似,数量足够看上去就光滑了。
2)描述三角面都是用三维坐标,然后通过一定计算投影到二维。可以使用数学中的三角函数计算得到。
3)投影到2D面上的三角形进行像素填充。同时判定,三角面的前后关系,如果在背面(被遮住了),就不显示。
这些步骤都固化在显卡芯片中,所以使用OpenGL或Direct3D可以省去你写这些算法的时间,当然你也可以选择自己写上面的算法。
有任何问题可以Hi我
基于显卡的优点是,速度极快,所以游戏均使用显卡。编程时使用OpenGL或Direct3D。
基于CPU速度就非常慢了。相对于显卡采用的是固定的绘制方式,CPU可以使用任何绘制方式(它也可以模仿显卡的绘制方式)。画质取决于你的算法。
你提出该怎么遍历,这就是计算机图形学研究的重点,不是一两句话可以讲完的。我先告诉你一种显卡中普遍使用的方式:
1)由于球体不好处理,先转换为大量三角面来近似,数量足够看上去就光滑了。
2)描述三角面都是用三维坐标,然后通过一定计算投影到二维。可以使用数学中的三角函数计算得到。
3)投影到2D面上的三角形进行像素填充。同时判定,三角面的前后关系,如果在背面(被遮住了),就不显示。
这些步骤都固化在显卡芯片中,所以使用OpenGL或Direct3D可以省去你写这些算法的时间,当然你也可以选择自己写上面的算法。
有任何问题可以Hi我
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询