反恐精英ol的d3d模式,但是改了d3d和opengll模式应用确定后再看又变回d3d ,怎么回事?怎么办?急求

  通常在图形编程中需要能够将場景渲染到纹理上,并且针对某些目的可以使用这些纹理例如,也许想在游戏中有一个安全监视器游戏中间有一个电视屏可以在不同嘚位置显示游戏的状态。这对游戏玩家而言非常有用,并且可以在很大程度上提高程序的真实感

 同样,也可以使用幕外渲染技术创建映射、阴影映射纹理和大量如场地模糊、夜视、热视力、高精度动态范围渲染等许多不同的后处理效果在Direct3D中实现幕外渲染需要创建幕外表面,并对其渲染而不是渲染到常用的后台缓存中然后将渲染结果存储在贴在幕外表面上的纹理图像中。并且可以像所有常用的纹理图潒一样使用要增加幕外渲染功能,只要创建一个LPDIRECT3DSURFACE9对象并在想要渲染该对象时,切换到该对象即可Direct3D在内部可以处理这一切工作,所以尤其是和OpenGL中的幕外渲染相比这里的工作量要少很多。

 有了创建好的纹理就可以调用LPDIRECT3DTEXTURE9的成员函数GetSurfaceLevel()创建幕外表面。GetSurfaceLevel()函数是一个可以从纹理對象中获取表面对象的函数该表面就是要渲染的表面,而纹理对象将场景存储为一幅图像而不是将其显示在屏幕上。GetSurfaceLevel()函数原型如程序清单4.23所示其中,Level是创建表面时的纹理资源级别ppSurfaceLevel是正在创建的LPDIRECT3DSURFACE9对象。


    有了这两个函数就需要一个渲染用的幕外表面和纹理。要牢記:为了避免内存泄漏在使用完对象后,一定要释放它们到目前为止,这对所创建和使用的每个Direct3D对象都是如此



参考资料

 

随机推荐