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
如何在OpenGL 3.0+;中从模型空间移动到正交视图;?_Opengl_Matrix_Orthographic - Fatal编程技术网

如何在OpenGL 3.0+;中从模型空间移动到正交视图;?

如何在OpenGL 3.0+;中从模型空间移动到正交视图;?,opengl,matrix,orthographic,Opengl,Matrix,Orthographic,我最近在OpenGL中完成了一些示例,结果我在空间-1>=x=y中绘制了一些三角形 要移动到正交视图,我需要做什么?我需要执行哪些转换 必须应用正交投影。请注意,到目前为止使用的标识变换已经是正交的 将转换过程分解为投影和模型视图转换是一个好主意。每一个都由一个4×4矩阵来描述,您可以右键单击,该矩阵将作为统一体传递给顶点着色器 典型的顶点着色器布局如下所示 #version 120 /* or something later */ attribute vec4 position; unif

我最近在OpenGL中完成了一些示例,结果我在空间
-1>=x=y中绘制了一些三角形
要移动到正交视图,我需要做什么?我需要执行哪些转换

必须应用正交投影。请注意,到目前为止使用的标识变换已经是正交的

将转换过程分解为投影和模型视图转换是一个好主意。每一个都由一个4×4矩阵来描述,您可以右键单击,该矩阵将作为统一体传递给顶点着色器

典型的顶点着色器布局如下所示

#version 120 /* or something later */

attribute vec4 position;

uniform mat4 proj;
uniform mat4 mv;

varying vec4 vert_pos; // for later versions of GLSL replace 'varying' with 'out'

void main()
{
    // order matters, matrix multiplication is not 
    vert_pos = proj * mv * position; commutative */
}
投影矩阵本身必须由您提供。您可以查看较旧的固定函数OpenGL规范,以了解它们是如何实现的。或者您使用一些现成的图形数学库,如Or(自广告)

因评论而更新 modelview变换用于设置视点和绘制到场景中的几何体的位置。通常,模型视图对于绘制的每个模型都不同。Modelview本身可以分解为模型和视图。视图是一些人使用某种“注视”功能设置的。模型是几何布局部分

投影是OpenGL的一种“镜头”,它负责“正交”或“透视”或任何外观

如上所述,要使用的特定投影是用户定义的,但通常遵循早期OpenGL规范或图形数学库中的典型转换矩阵。只要看看OpenGL的一些老规范(比如OpenGL-1.5左右)就可以了解正交矩阵和平截头体矩阵的定义(它们可以在固定函数glOrtho和glFrustum中找到)

要移动到正交视图,我需要做什么?我需要执行哪些转换

必须应用正交投影。请注意,到目前为止使用的标识变换已经是正交的

将转换过程分解为投影和模型视图转换是一个好主意。每一个都由一个4×4矩阵来描述,您可以右键单击,该矩阵将作为统一体传递给顶点着色器

典型的顶点着色器布局如下所示

#version 120 /* or something later */

attribute vec4 position;

uniform mat4 proj;
uniform mat4 mv;

varying vec4 vert_pos; // for later versions of GLSL replace 'varying' with 'out'

void main()
{
    // order matters, matrix multiplication is not 
    vert_pos = proj * mv * position; commutative */
}
投影矩阵本身必须由您提供。您可以查看较旧的固定函数OpenGL规范,以了解它们是如何实现的。或者您使用一些现成的图形数学库,如Or(自广告)

因评论而更新 modelview变换用于设置视点和绘制到场景中的几何体的位置。通常,模型视图对于绘制的每个模型都不同。Modelview本身可以分解为模型和视图。视图是一些人使用某种“注视”功能设置的。模型是几何布局部分

投影是OpenGL的一种“镜头”,它负责“正交”或“透视”或任何外观


如上所述,要使用的特定投影是用户定义的,但通常遵循早期OpenGL规范或图形数学库中的典型转换矩阵。只要看看OpenGL的一些老规范(比如OpenGL-1.5左右)来定义正交矩阵和平截头体矩阵(它们可以在固定函数glOrtho和glFrustum中找到)。

谢谢,正交变换是什么样子的?您能详细介绍一下模型视图转换吗?感谢您的澄清,最后,在视图空间中使用逻辑坐标与使用窗口的实际像素宽度和高度如何比较?@MarkIngram:这一切归结为一个坐标转换过程。你可以从你喜欢的抽象向量开始。OpenGL对您施加的唯一约束是,最终结果必须在剪辑空间中,在值范围[-1,1]内,并且OpenGL随后将应用同质分割步骤。然后将值范围[-1,1]映射到视口范围。其他一切都取决于你,也就是说,你可以在你想要的任何东西上应用转换;唯一的限制是你的想象力。@MarkIngram:在正交投影映射到视口像素的情况下,好:
ortho(左=0,右=viewport\u width,下=0,上=viewport\u height,z\u limit\u near,z\u limit\u far)
+1表示linmath.h;很难找到一个“切中要害”的opengl数学库,它是C兼容的,并且是在一个非常灵活的许可证下发布的。谢谢,正交变换是什么样子的?您能详细介绍一下模型视图转换吗?感谢您的澄清,最后,在视图空间中使用逻辑坐标与使用窗口的实际像素宽度和高度如何比较?@MarkIngram:这一切归结为一个坐标转换过程。你可以从你喜欢的抽象向量开始。OpenGL对您施加的唯一约束是,最终结果必须在剪辑空间中,在值范围[-1,1]内,并且OpenGL随后将应用同质分割步骤。然后将值范围[-1,1]映射到视口范围。其他一切都取决于你,也就是说,你可以在你想要的任何东西上应用转换;唯一的限制是你的想象力。@MarkIngram:在正交投影映射到视口像素的情况下,好:
ortho(左=0,右=viewport\u width,下=0,上=viewport\u height,z\u limit\u near,z\u limit\u far)
+1表示linmath.h;很难找到一个与C兼容并在非常灵活的许可证下发布的“切中要害”的opengl数学库。