Vulkan with C++ 12: Rendering

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ธ.ค. 2024

ความคิดเห็น • 29

  • @DasAntiNaziBroetchen
    @DasAntiNaziBroetchen ปีที่แล้ว +4

    Seeing your title I went "Wtf is C++ 12? That's not a thing.".

  • @zdspider6778
    @zdspider6778 8 หลายเดือนก่อน +1

    05:46 Member variables in "engine.h" are initialized with "nullptr", except they're not pointers. A simple "{}" is enough.

  • @xavierrispal9605
    @xavierrispal9605 2 ปีที่แล้ว +10

    At last something is drawn !!! That's so cool !! Vulkan is sooo hard that seing this sweet triangle is somehow a victory :-D I like the way you structured your engine. Good job Andrew, quite inspiring !! I hope that object loading will come soon, why not using glTF format for a change ? ;-)

    • @GetIntoGameDev
      @GetIntoGameDev  2 ปีที่แล้ว +1

      Thanks! Yeah, it's very satisfying. Model loading will be coming soon, I have a few things to look at first. glTF sounds interesting! I've seen it popping up a bit recently, thanks for the suggestion!

  • @zdspider6778
    @zdspider6778 8 หลายเดือนก่อน +1

    03:46 and 14:10 The "inputChunk" parameter should be passed by 'const&', to avoid copying 24 bytes.
    07:44 The "frame" variable is created as a COPY at each iteration loop. Use 'const&' to avoid unnecessarily copying 96 bytes (32 bytes * 3 frames)."

  • @franklynotyourbussiness9401
    @franklynotyourbussiness9401 ปีที่แล้ว +1

    just a sidenote here. I know this is only for demonstration process, and debug work, but measuring time with floating points lead to precision errors over time. In actual production uint64 timers should be used for storing timestamps (for measuring delta it pretty much doesn't matter). Grabbing that in this context is easily done via glfwGetTimerValue(), and to get time in seconds: double InSeconds = double(Timer)/10000000;
    Again: not an error, but just to reinforce good habits. I'm writing this, cause I had the priviledge of having to change entire time measuring codebase for our game at work, because of similar "storing time in FPs" issue.

    • @GetIntoGameDev
      @GetIntoGameDev  ปีที่แล้ว

      Awesome, thanks, that’s really good to know!

  • @zdspider6778
    @zdspider6778 8 หลายเดือนก่อน

    27:04 There's a C++11 feature called "member initializer list". It's better. Because it creates an instance of the class with those values already set (in one go, at creation time), instead of first creating it then running each line from the constructor where those member variables are individually set.
    No offence, but you write code like you come from C# or Java... Like: "return nullptr;" when the return type is a struct (and not a POINTER). 😆 But I really appreciate the tutorial series. I'm sorry if it doesn't show with all these comments. I'm really grateful!

  • @Creeperking-bw7wi
    @Creeperking-bw7wi ปีที่แล้ว +1

    I don't really like that glfw is initialized inside of "App" and terminated inside of "Engine". It's not like this is wrong but I just feel like initializing and terminating should be the responsibility of a single class.
    Still great video. This series is probably the best resource to get started with vulkan

    • @GetIntoGameDev
      @GetIntoGameDev  ปีที่แล้ว

      Good point! I'll have to fix that.

  • @sehzadeselim863
    @sehzadeselim863 ปีที่แล้ว +1

    Hi! Maybe anyone knows what should I do if I see "The procedure entry point vkCmdEndRendering could not be located in the dynamic link library" message? regsvr32 didn't work, sfc /scannow showed nothing either 🥺

    • @sehzadeselim863
      @sehzadeselim863 ปีที่แล้ว

      okay I updated graphic drivers and faced that: Exception thrown at 0x0000000000000000 Access violation (it refers to vkCmdEndRendering function)

    • @sehzadeselim863
      @sehzadeselim863 ปีที่แล้ว

      I forgot to mention that problem had solved. I should have used commandBuffer.end() instead of commandBuffer.endRenderinf()

  • @andreagenor
    @andreagenor 2 ปีที่แล้ว +1

    Hi, your tutorials are awesome, I am following and trying to use them with Qt Qml, but I realize that I need to render to texture, can you show me how can I do it? I would like to abstract the output but I do not understand how to do it

    • @GetIntoGameDev
      @GetIntoGameDev  2 ปีที่แล้ว +1

      Thanks Andre, I'm glad you're enjoying the tutorials! Yeah I know what you're saying, QT sort of deals with views rather than a global renderer. I might look at that at a future point, thanks for reaching out!

  • @chrisbrownrigg2886
    @chrisbrownrigg2886 ปีที่แล้ว

    If you use c++200 fps routine causes an error you have to go back to c++17

  • @paulosantana9607
    @paulosantana9607 ปีที่แล้ว

    After this step my window says it's locked at 60fps, do you know why? I'm using linux, so I think it's because of the lack of the mailbox support by my nvidia drivers, the processor would be stuck waiting for the images in the swapchain to be presented... But if that's the case, do' you know how to unlock the FPS? The monitor I'm running the program is 165hz, so one would think the loop would run at an equivalent fps

    • @paulosantana9607
      @paulosantana9607 ปีที่แล้ว

      Ah, nevermind, I forced the present mode to be mailbox and got the fps improvement I was looking for. Even tho it's not "supported" by my 3080ti on linux, it seems to be working fine. I guess I'll figure if there's a problem once the image starts moving, idk

  • @tarek3735
    @tarek3735 2 ปีที่แล้ว

    for some reason the triangle is not showing up I almost copy pasted everything from the tutorial but cannot find where the problem.

    • @tarek3735
      @tarek3735 2 ปีที่แล้ว

      never mind it's working I missed something in the shader.vert

  • @xbz24
    @xbz24 11 หลายเดือนก่อน

    nicee

  • @vertexia9982
    @vertexia9982 8 หลายเดือนก่อน

    If you're running into an error that say's "CommandBufferBeginInfo does not have function VkGetHeaderVersion". Remove the BeginInfo object from commandBuffer.end()
    The only input commandBuffer.end() takes is a dispatcher.
    I was dealing with that for way too long- and it's my fault too, it's done correctly in the video

  • @zdspider6778
    @zdspider6778 8 หลายเดือนก่อน

    Your implementation of an fps counter is broken, it says "58" (on a 60Hz monitor) with the FIFO present mode.
    It should say 60. 😤
    Well, ideally, it should say in milliseconds (ms). Because FPS is a poor metric. But a lot of people are more comfortable with FPS (which is just "1000.0 / timeInMs").
    There's an article called "An FPS counter" on OpenGL-Tutorial.