camera->SetViewport(200, 0, framebuffer->size.x - 200, framebuffer->size.y);
If you call that code again after the new framebuffer is created, it works perfectly.
Working out the model and material editing interfaces. There's a lot of little details to attend to, especially in the import/export features. I'd say the asset browser / editor is probably about 50% of the complexity of the entire editor.
It's also worth noting that in desktop mode menus and comboboxes use a separate window for the pop-up component, so there is no problems with these things appearing on top of a child window. However, this is not true when the GUI is being rendered in Vulkan.
If you are doing marching cubes, maybe it is possible to calculate the normals from the underlying volumetric geometry instead of trying to calculate them from the mesh? I mean you lose information when you go from volumetric to mesh, so maybe before losing that information it is possible to calculate normals that should be applied to the mesh?
My first reason was "jut use printf" but the Print() command actually does a lot more than that. It calls OutputDebugString so the text appears int he VS console. It also can run hooks. So yes, I agree with you.
Another thing you can do is just make a program act different based on command line params. I think I am going to make the editor call launch its own executable to generate thumbnail images. This saves me from having to include two large EXEs.
This is what I want the first editor build to be. If I can polish up an app that just browses the game directory and handles textures, that is a good first milestone.
There is also an Aabb:DistanceToPoint method, which I believe can be used for a perfect box/sphere test. If the distance to the point is less than the sphere radius, then the two intersect.
It depends on how precise you need it to be. Ultra never does a real sphere-AABB test because it's too expensive. Usually it starts with a sphere/sphere test and then moves onto a box/box test in some cases. The AABB::IntersectsPoint method takes an optional radius, but it just treats the point like a box.