war_zes
> осваивать это все....
Я не осваиваю этого вообще. Если бы осваивал, то осваивал бы только h
могу только вспомнить забавные откровения Danilw по поводу вулкана
https://gamedev.ru/code/forum/?id=199132&page=592&m=5474779#m8874
https://gamedev.ru/code/forum/?id=199132&page=615&m=5528488#m9212
Вулкан хорош, единственный годный гапи сейчас.
еще раз пробежался по этому туториалу
https://vulkan-tutorial.com
все сделал. одна моделька на экран выводится... но я снова не понимаю - где черт возьми нато втыкнуть код чтобы вывести две разные модельки... какое же блин говнокодище этот туториал писало
ну то есть сумрачно я понимаю что на вторую модельку скорее всего надо создать второй командбуффер (а может и не надо?) но я не понимаю после какой чертовой строчки вставить его запуск
кстати, заметил что с прошлого раза это чудо кодер догадался перенести заполнение команд буфера с инициализации в выполнение. Может лет через двадцать наконец-то напишет нормальный урок...
А я буду думать где бы еще найти.
нет, серьезно - я opengl крутил по всякому, но почему тут такой затык? и ведь реально ничего больше не надо - просто вывести две разные модельки. все остальное херня.
просто вот основной фрейм
void Renderer::Draw() { vkWaitForFences( Device, 1, &InFlightFences[CurrentFrame], VK_TRUE, UINT64_MAX); uint32_t imageIndex = 0; vkAcquireNextImageKHR( Device, SwapChain, UINT64_MAX, ImageAvailableSemaphores[CurrentFrame], VK_NULL_HANDLE, &imageIndex); updateUniformBuffer( CurrentFrame); // юниформы vkResetFences( Device, 1, &InFlightFences[CurrentFrame]); vkResetCommandBuffer( CommandBuffers[CurrentFrame], 0); recordCommandBuffer( CommandBuffers[CurrentFrame], imageIndex); // заполнение командбуфера vkQueueSubmit( GraphicsQueue, 1, &submitInfo, InFlightFences[CurrentFrame]; result = vkQueuePresentKHR( PresentQueue, &presentInfo); CurrentFrame = ( CurrentFrame + 1) % MAX_FRAMES_IN_FLIGHT; }
вот если все выбросить - где тут я должен втыкнуть второй DIP?
war_zes
> я понимаю что на вторую модельку скорее всего надо создать второй командбуффер
зачем?
а на третью модельку третий команд буфер?
> заполнение команд буфера с инициализации
а что тут плохого? если отрисовка куба ни как не меняется со временем
похоже шутера для конкурса нам не видать
услада глаз моих
Я твой треугольник чистил!
war_nes
хлоркой?
продолжаю вулканировать... что-то пошло.
сейчас потрогал glslang от гугла... мде. вот тут писали о качестве кода, структуре каталогов в мою сторону..
а чего это у гугловской основной библиотеке (которая наверное юзается в 99% геймдева) такая помойка? Я бинарники либ вышкребал из кучи папок - неужели сложно было настроить чтобы оно либы кидало в одну папку, а не лазить по тыщам временных папок?
не осилили конфигурацию сборщика?
про заголовки даже промолчу - тут попроще их искать - хотя бы имя известно, а в либе просто пишет что нет нужной функции - а где эта функция - в какой из либ, которая в какой-то папке...
Да забей ты на этот С++
Вот что я посоветую, начинай ка ты заново))
берешь C# - для геймдева очень удобный язык если разобраться, и я не про юнити, просто берешь враппер вункана на C# (ну или OpenTK на худой конец) и пишешь игру, никаких либ, хедеров, мороки - взял с NuGet нужные пекеджи и чисто занимаешься движком и игрой (и радуешься) (если время остается)
DeadRipper
На плюсах тоже можно писать практически как на шарпе, если не злоупотреблять шаблонщиной.
nes
Ну вот если бы еще хедеров не было, почему то кажется что они тратят время из за того что приходится дублировать и тут и там объявления (хотя можно модули попробовать)
зато можно написать public один раз, а не для каждой функции
DeadRipper
> Ну вот если бы еще хедеров не было,
мне наоборот хедеры нравятся. - это по сути документация к апи.
когда я хочу посмотреть доступные методы класса - мне не нужно знать что там внутри каждой функции - я открываю хедер и вижу список публичных методов - имя, параметры, возвращаемое значение и даже возможно документацию.
в шарпе и аналогах это херня - хочу глянуть список апи, а вместо этого листаю тысячи строк говнокода... Можно конечно сказать что в современных ide можно сворачивать тело функции - ну это лишние телодвижения, и не факт что там не накидано всяких региончиков из-за которых нужная мне функция будет спрятана под десятком скрытых блоков - в итоге сидишь и щелкаешь мышкой по регионам чтобы найти нужное.