Я знаю, что существуют действительно эффективные методы и структуры данных для отправки вокселей например, Sparse Voxel Octrees, но я хочу начать с простого, только с одного фрагмента.
В C++ чанк определяется как:
Код: Выделить всё
struct Chunk {
alignas(4) int voxelNum;
alignas(4) float voxelSize;
alignas(4) float chunkSize;
alignas(16) glm::vec4 position;
bool grid[16 * 16];
};
Код: Выделить всё
struct Chunk {
int voxelNum;
float voxelSize;
float chunkSize;
vec4 position;
bool grid[16 * 16];
};
layout (std140) uniform ChunkData {
Chunk chunk;
};
Код: Выделить всё
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_UNIFORM_BUFFER, buffer);
glBufferData(GL_UNIFORM_BUFFER, sizeof(Chunk), &chunk, GL_STATIC_DRAW);
Как с этим справиться? Точнее, как я могу отправить одну подобную структуру из моего кода C++ в шейдер?
Подробнее здесь: https://stackoverflow.com/questions/791 ... as-an-ssbo