From 0e1e1a51f0aa7e58b70b3e216db0af53ca71161f Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 29 Dec 2018 13:24:55 -0800 Subject: [PATCH] work towards getting imgui properly working in viewer --- platform/imgui_backend/imgui_backend.go | 5 ++++- platform/platform.go | 30 ++++++++++++------------- platform/window.go | 6 +++-- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/platform/imgui_backend/imgui_backend.go b/platform/imgui_backend/imgui_backend.go index 3b75234..3f6b664 100644 --- a/platform/imgui_backend/imgui_backend.go +++ b/platform/imgui_backend/imgui_backend.go @@ -60,7 +60,6 @@ func Init() error { io.KeyMap(imguiKey, nativeKey) } - singleton.fontTexture = createFontTexture() singleton.isInit = true return nil @@ -87,6 +86,10 @@ func NewFrame(windowSize math.Vec2i) error { return ErrWasNotInit } + if singleton.fontTexture == 0 { + singleton.fontTexture = createFontTexture() + } + // Setup display size (every frame to accommodate for window resizing) io := imgui.CurrentIO() io.SetDisplaySize(imgui.Vec2{X: float32(windowSize.X), Y: float32(windowSize.Y)}) diff --git a/platform/platform.go b/platform/platform.go index 88685c2..f87039c 100644 --- a/platform/platform.go +++ b/platform/platform.go @@ -70,6 +70,21 @@ func Shutdown() error { return nil } +func CreateWindow(title string, width, height int, scene Scene) (*Window, error) { + if !state.isInit { + return nil, ErrWasNotInit + } + + window, err := newWindow(title, width, height, scene) + if err != nil { + return nil, err + } + + state.windows = append(state.windows, window) + + return window, err +} + func ProcessEvents() error { if !state.isInit { return ErrWasNotInit @@ -91,21 +106,6 @@ func ProcessEvents() error { return nil } -func CreateWindow(title string, width, height int, scene Scene) (*Window, error) { - if !state.isInit { - return nil, ErrWasNotInit - } - - window, err := newWindow(title, width, height, scene) - if err != nil { - return nil, err - } - - state.windows = append(state.windows, window) - - return window, err -} - func advanceWindows() { for _, window := range state.windows { window.advance() diff --git a/platform/window.go b/platform/window.go index b87a550..9fb1f4c 100644 --- a/platform/window.go +++ b/platform/window.go @@ -29,13 +29,13 @@ func newWindow(title string, width, height int, scene Scene) (*Window, error) { return nil, err } - sdlGlContext, err := sdlWindow.GLCreateContext() + sdlRenderer, err := sdl.CreateRenderer(sdlWindow, -1, sdl.RENDERER_ACCELERATED) if err != nil { sdlWindow.Destroy() return nil, err } - sdlRenderer, err := sdl.CreateRenderer(sdlWindow, -1, sdl.RENDERER_ACCELERATED) + sdlGlContext, err := sdlWindow.GLCreateContext() if err != nil { sdlWindow.Destroy() return nil, err @@ -83,7 +83,9 @@ func (w *Window) RenderTexture(texture *Texture, srcRect, dstRect math.Rect4i) { func (w *Window) advance() { imgui_backend.NewFrame(w.displaySize()) w.scene.Advance(w) + imgui.Render() + w.sdlWindow.GLMakeCurrent(w.sdlGlContext) imgui_backend.Render(w.displaySize(), w.bufferSize(), imgui.RenderedDrawData()) w.sdlWindow.GLSwap()