小编Ian*_*ess的帖子

从透视到正交矩阵的转变

我有一个简单的三角形场景.我正在使用透视投影.我设置了我的MVP矩阵(在GLM的帮助下),如下所示:

glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f);
glm::mat4 View       = glm::lookAt(
    glm::vec3(0,0,5), // Camera is at (0,0,5), in World Space
    glm::vec3(0,0,0), // and looks at the origin
    glm::vec3(0,1,0)  // Head is up (set to 0,-1,0 to look upside-down)
);  
glm::mat4 Model      = glm::mat4(1.0f);
glm::mat4 MVP        = Projection * View * Model;
Run Code Online (Sandbox Code Playgroud)

一切正常,我可以改变相机的值,三角形仍然可以正常显示.

但我想使用正交投影.当我将投影矩阵更改为正交投影时,它无法预测,我无法显示三角形,或者我只是在屏幕的一角看到它的一小部分.要使用正交投影,我这样做:

glm::mat4 Projection = glm::ortho( 0.0f, 800.0f, 600.0f, 0.0f,-5.0f, 5.0f);
Run Code Online (Sandbox Code Playgroud)

虽然我不改变视图和模型矩阵中的任何内容.我只是不能正常工作.

我只需要朝着正确的方向努力,我做错了什么?我缺少什么,我该怎么做才能正确设置正投影?

PS我不知道是否需要它,但这些是三角形的坐标:

static const GLfloat g_triangle[] = {
    -1.0f, 0.0f, 0.0f, 
    1.0f, 0.0f, 0.0f, …
Run Code Online (Sandbox Code Playgroud)

opengl 2d glsl orthographic

14
推荐指数
1
解决办法
2万
查看次数

如何在openGL中显示2个或更多对象(模型 - 视图 - 投影矩阵和着色器)

当我想绘制一个对象时,一切都好,例如一个立方体.我为立方体创建顶点,我创建缓冲区,我创建MVP矩阵并将其发送到着色器,它工作得很好.

但是,当我想要绘制2个或更多个对象时,该怎么办,例如立方体和三角形?我认为三角形和立方体的视图和投影矩阵应该相同,我只需要不同的模型矩阵,对吧?这意味着我将有两个MVP?

//Example (using GLM):

glm::mat4 MVPC = Projection * View * ModelCube; 
glm::mat4 MVPT = Projection * View * ModelTriangle; 
Run Code Online (Sandbox Code Playgroud)

那我现在怎么办这两个呢?这是适用于立方体的顶点着色器

//vertex shader
#version 330 core

layout(location = 0) in vec3 verticesCube;

uniform mat4 MVPC;

void main(){

     gl_Position =  MVPC * vec4(verticesCube,1);

}
Run Code Online (Sandbox Code Playgroud)

我应该如何处理着色器中的MVPT(三角形),我尝试搞乱不同的东西,但我无法让它工作,我无法同时显示立方体和三角形.

opengl shader glsl

6
推荐指数
2
解决办法
6885
查看次数

将数据从一个Vue.js实例输出到另一个实例

我有一个很大的页面,有很多东西在继续.所以我有两个页面的2个Vue实例.如何将数据从一个Vue实例绑定到另一个?

这个例子应该显示我想要做的事情.(这不是那样的)

<div class="app1">...</div>
...
<div class="app2">{{app1.$data.msg}}</div>
Run Code Online (Sandbox Code Playgroud)
var app1 = new Vue({
    el: '.app1',
    data: {msg: "test"}
});

var app2 = new Vue({
    el: '.app2'
});
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

5
推荐指数
1
解决办法
2144
查看次数

我可以在子查询中使用多个列吗?

我想显示EMPLOYEES表中所有员工的姓名,他们正在从表中处理三个以上的项目PROJECT.

PROJECTS.PersonID是一个外键引用EMPLOYEES.ID:

SELECT NAME, ID 
FROM EMPLOYEES
WHERE ID IN
    ( 
    SELECT PersonID, COUNT(*)
    FROM PROJECTS
    GROUP BY PersonID
    HAVING COUNT(*) > 3
    )
Run Code Online (Sandbox Code Playgroud)

我可以在子查询中同时拥有两者PersonID,COUNT(*)还是只能有一列?

sql sql-subselect

3
推荐指数
1
解决办法
4645
查看次数

使用ffmpeg修剪过滤器修剪视频,同时保留音频(使用filter_complex)

我到达了可以剪切视频的部分

ffmpeg -i test.mp4 -filter_complex 
'[0:v] trim=start=5:end=10,setpts=PTS-STARTPTS [cut]' -map [cut]  output.mp4
Run Code Online (Sandbox Code Playgroud)

它可以成功修剪视频,但是会完全删除音频。我正在尝试链接几个不同的过滤器,所以我想保留相似的语法,以某种方式保留音频。

video ffmpeg

2
推荐指数
2
解决办法
1325
查看次数

标签 统计

glsl ×2

opengl ×2

2d ×1

ffmpeg ×1

javascript ×1

orthographic ×1

shader ×1

sql ×1

sql-subselect ×1

video ×1

vue.js ×1