请问一个在opengl中我老是不明白的问题,
在opengl中的窗口显示区域对应opengl的坐标系统是x,y,z的坐标值都是-1到1
但是我想要表达的是真实的现实世界,其坐标都很大,
我在做三维地形的可视化,空间中的任意一个点的高度一般都在100以上
我直接按照实际的坐标值代入计算,可是最后总是什么也画不出来
请问这是怎么回师
在这样的情况下,我该怎么半
谢谢各位
问题点数:20、回复次数:7Top
1 楼alphapaopao(炮炮)回复于 2004-08-02 11:47:47 得分 1
使用 glScale。
这个函数可以搞定任何尺度的模型。Top
2 楼Cadillac(努力学好C++发奋学好English)回复于 2004-08-02 13:39:03 得分 0
请问为什么我在使用原始的数据(比如一个点坐标是200,300,500)
这些点组成的一个区域,在渲染的时候cpu占用率总是100%
我没有使用glscale我是用的gltranslatef
请问这样不行吗Top
3 楼alphapaopao(炮炮)回复于 2004-08-02 14:04:29 得分 5
渲染肯定要占用CPU。至于占用多少,要看模型的复杂程度,和你的图形卡的能力。
使用glScale的目的是当前变换的比例,时的模型能够显示在设备上。Top
4 楼syy64(太平洋)回复于 2004-08-03 18:31:24 得分 1
采用实际坐标系就行。Top
5 楼Tieren_love(甜蜜程序员)回复于 2004-08-11 14:47:36 得分 5
把范围设大一点
void CLoad3dsView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
/////////////////////////////////////////////////////////////////
//添加窗口缩放时的图形变换函数
glViewport(0,0,cx,cy);
float aspect = (float)cx / (float)cy;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// glFrustum(-aspect, aspect, -1, 1, 1, 10000);
gluPerspective(60.0f, aspect, 0.1, 100000);
glMatrixMode(GL_MODELVIEW);
/////////////////////////////////////////////////////////////////
}Top
6 楼ljkingtian(把酒谢天)回复于 2004-08-11 19:24:49 得分 1
还是应该按比例缩放比较好,OPENGL里也都是相对坐标。Top
7 楼JinCC(LION)回复于 2004-08-16 08:40:16 得分 7
设定屏幕坐标与世界坐标比例来解决尺寸问题较好,glscale效率太低。
OPENGL里用的是相对坐标,如用用绝对坐标,可以采用glPushMatrix,glPopMatrix来快速恢复当前坐标系。Top




