但是有个问题就是后视景并不能由前视景简单的经过旋转180度得到(因为后视的原理是以镜平面对称),例如现在将视景绕Y轴(视景坐标系)旋转180度,出来的效果是左边的物体到右边而右边的物体到左边了,所以也不符合,现在想请教一下有没有比较简便些的算法来实现这个后视景问题。
答:这个问题不只是旋转坐标轴,而是镜面反射编程,你可网上有关编程示例。
问:我用OpenGL画曲面,原始数据通过打开数据文件获取,但为什么打开一个数据文件画好后,紧接着打开另一个文件再画时,其形状和颜色都受第一次的曲面影响?为什么我的曲面重画(刷新视区)后变成了坐标系中的平面?即各点Z坐标的值表面上看似乎变的相等了?
答:显然你没有重新设置颜色。至于形状,检查坐标数组。检查Z轴坐标值。另外,注意几何变换PushMatrix和PopMatrix。
问:如何通过屏幕坐标获取物体三维坐标?
答:使用gluUnProject函数。
问:如何在OpenGL中将显示列表的文本用字体对话框控制?
答:在显示列表中就不能进行中间变化!用字体对话框控制字体,只能在显示列表之前。
问:导入3D模型文件为什么总是不能很好的倒入纹理贴图,有什么办法可以很好的导入一个完整的3D模型文件?
答:这种情况一般都是由于纹理坐标错误。读带纹理3DS格式模型一般比较复杂,需要时间理解透彻才行,暂时可以用材质(不含纹理)代替。借鉴网上一些
免费纹理模型贴图的示例也行呀。
问:我的工程将视区分为两个后(加了一个
FormView窗体,用于放一些控制图形缩放的控件,这样它于绘图窗口共享原来的视区)为什么用OpenGL画的图不见了?我需要注意什么?错在那里?
答:注意设置好象素格式。
问: 我自己绘的四边形片怎么原来有边框和界限即一个个的小方格,现在运行程序后突然变成了一条没有任何界限的色带?程序片段如下:
glPolygonMode(GL_FRONT,GL_FILL); 111
glBegin(GL_QUAD_STRIP);
for(i=0;i<=HEIGHTNUMBER;i++)
{
glVertex3f(base,Ybase- i*Yalphe,0.0);
glColor3f(m_getMinR+i*Redalphe,
m_getMinG+i*Greenalphe,m_getMinB+i*Bluealphe);
}
glEnd();
答:调用了glPolygonMode的填充方式,当然变成色带。
问:用OpenGL做人体动画合适吗?
答:做动画可用3DSMAX这样的动画软件。而实时开发则需要OpenGL。OpenGL是很好的三维图形库,当然做人体动画需要比较复杂的编程。
问:OpenGL Extension是什么?
答:Extension是OpenGL的扩展库,各硬件厂家为了更好地发挥自己的芯片的图形性能,驱动程序支持许多特别有用的扩展库。当然,SGI和微软力求统一标准,无奈象TNT2这样的芯片产量太大,所以厂家完全可以自行其是。为此,扩展库的支持种类、支持程度与
计算机中的图形卡及其驱动
程序有关。象SGI NT
工作站完全支持SGI发布的所有扩展库,nVIDIA TNT2图形芯片一般都支持nVIDIA的扩展库。所支持的扩展库名称可在驱动程序显示高级设置中看到。目前ELSA这样的图形卡的性能较为优越,其nVIDIA GeForce2为芯片的图形卡所支持的扩展库相对比较完整。
问:在OpenGL中,房间漫游时总是要“穿墙而过”,下楼梯时总是悬浮在半空中。请教解决办法。
答:这需要图形学中的“碰撞检测”方法,具体过程比较复杂并很有技巧性。自己到网上看看吧。
问:请问在OpenGL的辅助库函数中是否有可以将所绘图形存为位图的函数?我想把所绘图形存为位图格式,有哪些方法?
答:没有现成的函数,自己写吧。
问:在标准C语言下,可用glBingTexture来贴纹理(以便硬件加速),不知道在Visual C++ 6.0下为什么不行,还是我没考虑到某些什么?
答:检查函数的使用方法;正确安装OpenGL1.1,甚至OpenGL1.2。
问:Delphi和Visual C++都支持OpenGL,如果要编