Comments (8)
I don't really know/understand WebGPU yet but I would assume we could call wgpuDeviceCreateBindGroup()
one time per frame with a list of all unique WGPUTextureView, and then call wgpuRenderPassEncoderSetBindGroup()
with the right index?
So we remove bd->ImageBindGroups[]
as a persistent storage, instead we use it as temporary storage during the frame:
- iterate all draw cmd to create a list of unique WGPUTextureView, with each a unique integer.
- create the bind group
- iterate all draw cmd to perform render, call wgpuRenderPassEncoderSetBindGroup() with the right index pulled from that map?
from imgui.
Hello,
Do you have a suggested solution as to how to decently solve this?
from imgui.
I'm not sure WebGPU exposes any kind of truly unique identifier for resources.
The only decent solution I can think of is to remove the cache, use WGPUBindGroup as ImTextureID, and provide a helper function for the user to create bind groups from texture views. It would unfortunately require the user to manually manage those bind groups, which kind of feels like it goes against the spirit of IMGUI.
from imgui.
That sounds like a reasonable solution. I'm new to WebGPU as well, so that didn't even occur to me.
It might be worth supporting multiple bind groups for "chunks", since WGPULimits::maxBindingsPerBindGroup
could be as low as 640.
Edit: Actually, I think such a solution would require the proposed binding_array
feature, which isn't in the spec yet.
from imgui.
Let's start with a single bind group and we can easily change it to multiple of them based on runtime limits.
from imgui.
I don't have test code for loading a texture in the WebGPU example so one would be helpful but otherwise I'll work toward one eventually.
from imgui.
Hello @dkaste, could you share your workaround solution? I'm facing the same issue and a temporary work around would help. Thanks!
Edit: never mind, was able to figure it out. Just called bd->renderResources.ImageBindGroups.Clear();
at the beginning of ImGui_ImplWGPU_RenderDrawData
from imgui.
As mentioned, I would likely be able to tackle the issue if I had an example of loading textures with WebGPU, e.g a WebGPU version of the tutorial here: https://github.com/ocornut/imgui/wiki/Image-Loading-and-Displaying-Examples
from imgui.
Related Issues (20)
- ImFontAtlasBuildWithStbTrueType assertion with Gcc 13+ HOT 6
- Best practices for partial modal + multiviewport
- Inconsistent Width and strange ending behavior of PathLineTo HOT 2
- How to change InputXXX formatting when it becomes active? HOT 2
- How can I set the default window dock position and size if they are not present inside imgui.ini ? HOT 5
- Combo widgets' contents don't render after being rotated and translated by a shader HOT 3
- Win32 DirectX11 app resize resizes ImGui window HOT 1
- GLFW backend: PrevWndProc != NULL assertion fails on Windows HOT 2
- Unexpected output from DrawList->PathArcTo HOT 2
- SetKeyboardFocusHere(-1) not working as expected with InputTextMultiline
- TabBar - Common Style
- WebGPU backend causes crash after window resize HOT 1
- Table drawing Horizontal Scrollbar too far below HOT 3
- Vertical Misalignment when using different size fonts with AlignTextToFramePadding HOT 3
- ImDrawList's PushClipRect not inherited by child window HOT 3
- How can I set FULL window transparency HOT 1
- Detecting a mouse click HOT 5
- How to get resizable child in window? HOT 8
- CMake Support HOT 1
- I want know where is ImGuiLayout HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from imgui.