Size: a a a

pro.graphon (and gamedev)

2020 March 02

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
disba1ancer
@xproger @mrshoor @Ioann_V @Triang3l что посоветуете?
Конструктор сомнительный, даже не указывает, что это за тип буфера (binding target), но если тебе нужна просто RAII-обёртка над хендлом, то норм, если тебе с ней удобно
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Ну или так, наоборот, да
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Но можно такое и шаблоном сделать для всех типов хендлов
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Или в шаблоны нельзя передавать как аргументы функции?
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Жди фенс (или queue или device idle), пересоздавай VkImage и все зависимые VkFramebuffer и дескрипторы
vkDeviceWaitIdle
источник

TG

Timur Gagiev in pro.graphon (and gamedev)
disba1ancer
есть такой класс для буферов:
class Buffer {
 GLuint buffer;
protected:
 Buffer() {
   glGenBuffers(1, &buffer);
 }
public:
 ~Buffer() {
   glDeleteBuffers(1, &buffer);
 }
 Buffer(const Buffer &other) = delete;
 Buffer(Buffer &&other) : buffer(other.buffer) {
   other.buffer = 0;
 }
 Buffer& operator=(const Buffer &other) = delete;
 Buffer& operator=(Buffer &&other) {
   std::swap(buffer, other.buffer);
   return *this;
 }
 operator GLuint() {
   return buffer;
 }
};
как думаете стоит создать для него конструктор пустого состояния?
думаю, ты не ту задачу решаешь )
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Но можно такое и шаблоном сделать для всех типов хендлов
у меня наследник шаблон в его конструкторе делается бинд, только сейчас на шаблоны переделал
источник

d

disba1ancer in pro.graphon (and gamedev)
Alexander Busarov
Посоветую не создавать в конструкторе буфер. Ибо успех сей операции зависит от того забинжен ли контекст или нет
если контекст не забинжен, то тут точно что-то не так
источник

AB

Alexander Busarov in pro.graphon (and gamedev)
disba1ancer
если контекст не забинжен, то тут точно что-то не так
Не люблю конструкторы, которые зависят от глобального стейта
источник

d

disba1ancer in pro.graphon (and gamedev)
Alexander Busarov
Не люблю конструкторы, которые зависят от глобального стейта
ну это гл, тут либо нужно ещё больше усложнять, либо делать по простому
источник

U

UsernameAK in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Жди фенс (или queue или device idle), пересоздавай VkImage и все зависимые VkFramebuffer и дескрипторы
он спросил можно ли без этого
источник

S

Stas in pro.graphon (and gamedev)
Спрашивал, однако потерял линк. Что можно посмотреть/почитать по архитектуре GPU?
источник

VT

Vladimir Trubilov in pro.graphon (and gamedev)
источник

S

Stas in pro.graphon (and gamedev)
Спасибо.
источник
2020 March 03

d

disba1ancer in pro.graphon (and gamedev)
сейчас в голову пришёл ещё один вариант для организации субмешей, сделать каждый субмеш не отдельными массивами, а разместить их в общем массиве с требованием размещать индексы субмешей так чтобы для одного субмеша они лежали рядом без "дыр"
источник

d

disba1ancer in pro.graphon (and gamedev)
а ещё пришёл в голову способ более удобной загрузки
источник

d

disba1ancer in pro.graphon (and gamedev)
в общем, пока пришёл вот к такому интерфейсу меша:
class IMesh {
public:
 struct vertex {
   math::vec3 pos;
   math::vec3 norm;
   math::vec3 tang;
   math::vec2 uv;
   float reserve;
 };
 struct mesh_parameters {
   std::uint32_t verticesCount;
   std::uint32_t elementsCount;
   std::uint32_t submeshCount;
 };
 struct submesh_range {
   std::uint32_t start;
   std::uint32_t end;
 };
 virtual mesh_parameters getMeshParameters() = 0;
 virtual void loadVerticesRange(vertex* vertexBuffer, std::uint32_t startVertex, std::uint32_t endVertex) = 0;
 virtual void loadElementsRange(std::uint32_t* vertexBuffer, std::uint32_t startVertex, std::uint32_t endVertex) = 0;
 virtual submesh_range getSubmeshRange(std::uint32_t submeshIndex) = 0;
 virtual unsigned getVersion() = 0;
protected:
 ~IMesh() = default;
};
источник

VT

Vladimir Trubilov in pro.graphon (and gamedev)
попробуй атрибуты в декларатор какой-нить завернуть. А то интерфейс, а привязан к формату вершин
источник

d

disba1ancer in pro.graphon (and gamedev)
Vladimir Trubilov
попробуй атрибуты в декларатор какой-нить завернуть. А то интерфейс, а привязан к формату вершин
какой ещё декларатор? вообще у меня так и задумана привязка к формату вершин, по крайней мере тут рендер при загрузке может отконвертировать его как хочется
источник

VT

Vladimir Trubilov in pro.graphon (and gamedev)
какой хочешь: битфилды, как fvf,
источник