我正在尝试创建一个需要首先初始化成员变量的类。我知道为什么会发生这种情况,但是有没有办法解决这个问题?
当前打印顺序:第二优先
想要的打印顺序:第一秒
#include <iostream>
struct A {
A() {
std::cout << "first" << '\n';
}
};
struct B {
B() {
std::cout << "second" << '\n';
}
};
struct C : public B {
C() : a(), B() {
}
A a;
};
int main() {
C c;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有多个使用着色器存储缓冲区的 glsl 文件。如果我将缓冲区基础与其他着色器文件绑定,但它们在存储缓冲区中的位置相同,则它们似乎会相互影响。这是否意味着我必须以某种方式解除绑定?当我为每个文件选择其他位置时,它们似乎对代码没有影响。
例如
第一.vs
layout(std430, binding = 0) buffer texture_coordinate_layout
{
vec2 texture_coordinates[];
};
Run Code Online (Sandbox Code Playgroud)
第二.vs
layout(std430, binding = 0) buffer vertices_layout
{
vec2 vertices[];
};
Run Code Online (Sandbox Code Playgroud)
当有两个不同的着色器程序时,当我像这样绑定每个程序时
第一个着色器程序
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, m_vertex_ssbo);
Run Code Online (Sandbox Code Playgroud)
第二个着色器程序
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, m_texture_coordiante_ssbo);
Run Code Online (Sandbox Code Playgroud) 我嵌套了 std::array,其维度由模板参数 std::array<type, n, ...> 处理。
我想知道如何在 std::array<std::array<int, 2>, 2> 中获得 int 类型。
在这种情况下,我们可以只做 std::array<std::array<int, 2>, 2>::value_type::value_type,但是我如何才能做到这一点而不必放置与维度一样多的 value_types?