On OpenGL, GlRenderPass.setVertexBuffer stores the argument unconditionally, so null empties the slot and the next draw fails the required-slot check in VertexArray.bind(). On Vulkan, VulkanRenderPass.setVertexBuffer only binds when the argument is non-null, so null does nothing and the slot silently keeps the previous draw's buffer. Since vertex data usually comes from the transient ring buffer, that stale binding may point at recycled memory, so the draw reads garbage with no error. The frontend only catches this under STRICT_VALIDATION (IS_RUNNING_IN_IDE), so in release builds OpenGL throws while Vulkan renders stale geometry.
Comments 2
Thank you for your report!
After consideration, the issue is being closed as Working as Intended.
Please note, that mechanics of the game may change between updates.
Things such as graphics, sounds, world creation, biomes, redstone, villagers, and animals may not work the same in current versions.
Full Version History – Snapshot Version History – The official Minecraft feedback site
Quick Links:
📓 Bug Tracker Guidelines – 💬 Community Support – 📧 Mojang Support (Technical Issues) – 📧 Microsoft Support (Account Issues)
📓 Project Summary – ✍️ Feedback and Suggestions – 📖 Game Wiki
Can confirm.