小编She*_*dex的帖子

UBO 及其在 Vulkan 中的对齐方式

struct Light {

   glm::vec4 position;
   glm::vec4 color;
   glm::vec4 attenuation;

};

struct UBO {

   // View and projection matrix
   glm::mat4 view;
   glm::mat4 proj;

   // Fog
   glm::vec4 skyColor;
   float density;
   float gradient;

   // Clipping plane
   glm::vec4 clippingPlane;

   // Lights
   Light lights[4];

};
Run Code Online (Sandbox Code Playgroud)

伏尔甘 API:

UBO 结构体每帧都会更新,然后通过统一缓冲区传递到顶点着色器。由于光阵列未正确通过,渲染图像的颜色错误。

顶点着色器绑定:

layout (binding = 1) uniform UBO {

    // View and projection matrix
    mat4 view;
    mat4 proj;

    // Fog
    vec4 skyColor;
    float density;
    float gradient;

    // Clipping plane
    vec4 clippingPlane;

    // Lights
    Light lights[4];

} ubo; …
Run Code Online (Sandbox Code Playgroud)

shader vulkan

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

使用包含给定空格的路径启动程序

我有一个命令字符串,例如:C:\Users\...\test application.exe 以一个有空格的路径开头.
现在我想使用该system()函数启动它:

system(command.c_str());
Run Code Online (Sandbox Code Playgroud)

但问题是,它不会启动因为路径包含空格.我该怎么做才能解决这个问题?

c++

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

GLSL变量不从顶点传递到片段着色器

尝试将浮点数从顶点传递到片段着色器时,我遇到了一个奇怪的错误.

顶点着色器:

#version 450

out float someFloat;

void main() {
someFloat = 1.0;
// some code ...
}
Run Code Online (Sandbox Code Playgroud)

片段着色器:

#version 450

in float someFloat;

void main() {

// some code using someFloat ...
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,总是传递零,而这是有效的:

顶点着色器:

 #version 450

 layout (location = 0) out float someFloat;

 void main() {

    someFloat = 1.0;

    // some code ...
 }
Run Code Online (Sandbox Code Playgroud)

片段着色器:

#version 450

layout (location = 0) in float someFloat;

void main() {

// Some code using someFloat ...
}
Run Code Online (Sandbox Code Playgroud)

但是,如何在不使用位置的情况下完成此操作?

glsl vulkan

0
推荐指数
1
解决办法
611
查看次数

标签 统计

vulkan ×2

c++ ×1

glsl ×1

shader ×1