Replies: 2 comments
-
I try to my best to be consistent with the other APIs, for your use case, do you prefer to have
Snippet from the README: Dear ImGui, by default, uses 16-bit indexing, which might cause issues with high-density 3D visualizations such as complex surfaces or meshes. This can lead to assertion failures, data truncation, or visual glitches. To avoid these problems, it's recommended to:
A lot of users face this problem, In the future, I may implement a workaround for this vertex limit when using 16-bit indexing. For now, these options should fix your problem.
ImPlot3D tries to follow the same scheme as ImPlot, thus we use the Getters under the hood, which is fast enough for most users and keeps the codebase clean. We don't use
In the future, I want to speed up the rendering by allowing the user to save the mesh/scatter/lines on the GPU to avoid passing the vertices from the CPU to the GPU every time before rendering. I'm not yet sure how this will look like, but this is a must for people wanting to visualize point clouds or large meshes. |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for answering.
Not really. I was more about saying to also support bare bone
Oh yeah, forgot about this. Thanks, now I am able to render it.
I would definitely love to provide a little help on this if I am able to. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hey, first of all, nice work. Glad you took the time to initialize it!
I am trying to transition to ImPlot3D to visualize Bispectra of nongaussian processes.
To do so, I am trying to do it via
PlotMesh(), as it seems to be the only API providing indexed vertex drawing.However, there seem to be some issues on this.
const T* vtx, where you template on the typename T)? Since those getters are just wrappers around vertices/indices, I don't think they add real value to the process, other than forcing the user to copy them over to constructImPlot3DPoint *.RenderPrimitives, there seems to be a very low limit on the n. of primitives to be drawn. Is there a reason why you limit that?I have about 1M triangles that I am already drawing with a hand-written Vulkan shader, but I don't seem to be able to draw them with ImPlot3D.
Getterswrapper classes really required? I think you'd be much better just forwarding list of vertices (and indices where necessary) as the user provides them. I prefer C over C++, but, in a C++ fashion, why not switching to std::vector<T *> for both vertices and indices (assuming vertices coordinates are contiguous in memory)?BTW, I don't yet know how many primitives I ended up adding and wrongly render to the 3D plot, but using immediate present mode, framerate dropped from about 200 FPS, to <20FPS.
Do you think we can optimize the core to allow for higher frame rates even with a large amount of vertices/triangles?
Beta Was this translation helpful? Give feedback.
All reactions