OpenGL FAQ
(2002/04/03)
[url]mays.6to23[/url]
[url]mays.yeah.net[/url]
[url]cgd.gamedoor.net[/url]
[url]cgd.pages/cvbb/[/url]
参与者:NewCyber3D、LangFox、mays、xnp、Qian Jingping
问:我想看英文常见问题解答,有没有?
答:[url]opengl.org/developers/faqs/technical.html、openglfaq.
webvena/[/url]
问:OpenGL中的Stencil Buffer是什么东西?
答:模板缓存(Stencil Buffer)。它可以保持屏幕上某些部位的图形不变,而其它部位仍然可以进行图形绘制。比方说,可以通过模板缓存来绘制透过汽车挡风玻璃观看车外景物的画面。首先,将挡风玻璃的形状存贮到模板缓存中去,然后再绘制整个场景。这样,模板缓存挡住了通过挡风玻璃看不见的任何东西,而车内的仪表及其它物品只需绘制一次。因此,随着汽车的移动,只有外面的场景在不断地更改。
问:我如何将3D文件转换成OpenGL C程序?
答:3DWin/3D to 3D,它能将多种3D格式互相转换,还可以转存成Opengl C程序。网站:[url]stmuc/thbaier/tools.html[/url]
问:glos.h是什么文件?
答:判别操作系统的头文件。
问:OpenGL的左右缓冲区如何使用?即:gldrawbuffer()中的,GL_RIGHT、GL_LEFT参数的使用。我想做一副立体图,(两副图像交替在屏幕上不停刷新)。 图形加速卡选用的是华硕的3800带立体镜的那一种。
答:这需要看驱动程序是否支持OpenGL的左右缓冲区。据我们所知,华硕显卡不带这样的驱动。而象Diamond Fire GL系列、ELSA的Glorial系列等显卡支持这种功能。在购买显卡时,应认清驱动程序的支持性能。
问:请问用在OpenGL编程中有哪些方法可以得到两个曲面的交线?
答:OpenGL用于绘制图形,没有交线计算,需要自行开发算法。
问:关于OpenGL中雾的问题。
答:首先我想说一下OpenGL中雾的定义,OpenGL中雾的模式有三种:GL_LINEAR,GL_EXP,GL_EXP2。以GL_LINEA为例:雾的混合因子f(0=<=1)的计算公式为f=(end-z)/(end-start) 。其中start 和end 为程序设置的雾的起点和终点(即glFogf(GL_FOG_START,start); glFogf(GL_FOG_END,end);)。最值得关注的是z的定义。我手头上有好几本OpenGL的参考书,但介绍了雾的定义的却只有两本。在《OpenGL编程实例与技巧》(吴斌 毕丽蕴 编著)中,他们认为“z表示视点与图元中心的观察坐标之间的距离”。在《OpenGL深入编程与实例揭秘》(彭晓明 王坚 编著)中,他们认为“z是像素或顶点在眼坐标系中的z坐标分量值(总为负值)”。在VC++的联机帮助中说的是“Let z be the distance in eye coordinates from the origin to the fragment being fogged. ”。如果所绘制的物体不大(比如长和宽都为1个单位的矩形
),那么上面所说的都可以近似为:z就是视点与物体在观察坐标之间的距离(负值)。当绘制的物体很大时(比如长和宽都为200个单位的矩形),我认为上面的说法都值得探讨。我认为z可能是“视点与绘制物体边缘在观察坐标之间的最近距离(负值)”,上次我绘制图形时绘制了几个很大的物体,所以当我移动物体时,雾的效果并不是近处清晰,远处模糊。我想如果把大的物体划分为很小的物体进行绘制,就可以解决问题。
问:请问画树时如何将树设置为透明格式?
答:可以使用融合的方法。
问:我在做一个虚拟场景时是用Bezier曲面拟合环境中的曲面,然后再贴以纹理,但我发现这样极其占用系统资源,而且我用了显示列表来处理。我想请教一下有没有什么别的方法来拟合曲面而不是那么占用
系统资源,或者是我的用法不对。
答:当然不能用Bezier曲面拟合环境中的曲面,Bezier曲面需要大量的计算。最好的办法是直接获得曲面的顶点,采用TRANGLES或四边形来绘制。
问:我已经做好了一个视景,现在要做它的后视景,