Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.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 格洛托(-1,1,-1,1,-1,1)完成了什么?_C_Opengl - Fatal编程技术网

C 格洛托(-1,1,-1,1,-1,1)完成了什么?

C 格洛托(-1,1,-1,1,-1,1)完成了什么?,c,opengl,C,Opengl,我在读书,却不明白 我在看这个二维图形的调整大小代码,但不明白为什么有些索引是正的,有些是负的。这幅画应该是平的,所以我不知道它是否做了应该做的: void reshape(int width, int height) { glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1, 1, -1, 1, -1, 1); //left

我在读书,却不明白

我在看这个二维图形的调整大小代码,但不明白为什么有些索引是正的,有些是负的。这幅画应该是平的,所以我不知道它是否做了应该做的:

void reshape(int width, int height)
{

    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity(); 
    glOrtho(-1, 1, -1, 1, -1, 1); 
   //left, right, bottom, top, nearval, farval 
    glMatrixMode(GL_MODELVIEW);

}

它正在构造投影矩阵
glOrtho
将当前矩阵(由于前面的语句而成为单位矩阵)乘以函数指定的正交投影矩阵

具体来说,对
glOrtho
的调用正在构造一个矩阵,该矩阵将把(-1,-1,-1)的世界坐标放在屏幕的左下方,把(1,1,1)的世界坐标放在屏幕的右上方。如果你要画三角形:

glBegin(GL_TRIANGLES);
glVertex3f(-1, -1, 0);
glVertex3f(-1, 1, 0);
glVertex3f(1, -1, 0);
glEnd();
它将正好覆盖屏幕的一半


请注意,如果仅使用2D,则最后两个参数并不重要(尽管它们可用于控制图层)。只要用z=0画出所有的东西,如果你需要把一些东西放在其他东西的前面,那么就用更高的z值。

这是在构造投影矩阵
glOrtho
将当前矩阵(由于前面的语句而成为单位矩阵)乘以函数指定的正交投影矩阵

具体来说,对
glOrtho
的调用正在构造一个矩阵,该矩阵将把(-1,-1,-1)的世界坐标放在屏幕的左下方,把(1,1,1)的世界坐标放在屏幕的右上方。如果你要画三角形:

glBegin(GL_TRIANGLES);
glVertex3f(-1, -1, 0);
glVertex3f(-1, 1, 0);
glVertex3f(1, -1, 0);
glEnd();
它将正好覆盖屏幕的一半


请注意,如果仅使用2D,则最后两个参数并不重要(尽管它们可用于控制图层)。只要用z=0绘制所有内容,如果需要将某个内容放在其他内容的前面,则使用更高的z值。

它实际上除了翻转z坐标之外什么都不做。如果你插入你的值,你会看到它生成了矩阵

1  0  0  0
0  1  0  0
0  0 -1  0
0  0  0  1
请注意,它不是单位矩阵,因为
glOrtho
非常愚蠢(请注意减号):

(左,下,-nearVal)
(右,上,-nearVal)
指定近剪裁平面上分别映射到窗口左下角和右上角的点,假设眼睛位于(0,0,0)
-farVal
指定远剪裁平面的位置


这些减号意味着
fNear
fFar
具有相反的含义。

它实际上除了翻转z坐标之外什么都不做。如果你插入你的值,你会看到它生成了矩阵

1  0  0  0
0  1  0  0
0  0 -1  0
0  0  0  1
请注意,它不是单位矩阵,因为
glOrtho
非常愚蠢(请注意减号):

(左,下,-nearVal)
(右,上,-nearVal)
指定近剪裁平面上分别映射到窗口左下角和右上角的点,假设眼睛位于(0,0,0)
-farVal
指定远剪裁平面的位置


这些减号意味着
fNear
fFar
具有相反的含义。

什么会起作用(0.0f,窗宽,窗高,0.0f,0.0f,1.0f);完成?世界的极限是窗宽和窗高,对吗?没错,尽管你必须小心地用z=0绘制,因为它正好位于z域的边缘(任何带z1的东西都会被隐藏)。如果您计划在z=0时绘图,那么为了安全起见,最好将范围设置为(-1,+1)左右;完成?世界的极限是窗宽和窗高,对吗?没错,尽管你必须小心地用z=0绘制,因为它正好位于z域的边缘(任何带z1的东西都会被隐藏)。如果您计划在z=0处绘制,那么为了安全起见,最好将范围设置为(-1,+1)。