go-gl第一個視窗(二) - IT閱讀

文章推薦指數: 80 %
投票人數:10人

import ( "runtime" "github.com/go-gl/glfw/v3.2/glfw" "github.com/go-gl/gl/v3.3-core/gl" ). 程式視窗的建立程式碼非常簡單,需要注意的是runtime ... go-gl第一個視窗(二) 首頁 最新 HTML CSS JavaScript jQuery Python3 Python2 Java C C++ Go SQL 首頁 最新 Search go-gl第一個視窗(二) 2019-02-12254 1.初始化程式 首先新增引用的包,包括glfw和go-gl import( "runtime" "github.com/go-gl/glfw/v3.2/glfw" "github.com/go-gl/gl/v3.3-core/gl" ) 程式視窗的建立程式碼非常簡單,需要注意的是runtime.LockOSThread呼叫是必須的,原因參考:LockOSThread funcmain(){ runtime.LockOSThread() window:=initGlfw() deferglfw.Terminate() for!window.ShouldClose(){ glfw.PollEvents() window.SwapBuffers() } } 2.glfw初始化 glfw初始化中設定視窗的特性(標題、大小等),同時設定OpenGL的版本等資訊,並呼叫CreateWindow建立視窗 funcinitGlfw()*glfw.Window{ iferr:=glfw.Init();err!=nil{ panic(err) } glfw.WindowHint(glfw.ContextVersionMajor,3) glfw.WindowHint(glfw.ContextVersionMinor,3) glfw.WindowHint(glfw.OpenGLProfile,glfw.OpenGLCoreProfile) window,err:=glfw.CreateWindow(width,height,"OpenGL",nil,nil) iferr!=nil{ panic(err) } window.MakeContextCurrent() returnwindow } 3.OpenGL初始化 在呼叫OpenGL函式之前,需要呼叫gl.Init初始化OpenGL funcinitOpenGL(){ iferr:=gl.Init();err!=nil{ panic(err) } version:=gl.GoStr(gl.GetString(gl.VERSION)) log.Println("OpenGLversion",version) } //繪製函式 funcdraw(){ gl.Clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT) } 完整的程式碼 packagemain import( "log" "runtime" "github.com/go-gl/gl/v3.3-core/gl" "github.com/go-gl/glfw/v3.2/glfw" ) const( width=800 height=600 ) funcmain(){ runtime.LockOSThread() window:=initGlfw() deferglfw.Terminate() initOpenGL() for!window.ShouldClose(){ draw() glfw.PollEvents() window.SwapBuffers() } } funcinitGlfw()*glfw.Window{ iferr:=glfw.Init();err!=nil{ panic(err) } glfw.WindowHint(glfw.ContextVersionMajor,3) glfw.WindowHint(glfw.ContextVersionMinor,3) glfw.WindowHint(glfw.OpenGLProfile,glfw.OpenGLCoreProfile) window,err:=glfw.CreateWindow(width,height,"FirstWindow",nil,nil) iferr!=nil{ panic(err) } window.MakeContextCurrent() returnwindow } funcinitOpenGL(){ iferr:=gl.Init();err!=nil{ panic(err) } version:=gl.GoStr(gl.GetString(gl.VERSION)) log.Println("OpenGLversion",version) gl.ClearColor(0.2,0.4,0.6,1.0) } funcdraw(){ gl.Clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT) } 參考資料: 相關文章 go-gl第一個視窗(二) OpenGL入門基礎教程——在第一個視窗繪製一個三角形 使用VS建立第一個視窗程式 c#建立第一個視窗應用程式 opengl學習筆記-第一個視窗 OpenGL實踐之第一個視窗 PyQt5學習筆記01----第一個視窗 OpenGL系列學習教程(零)---第一個視窗 LearnOpenGL-第一個視窗 (一)MFC學習之建立第一個視窗 OpenGL學習筆記:GLAD和第一個視窗 第一步寫一個視窗並且實現關閉的功能 神器推薦|我的第一個視訊是如何誕生的 如何使一個視窗關閉的同時另一個視窗重新整理 如何配置idea使一個視窗包含多個工程 分類導航 HTML/CSS HTML教程 HTML5教程 CSS教程 CSS3教程 JavaScript JavaScript教程 jQuery教程 Node.js教程 服務端 Python教程 Python3教程 Linux教程 Docker教程 Ruby教程 Java教程 JSP教程 C教程 C++教程 Perl教程 Go教程 PHP教程 正則表達式 資料庫 SQL教程 MySQL教程 PostgreSQL教程 SQLite教程 MongoDB教程 Redis教程 Memcached教程 行動端 IOS教程 Swift教程 Advertisement 三度辭典 Copyright©2016-2021IT閱讀  Itread01.comAllRightsReserved. 0.001291036605835



請為這篇文章評分?