diff --git a/go.mod b/go.mod index cadfb27..d82c909 100755 --- a/go.mod +++ b/go.mod @@ -1,3 +1,13 @@ module github.com/bloeys/nterm go 1.18 + +require github.com/bloeys/nmage v0.11.12 + +require ( + github.com/bloeys/assimp-go v0.4.2 // indirect + github.com/bloeys/gglm v0.3.1 // indirect + github.com/go-gl/gl v0.0.0-20211025173605-bda47ffaa784 // indirect + github.com/inkyblackness/imgui-go/v4 v4.3.0 // indirect + github.com/veandco/go-sdl2 v0.4.10 // indirect +) diff --git a/go.sum b/go.sum new file mode 100755 index 0000000..709f7a0 --- /dev/null +++ b/go.sum @@ -0,0 +1,19 @@ +github.com/bloeys/assimp-go v0.4.2 h1:ArVK74BCFcTO/rCGj2NgZG9xtbjnJdEn5npIeJx1Z04= +github.com/bloeys/assimp-go v0.4.2/go.mod h1:my3yRxT7CfOztmvi+0svmwbaqw0KFrxaHxncoyaEIP0= +github.com/bloeys/gglm v0.3.1 h1:Sy9upW7SBsBfDXrSmEhid3aQ+7J7itej+upwcxOnPMQ= +github.com/bloeys/gglm v0.3.1/go.mod h1:qwJQ0WzV191wAMwlGicbfbChbKoSedMk7gFFX6GnyOk= +github.com/bloeys/nmage v0.11.12 h1:b41h8uPxr2OITwt4Np/rHLlUWtMKwza2eqjNVuJ/ITk= +github.com/bloeys/nmage v0.11.12/go.mod h1:4h2tKtMvk9ab8r/+rem4QonPXEBTho6VWvpCMm0M6iM= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-gl/gl v0.0.0-20211025173605-bda47ffaa784 h1:1Zi56D0LNfvkzM+BdoxKryvUEdyWO7LP8oRT+oSYJW0= +github.com/go-gl/gl v0.0.0-20211025173605-bda47ffaa784/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw= +github.com/inkyblackness/imgui-go/v4 v4.3.0 h1:iyAzqWXq/dG5+6ckDPhGivtrIo6AywGQMvENKzun04s= +github.com/inkyblackness/imgui-go/v4 v4.3.0/go.mod h1:g8SAGtOYUP7rYaOB2AsVKCEHmPMDmJKgt4z6d+flhb0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/veandco/go-sdl2 v0.4.10 h1:8QoD2bhWl7SbQDflIAUYWfl9Vq+mT8/boJFAUzAScgY= +github.com/veandco/go-sdl2 v0.4.10/go.mod h1:OROqMhHD43nT4/i9crJukyVecjPNYYuCofep6SNiAjY= diff --git a/main.go b/main.go index 3f354b6..a3b4d28 100755 --- a/main.go +++ b/main.go @@ -1,5 +1,76 @@ package main -func main() { - println("Hi!") +import ( + "github.com/bloeys/nmage/engine" + "github.com/bloeys/nmage/input" + "github.com/bloeys/nmage/renderer/rend3dgl" + nmageimgui "github.com/bloeys/nmage/ui/imgui" +) + +var _ engine.Game = &program{} + +type program struct { + shouldRun bool + win *engine.Window + imguiInfo nmageimgui.ImguiInfo +} + +func (p *program) Init() { + +} + +func (p *program) Start() { + +} + +func (p *program) FrameStart() { + +} + +func (p *program) Update() { + + if input.IsQuitClicked() { + p.shouldRun = false + } + +} + +func (p *program) Render() { + +} + +func (p *program) FrameEnd() { + +} + +func (g *program) GetWindow() *engine.Window { + return g.win +} + +func (g *program) GetImGUI() nmageimgui.ImguiInfo { + return g.imguiInfo +} + +func (p *program) ShouldRun() bool { + return p.shouldRun +} + +func (p *program) Deinit() { + +} + +func main() { + + win, err := engine.CreateOpenGLWindowCentered("nTerm", 1280, 720, engine.WindowFlags_ALLOW_HIGHDPI|engine.WindowFlags_RESIZABLE, rend3dgl.NewRend3DGL()) + if err != nil { + panic("Failed to create window. Err: " + err.Error()) + } + + p := &program{ + shouldRun: true, + win: win, + imguiInfo: nmageimgui.NewImGUI(), + } + + engine.Run(p) } diff --git a/res/shaders/imgui.frag.glsl b/res/shaders/imgui.frag.glsl new file mode 100755 index 0000000..edde592 --- /dev/null +++ b/res/shaders/imgui.frag.glsl @@ -0,0 +1,13 @@ +#version 410 + +uniform sampler2D Texture; + +in vec2 Frag_UV; +in vec4 Frag_Color; + +out vec4 Out_Color; + +void main() +{ + Out_Color = vec4(Frag_Color.rgb, Frag_Color.a * texture(Texture, Frag_UV.st).r); +} \ No newline at end of file diff --git a/res/shaders/imgui.vert.glsl b/res/shaders/imgui.vert.glsl new file mode 100755 index 0000000..a39109a --- /dev/null +++ b/res/shaders/imgui.vert.glsl @@ -0,0 +1,17 @@ +#version 410 + +uniform mat4 ProjMtx; + +in vec2 Position; +in vec2 UV; +in vec4 Color; + +out vec2 Frag_UV; +out vec4 Frag_Color; + +void main() +{ + Frag_UV = UV; + Frag_Color = Color; + gl_Position = ProjMtx * vec4(Position.xy, 0, 1); +} \ No newline at end of file