Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL多个视口和透视图()_C++_Opengl - Fatal编程技术网

C++ OpenGL多个视口和透视图()

C++ OpenGL多个视口和透视图(),c++,opengl,C++,Opengl,因此,我试图学习如何使用glViewport(),“多次”。下面是我的代码,我试着跟随其他示例,但它们要么与其他与我正在做的事情无关的事情纠缠不清,要么我不理解它们在做什么。顺便说一下,我正在使用glut管理我的窗口系统。所以,对我来说,最好的学习方法是让自己运行一个简单的例子,然后从中推断。下面是我为一个简单程序编写的代码,该程序将屏幕一分为二并绘制两个相同的球体,我不明白为什么当两个视口的gluPerspective()相同时,右侧的球体会拉伸。请,如果你能向我解释一下我在代码中犯了什么错误

因此,我试图学习如何使用glViewport(),“多次”。下面是我的代码,我试着跟随其他示例,但它们要么与其他与我正在做的事情无关的事情纠缠不清,要么我不理解它们在做什么。顺便说一下,我正在使用glut管理我的窗口系统。所以,对我来说,最好的学习方法是让自己运行一个简单的例子,然后从中推断。下面是我为一个简单程序编写的代码,该程序将屏幕一分为二并绘制两个相同的球体,我不明白为什么当两个视口的gluPerspective()相同时,右侧的球体会拉伸。请,如果你能向我解释一下我在代码中犯了什么错误,这将非常有帮助。外部资源很好,但我需要简单的例子(不是Nate Robinson的例子)

请注意,我在等待响应时正在四处游荡,我让它做了我想做的事情,但解决方案不起作用,因为,请看代码行,基本上我将视口开始位置移动到屏幕的1/4,而不是一半,并且我不再在透视图上除以2

/*
 *  THE SECOND VIEW PORT
 */

    glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(width/4, 0, width , height);
gluPerspective(45, ((float)width)/(((float)height)), 1, 2000);

glViewport的第二对参数是宽度和高度,而不是结束x/y位置。第二个glViewport应该是
glViewport(宽度/2,0,宽度/2,高度)

/*
 *  THE SECOND VIEW PORT
 */

    glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(width/4, 0, width , height);
gluPerspective(45, ((float)width)/(((float)height)), 1, 2000);