稻草人的麦田

图形技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[导入]蜗牛的笔试题目

Posted on 2007-11-27 20:56  稻草人的麦田  阅读(534)  评论(0)    收藏  举报

当时也收到了蜗牛的笔试题目。贴出下半部分和我的回答。

 

 

下面是一技术问题,用于考察应聘人员的各方面的知识程度。回答请尽量详细,最好能举例说明。

一些3D问题:(公司使用的是D3D,如果不熟,用OpenGL举例回答也可以)

1.请介绍D3D或OpenGL中渲染对象时需要设置的3个矩阵及它们各自的作用。

2.请简单介绍D3D的渲染流水线流程及各步骤的作用,以及实际应用中我们可以在这些步骤做些什么效果应用?

3.ZBuffer有什么作用,渲染任何物体时是否都一定要打开ZBuffer?为什么?

4.请介绍你所有知道的纹理Alpha混合方式,原理(公式),以及他们的实际应用(做什么样的效果时需要这种方式)

 5.请介绍你所知道的所有3D动画方式、实现原理,以及他们的实际应用(做什么样的效果时需要这种方式)

6.现在的显卡已经可以每秒渲染上千万个三角形以上(而一般的游戏场景也就几万个三角形),而已已经有了很多自动的显示剪裁,是否意味着使用BSP或其他优化方法组织场景数据已经没有必要了?为什么?

7.使用硬件支持的D3D灯光有什么优点和缺点,好的3D引擎一般用什么方法弥补这种缺点?

8.GF4 MX系列与GF4 TI系列显卡有什么不同点?这些不同有什么作用?

 

1.世界矩阵,观察矩阵,投影矩阵,他们的作用分别是把物体转换到世界里,然后再转换到观察世界里,然后再转换到投影世界中.这样才能模拟出真实的世界中的情景.
2.先把局部坐标转换为世界坐标,再转换为视图坐标,再进行背面剔除,再进行光照再进行空间分割的剪切(八叉树,bsp等),再转换到投影空间中,再转换到视点区域,最后显示到屏幕上去.
3.ZBuffer是一个深度缓冲,用来储存屏幕上点的深度信息,因为屏幕是一个二维空间,而物体是有远近的区别的,所以需要一个缓冲来储存.根据需要来开启zbuffer,因为有些地方不需要用到zbuffer,比如投影到一个贴图进行影子的显示时.
4.纹理混合方式多种多样,而且可以根据自己的需要来做,有选择的假如Alpha,常用的有:source*dest + dest*(1-alpha)可以产生两张图片通过一张图片的alpha通道来透明,用来制作头发中间楼出脸庞的效果.source*alpha用来制作半透明效果.source*alpha+dest用来制作两张图片的透明混合,比如墙上的子弹坑效果.
5.我知道的3d动画方式有两种,在计算时都需要进行插值,一种是骨骼动画,按照矩阵的旋转来记录信息,随时根据矩阵的位置进行插值得到当前的位置,见于胳膊,腿等无形变的摆动动作.另外一种是顶点动画,记录顶点的位置,和下一次出现的位置,按照时间插值计算出中间时间的位置,用于细腻的刻画人物的面部表情等细微的有形状变化的动作.
6.肯定还是有必要进行数据组织的,因为显卡同时处理的再多也是有限度的,而且显卡的剪裁只是盲目的去掉了不可见的顶点,没有对场景进行组织,对于规格化的显示还是有很大的差距的.而且细节也逐渐增多,显卡可以拿出更多的力气来处理细节问题.
7.使用硬件的灯光来说d3d只能有8个光源,而现实的游戏中光源的数量是远远超过这个数量的,而且d3d的光源是实时计算的,我们很难控制。引擎中我们是采用预处理的方法给出比较逼真的静态光照的,模拟光线跟踪的方法形成一个lightmap,从而贴到场景中形成各种光线的效果,有显示速度快等优点。
8.GF4Ti显卡是一款比GF4MX更加高档和专业的显卡,在性能和频率上都有突出表现。这样就决定了GF4TI显卡在进行可编程渲染管线的编程时可以采用更加多的图形效果,进行更加复杂的图形运算。

当时太多事情要做了,根本没时间仔细回答他的题目。随随便便就这样子发回给他了,现在看看真觉得窝囊,这不是完全浪费机会嘛,答的我作为面试考官都不会要的。后面还有网络的题目,我不做也没回答。唉~


文章来源:http://songxiaoyu8.blog.163.com/blog/static/208181282007102785629187