猪厂游戏研发一面回忆
1、printf和cout的区别?printf有什么隐患?
printf是变参函数,不做类型检查,不安全,且无法支持不认识的类型的格式化输出,cout是ostream的对象,可重载<<,且会进行类型检查
2、string s1 = "hello"; cout<<sizeof(s1);
输出的应该是string类型的大小,4字节
3、vector的拷贝构造函数如何使用的?
1)值传递vector参数 2)返回vector类型 3)二维数组 4)复制已有的vector变量
4、unordered_map产生冲突如何解决的?
创建一个链表来存储同一个key值的value
5、A*算法
6、如何实现物体描边?
只答出用模板测试的方法,具体可以去看看其他方法
7、shadowmap里比较zbuffer时,怎么保证比较同一个点(因为两次pass是在不同的空间下的)?为何要在裁剪空间下比较?
在第二个pass也就是以摄像机为视角渲染时,要将世界空间下物体的坐标转换到光源空间下输送给片元着色器,片元着色器将其转换成NDC下坐标,并对第一遍pass存下来的zbuffer进行采样,然后比较两者深度值。第二个问题是因为要进行一个裁剪,剔除掉视锥外的物体(也可能是因为平行光采用正交投影,点光源采用透视投影)
8、lightmap如何生成的?
9、如何判断点在三角形内?