Nim使用OpenGL
2021/8/28 23:09:28
本文主要是介绍Nim使用OpenGL,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这里说明了Nim如何使用OpenGL
Nimble换源
因为我们要下载SDL2
和OpenGL
的支持,所以可以考虑将Nimble换成国内源。方法如下:
首先到Nimble官网clone他的代码下来。
然后进入到src/nimblepkg/download.nim
文件中,将
if modUrl.contains("github.com") and modUrl.endswith("/"): modUrl = modUrl[0 .. ^2]
换成
if modUrl.contains("github.com"): modUrl = modUrl.replace("github.com","github.com.cnpmjs.org") if modUrl.endswith("/"): modUrl = modUrl[0 .. ^2]
其实就是将github换成国内的镜像网站github.com.cnpmjs.org,顺便说一句,平时github登不上去了也可以上这个网站访问。
然后重新编译nimble,到nimble的根目录下执行
nimble build
就会生成nimble
可执行文件了。然后将文件放到/usr/local/bin/
下就可以执行了。
我的习惯是重命名为nimble-zh
然后再放。
以后每次下载包使用这个nimble就会很快了。
使用OpenGL
我是使用SDL2
搭建窗口,你也可以使用你熟悉的库。
首先安装SDL2
和OpenGL
的包,OpenGL
包的官网在这里
nimble install sdl2 opengl
然后OpenGL的API是什么,在Nim中就怎么用就行了,主要注意loadExtensions()
这个函数的调用,这里给个清屏的例子:
import sdl2 import opengl if isMainModule: sdl2.init(INIT_EVERYTHING) defer: sdl2.quit() # 设置OpenGL版本 discard glSetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3) discard glSetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3) discard glSetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE) let window = sdl2.createWindow("test SDL2", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 400, 300, SDL_WINDOW_SHOWN or SDL_WINDOW_OPENGL) defer: sdl2.destroyWindow(window) var glContext = glCreateContext(window) defer: glDeleteContext(glContext) # 根据OpenGL包的文档,这一句必须加在创建窗口后,加载拓展前 loadExtensions() if glContext.isNil: raise newException(Exception, "gl context create failed") var shouldClose = false var event = sdl2.defaultEvent; while not shouldClose: while sdl2.pollEvent(event): case event.kind: of sdl2.QuitEvent: shouldClose = true else: discard # 清屏 glClearColor(0.1, 0.1, 0.1, 1) glClear(GL_COLOR_BUFFER_BIT) # 绘制屏幕 glSwapWindow window delay 30
参考教程
SCIFX的换源教程
这篇关于Nim使用OpenGL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南