У меня есть буфер (используется как в SSBO, так и в VBO), который содержит составной тип данных с чередованием чисел с плавающей точкой и целых чисел без знака:
struct VertexData
{
struct
{
float x;
float y;
float z;
} position;
struct
{
float u;
float v;
} tex_coords;
GLuint entity_id;
};
glBufferData(GL_ARRAY_BUFFER, sizeof(VertexData) * buffer_maxSize, nullptr, GL_DYNAMIC_DRAW);
Когда я очищаю буфер, я использую следующую функцию:
glClearBufferData(GL_SHADER_STORAGE_BUFFER, GL_R32UI, GL_RED, GL_UNSIGNED_INT, nullptr);
Это работает, но, поскольку формат GL_R32UI
не соответствует фактическому типу данных (VertexData
), я боюсь, что код может работать не на всехмашина / драйвер.
В случае, если код не является переносимым, какую функцию мне следует использовать?
В качестве отступления, я должен использовать GL_FLOAT в моем VertexData для лучшегопереносимость