首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLM透视矩阵绘制

GLM透视矩阵绘制
EN

Stack Overflow用户
提问于 2022-07-29 20:57:00
回答 2查看 108关注 0票数 -1

我使用GLM为Vulkan渲染器创建了一个投影矩阵,但是在顶点着色器中将其与顶点本身相乘后,没有任何渲染。我已经定义了GLM_FORCE_RADIANS和GLM_FORCE_DEPTH_ZERO_TO_ONE (为了更好,我尝试了没有这两种方法,或者没有这两种)。此外,我也试图通过的学位或弧度,但这没有帮助。此外,我注意到正字法矩阵工作得很好!下面是我的顶点着色代码,矩阵创建本身和正面是CCW (如果可以的话),深度测试已禁用(尚未实现):

投影矩阵的创建:

代码语言:javascript
复制
    glm::mat4 projection = glm::perspective(45.0f, 16.0f / 9.0f, 0.1f, 100.0f);
    glm::mat4 model = glm::mat4(1.0f);
    model = glm::rotate(model, (float)glfwGetTime() * 30, glm::vec3(0.0f, 0.0f, 1.0f));

顶点着色器:

代码语言:javascript
复制
#version 460 core

layout(location = 0) in vec2 aPos;
layout(location = 1) in vec3 aColor;

layout(push_constant) uniform MVP {
   mat4 VP;
   mat4 Transform;
} matrices;

layout(location = 0) out vec4 Color;

void main()
{
   gl_Position = matrices.VP * matrices.Transform * vec4(aPos, 
   1.0f, 1.0f);
   Color = vec4(aColor, 1.0f);
}

我包括GLM的方式:

代码语言:javascript
复制
#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-30 08:25:33

我修好了。“问题”是投影和透视分割将-near,-far范围映射为-1,1,这将导致Z坐标的翻转。同时,我的Z坐标为10.0f,实际上是相机。解决方案是将Z坐标值设为- 10.0f,投影后将其翻转到10.0f。

票数 0
EN

Stack Overflow用户

发布于 2022-07-29 23:24:44

来自glm::perspective

如果定义了

fovy,则以弧度表示。

您正在定义GLM_FORCE_RADIANS,这意味着您应该将弧度作为值传递给glm::perspective。您的示例(45.0f)中的值看起来类似于度数,但我可能错了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73170931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档