e*******d 发帖数: 266 | 1 请教一个问题,采用glViewport和glScissor加上glOrtho做四分屏多角度显示
但是现在遇到的问题是设置glLookAt的时候总也找不到侧面,只有正面,设置成侧面和
后面角度的时候就是一片黑暗,这个是为啥
求有经验的人指教,可以包子酬谢 | l********a 发帖数: 1154 | 2 你的视截体near和far设置的多少,上下左右呢? | e*******d 发帖数: 266 | 3 基于OpenGL来做一个分屏然后多角度显示的程序,基本上按照glfw的splitview例程的
思路来的,但是分屏显示的东西是MMDAgent,一个3D人物显示的程序
我基本核心代码结构是这个样子的:
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f);
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glEnable( GL_SCISSOR_TEST );
glMatrixMode( GL_MODELVIEW );
//glMatrixMode( GL_PROJECTION );
这里有一个很诡异的问题,我用PROJECTION完全黑屏,但是MODELVIEW却可以,理论上
glOrtho什么的不是应该用在PROJECTION矩阵上么?
glLoadIdentity();
glOrtho( -10.0, 10.0, -10.0, 10.0, 1.0, 50.0 );
glViewport( 0, 0, windowWidth, windowHeight );
glScissor( 0, 0, windowWidth, windowHeight );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt( eye.x, eye.y, eye.z, // Eye-position (in back of)
center.x, center.y, center.z, // View-point
up.x, up.y, up.z ); // Up-vector
这个是控制角度,坐标由按键进行控制
mmdagent->updateAndRender2();
这个updateAndRender2函数是调用的原来MMDAgent里面的函数,主要是绘出人物
下面重复三次绘制其他三个分屏幕的图像
glViewport( windowWidth/2, windowHeight/2, windowWidth/2, windowHeight/2 );
glScissor( windowWidth/2, windowHeight/2, windowWidth/2, windowHeight/2 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
gluLookAt。。。。。
现在最诡异的问题有两个:
glOrtho我现在用在PROJECTION上会黑屏
现在只能看到人物的正面,如果设置gluLookAt的坐标去看侧面和后面也会黑屏没显示
已经调试了快一个星期了,没结果,求大家指教。。
【在 l********a 的大作中提到】 : 你的视截体near和far设置的多少,上下左右呢?
| l********a 发帖数: 1154 | 4 我刚去看了我的代码,的确是glOrtho之前用的Projection矩阵
glOrtho是视截体的左右上下前后位置,
你的模型的x,y,z的极大极小值是多少呢?
一般一面看得到,一面黑的最常见情况是
zNear和zFar设置的问题,你确定视景体z轴1-50的范围能把模型框住吗? |
|