go-gl搭建开发环境(一)

Go最新golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇),2024年最新滴滴Golang面试 要注意的是,为了只渲染一张图片中我们需要的部分,纹理图片必须是带有。需要说明的是,着色器程序需要结合具体要绘制的顶点来看,在这个2D游戏中,所有的元素都是由两个三角形组成的矩形构成的,因此在不使用。由于我们开发的是2D游戏,所有顶点的z分量都为0,所以用顶点中每一行的前两位作为顶点坐标,后两位作为纹理坐标,并将顶点坐标和纹理坐标合为一个变量传入着色器中。在前面的文章中已经讲过,不再赘述。片段着色器与上一篇文章的基本相同,唯一区别是加入了一个判断,在图像区域的透明度小于0.1的时候,会放弃对这片区域的渲染。 阅读详情

1. 简介


Go语言(Golang)是Google在2009年推出的一种编程语言。Golang是一门开源的语言,可以从github上找到它的源码。Golang也是一门跨平台的语言,可以运行在Windows、Linux、Mac OS X以及Plan9等操作系统上,更多详细的介绍可以参考Golang的官方网站

本文主要介绍使用Golang如何开发OpenGL程序,搭建go-gl的开发环境。使用Golang开发OpenGL程序时,相比较于C/C++少了很多配置的过程,整体来说非常的方便。

2. 安装


本文配置的环境可以在go-gl这个站点找到,主要包括:

  1. go-glfw :渲染窗口和鼠标键盘等事件处理
  2. go-gl:OpenGL接口的Golang绑定
  3. mathgl:数学计算库
  4. gltext:文字渲染库

安装过程根据操作系统不同略有区别,Mac OS X和Linux只需要从Golang的官网下载最新的安装包安装即可。Windows下稍有不同,由于go-glfw库需要依赖于gcc编译器,但是在Windows系统下并没有,因此需要额外安装其他的工具。

在Windows系统下可以安装MSYS2, 经过测试发现:目前版本的Go-GLFW在64位下编译会出现错误,因此只能下载msys2的32位版本,安装32位版本的gcc,同样Golang的版本也只能安装32位的版本,以目前最新版本的Golang为例(Go-1.10),在Windows下需要下载的内容有:

  1. Go 1.10 32位版本:go1.10.windows-386.msi
  2. 32位版本的msys2:msys2-i686-20161025.exe

下载安装完成之后,msys2还需要更新和安装gcc,步骤如下:

  • 打开msys2的命令行工具,输入
pacman -Syu
  • 等待安装完成后,关闭该窗口。再重新打开msys2的命令行,输入
pacman -Su
  • 等待一段时间,更新完成之后,输入
pacman -S mingw-w64-i686-gcc

安装完成后,需要将gcc设置到环境变量PATH中,gcc安装的位置在msys2的安装目录下的mingw32/bin中,配置完成后可以在CMD中查看gcc版本信息。

gccversion

3. 配置三方库


3.1 GLFW安装

在命令行中输入

go get -u github.com/go-gl/glfw/v3.2/glfw

安装成功之后可以在GO的工作目录($GOPATH\pkg\windows_386\github.com\go-gl\glfw\v3.2)下找到已经编译完成的glfw库

glfw3.2

3.2 GO-GL安装

go-gl可以选择OpenGL显卡支持的版本来安装,可以安装多个不同版本,在需要的时候引入合适的版本即可,输入

go get -u github.com/go-gl/gl/v4.5-core/gl

等待编译完成后,OpenGL 4.5的Golang库便完成了。

建议编译 v2.1和v3.3-core以及最新版本的v4.6-core三个版本, 这样既可以使用Legecy的OpenGL
API也可以使用最新的OpenGL API

3.3 MathGL安装

在命令行工具中输入

go get -u github.com/go-gl/mathgl/...

等待编译完成

3.4 GLTEXT安装

命令行输入

go get github.com/go-gl/gltext

4. 测试


最后通过创建一个简单的glfw的窗口,验证整个安装过程是否成功,代码如下:

新建一个helloglfw.go的文件

package main

import (
    "runtime"
    "github.com/go-gl/glfw/v3.2/glfw"
)

func init() {
    // This is needed to arrange that main() runs on main thread.
    // See documentation for functions that are only allowed to be called from the main thread.
    runtime.LockOSThread()
}

func main() {
    err := glfw.Init()
    if err != nil {
        panic(err)
    }
    defer glfw.Terminate()

    window, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)
    if err != nil {
        panic(err)
    }

    window.MakeContextCurrent()

    for !window.ShouldClose() {
        // Do OpenGL stuff.
        window.SwapBuffers()
        glfw.PollEvents()
    }
}

使用命令行工具切换到该目录下,输入

go build helloglfw.go

如果可以生成一个对应的helloglfw.exe文件,说明整个配置成功了,之后便可以开始Go-gl之旅了!

hello

go_gl:介绍将go与gl一起使用的项目 很高兴知道 gl软件包不支持模块,因此我们需要禁用模块系统才能使用它们。 我们可以通过执行以下命令来永久设置此设置: go env -w GO111MODULE=auto 当代码位于$ GOPATH / src中并且不存在go.mod文件时,这将不适用于模块模式。 在Linux上,如果$ GOPATH为空。 软件包存储在/ home / {user} / go / src /中。 模块存储在/ home / {user} / go / pkg / mod下 如果您在package文件夹之外工作,则可以将GO111MODULE = off设置为: go env -w GO111MODULE=off 另外,您可以将设置作为第一个参数传递: GO111MODULE=off go get github.com/go-gl/gl/v4.1-core/gl GO111MODULE=off 立即下载

相关推荐

conways-gol:使用Go和OpenGL实现的Conway的生活游戏

康威的人生游戏 conways-gol是使用Go和OpenGL与的Conway生命游戏实现,它是我在Go上使用OpenGL编写的教程的一部分。 要学习本教程并通过自己实施Conway的《生命游戏》来学习Go语言的OpenGL,请查看: :安装和设置OpenGL和 ,在窗口上绘制一个三角形 :从三角形中绘制正方形,绘制覆盖窗口的正方形网格 :实施Conway的游戏 游戏' 生命游戏,也简称为生命,是由英国数学家约翰·霍顿·康威(John Horton Conway)于1970年设计的细胞自动机。 “游戏”是零玩家游戏,这意味着它的演变由其初始状态决定,不需要进一步的输入。 通过创建初始

go-gl第一个窗口(二)

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调用是必须的,原因参考:LockOST...

Frank的专栏 1403

Allegro模块复用:从原理图到PCB的完整流程与关键细节

本文详细介绍了Allegro模块复用从原理图到PCB的完整流程与关键细节,包括DSN和MDD文件的创建、模块调用的实战技巧以及双向同步与版本控制方法。通过标准化处理和高级复用技巧,能显著提升PCB设计效率,减少重复工作时间。适用于智能硬件和工业控制等领域的工程师。

weixin_30252709的博客 332

Go-GL 项目教程

Go-GL 是一个开源的 Go 语言绑定库,用于与 OpenGL 图形库进行交互。OpenGL 是一个跨平台的图形 API,广泛用于开发 2D 和 3D 图形应用程序。Go-GL 项目的目标是为 Go 开发者提供一个简单且高效的接口,以便他们能够利用 OpenGL 的功能来创建高性能的图形应用。 ## 2、项目快速启动 ### 安装 Go-GL 首先,确保你已经安装了 Go 语言环境。然后,...

gitblog_00284的博客 1077

ISO26262功能安全--产品开发过程

目录 1.总体理解 2.概念阶段——吹牛,我们是打草稿的 2.1 相关项定义 2.2 HARA分析 2.3 功能安全目标 2.4 安全需求与安全概念 3. 系统阶段——闭门造神车,我们开始修炼 3.1 技术安全需求(TSC) 3.2 系统架构设计 3.3 安全分析与独立性分析 3.4 软硬件接口(HSI) 4. 硬件阶段——苦其心志,苦练经骨 4.1 硬件架构...

AgingMoon的博客 1万+

WorkBuddy结合DeepSeek与Skill:文献检索自动化与Token成本控制实战

Agent工具与大模型API的结合正重塑知识工作者的日常流程。在实际工程中,调用大模型处理批量任务常面临Token消耗过快、成本不可控的痛点,而国产大模型DeepSeek以极低的API定价和兼容OpenAI接口的特性,为规模化文本处理提供了“Token自由”的可能。同时,可复用的Skill机制能够将特定领域的工作流固化为标准化步骤,让Agent自动执行检索式生成、文献筛选与摘要归纳等复杂操作。本文从这一技术背景出发,以科研文献检索为应用场景,演示如何利用WorkBuddy、DeepSeek API与自建文献

weixin_29061509的博客 497

探索图形编程的新里程:Go语言中的OpenGL绑定库——gl

探索图形编程的新里程:Go语言中的OpenGL绑定库——gl 在寻找一个强大而易用的工具来实现你的图形渲染梦想吗?看看这个令人惊叹的开源项目——gl,它是针对Go语言的OpenGL绑定库。gl的目的是让Go开发者能够轻松地利用强大的OpenGL图形库,享受高效且灵活的3D图形编程。 1、项目介绍 gl是一个基于Go语言的库,它提供了一个全面的API接口,用于与OpenGL进行交互。借助这个库,你可...

gitblog_00062的博客 545

Ubuntu登录界面黑屏?手把手教你排查和修复LightDM启动失败(附debug命令详解)

本文详细介绍了Ubuntu系统中LightDM(Light Display Manager)启动失败导致登录界面黑屏的排查与修复方法。通过系统状态检查、调试模式分析、常见故障解决方案及高级调试技巧,帮助用户快速定位并解决LightDM相关问题,恢复正常的图形登录环境。

weixin_34005090的博客 316

go-gl搭建开发环境

1. 简介Go语言(Golang)是Google在2009年推出的一种编程语言。Golang是一门开源的语言,可以从github上找到它的源码。Golang也是一门跨平台的语言,可以运行在Windows、Linux、Mac OS X以及Plan9等操作系统上,更多详细的介绍可以参考Golang的官方网站本文主要介绍使用Golang如何开发OpenGL程序,搭建go-gl的开发环境。使用Golang...

嘿嘿 1474

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

姿态传感器/陀螺仪之BMI270应用原理图设计

BMI270是一款由博世(Bosch)推出的高性能、超低功耗惯性测量单元(IMU),专为可穿戴设备、智能设备及物联网应用设计。

corlin6688的博客 2864

探索Go语言与OpenGL的完美结合:go-gl/gl项目推荐

探索Go语言与OpenGL的完美结合:go-gl/gl项目推荐 项目介绍 go-gl/gl 是一个为Go语言提供OpenGL绑定的开源项目。通过这个项目,开发者可以在Go语言环境中直接调用OpenGL的强大功能,从而实现高性能的图形渲染和处理。无论你是游戏开发者、图形应用开发者,还是对图形编程感兴趣的爱好者,go-gl/gl 都能为你提供一个便捷、高效的开发平台。 项目技术分析 go-gl/gl ...

gitblog_00752的博客 1308

vxWorks下dosFs文件系统的创建

文件系统,是指操作系统根据目录和文件的组织形式在磁盘设备上应用的一种设备驱动,不同的文件系统对目录和文件有不同的限制(如目录名限制,文件大小限制等)。VxWorks支持多种文件系统,比较重要的有:1、dosFs:适用于块存取设备(比如硬盘、软盘),和MS-DOS文件系统兼容;2、rawFs:提供了一种简单的原始文件系统。该文件系统将整个硬盘当作一个单独的大文件;3、cdromFs:允许系统从按照I

技术联盟 1万+

Go-GL-Legacy/GL 项目教程

Go-GL-Legacy/GL 项目教程 1. 项目目录结构及介绍 go-gl-legacy/gl ├── AUTHORS ├── LICENSE ├── README.md ├── attriblocation.go ├── buffer.go ├── color.go ├── debugoutput.go ├── framebuffer.go ├── gl.go ├── gl_defs.go ...

gitblog_00645的博客 1028

Deepseek Engram 论文全面解读

以下是对 DeepSeek 与北京大学于联合发布的论文《》(简称Engram 论文)的。

lpfasd123的博客 355

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Go-GL 示例项目常见问题解决方案

Go-GL 示例项目常见问题解决方案 项目基础介绍 Go-GL 示例项目是一个基于 Go 语言的开源项目,旨在为开发者提供使用 Go 语言进行 OpenGL 编程的示例代码。该项目的主要编程语言是 Go,结合了 OpenGL 图形库,帮助开发者快速上手并理解如何在 Go 中使用 OpenGL 进行图形渲染。 新手使用注意事项及解决方案 1. 环境配置问题 问题描述: 新手在尝试运行 Go-GL 示...

gitblog_00375的博客 945

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

go-gl-legacy/gl 项目常见问题解决方案

go-gl-legacy/gl 项目常见问题解决方案 1. 项目基础介绍和主要编程语言 go-gl-legacy/gl 是一个开源项目,提供 Go 语言对 OpenGL 的绑定。这个项目使得 Go 程序员能够方便地在他们的程序中使用 OpenGL 的功能。主要的编程语言是 Go,同时使用了 C 语言的一些特性(通过 cgo)来与 OpenGL 库交互。 2. 新手在使用这个项目时需要特别注意的3个...

gitblog_00779的博客 471

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Go语言中的OpenGL绑定:gl项目深度解析

`gl` 是一个为Go语言提供OpenGL绑定的高质量开源项目。该项目通过自动生成的方式,将C语言规范的OpenGL API映射到Go语言中,使得开发者可以在Go环境中直接调用OpenGL函数。`gl` 支持多种OpenGL API(如GL、GLES、EGL、WGL、GLX、EGL)、多个版本(从2.1到4.6)以及核心和兼容性配置文件。此外,`gl` 还支持OpenGL扩展,包括调试回调功能。 ...

gitblog_00628的博客 652

Go-GL MathGL:纯Go编写的3D数学库

Go-GL MathGL([mathgl](https://github.com/go-gl/mathgl))是一个专为OpenGL图形能力设计的Go语言矩阵与向量数学库。此项目采用Go作为其唯一的编程语言,确保了高效且易于集成到Go生态系统中的特性。 ## 核心功能 MathGL提供了一套全面的3D数学工具集,包括但不限于向量运算、矩阵变换、以及与OpenGL兼容的坐标处理。它分成了两个子包:

gitblog_01104的博客 566

Go语言OpenGL绑定库(gl)使用手册

仓库`https://github.com/go-gl/gl`是一个Go语言对OpenGL接口的自动生成功能库。它的结构组织旨在提供不同版本和配置的OpenGL绑定,便于开发者根据具体需求选择合适版本进行集成。以下是关键的目录和文件结构概述: ``` . ├── README.md # 项目的主要说明文档,包含快速入门和概述信息。 ├── LICENSE ...

gitblog_00094的博客 562

Go-GL MathGL 开源项目教程

Go-GL MathGL 项目的目录结构如下: ``` go-gl/ ├── examples/ │ ├── basic/ │ ├── advanced/ │ └── ... ├── gl/ │ ├── gl21/ │ ├── gl33/ │ └── ... ├── mathgl/ │ ├── affine/ │ ├── color/ │ ├── geomet

gitblog_00322的博客 351

gl linux qt 库_盘点十大golang gui扩展库

不管你承不承认,在2020年的时候,golang已经不是小众语言了,很多的公司和开发者都在开始学习使用golang进行业务开发了。Docker,k8s的出现让人们知道,原来golang在服务器端是那么的强大。那么如此强大的golang在客户端表现如何呢?答案是官方并没有给出golang语言的gui库,不过这并不能阻止人们使用golang进行GUI开发的脚步,在golang社区里面有着大量的第三方G...

weixin_29155599的博客 735

Golang之OpenGL(一)

使用OpenGL实现窗口中绘制三角形(纯色|彩色)、正方形(变色)

qq_46100517的博客 1354

go-gl/mathgl 项目常见问题解决方案

go-gl/mathgl 项目常见问题解决方案 mathgl A pure Go 3D math library. 项目地址: https://gitcode.com/gh_mirrors/ma/mathgl ...

gitblog_00009的博客 746

Go跨平台OpenGL绑定库gl

Go跨平台OpenGL绑定库gl 1. 项目基础介绍与主要编程语言 gl 是一个由Go语言编写的跨平台OpenGL绑定库,旨在为开发者提供一种简单的方式来在多个平台上使用OpenGL。该库支持macOS、Linux、Windows、iOS、Android以及现代浏览器(通过WebGL)。gl库基于Go语言的特性,提供了一种类似于OpenGL ES 2的API。 主要编程语言:Go 2. 项目核心功...

gitblog_00237的博客 404

GL account type change

 GL account type change I would like to know , what are the steps to be performed in order to change the account type in GL , from balance sheet type to balance sheet type and similarly in income

Yuanhy的自由空間 2260
上一篇: OpenGL的Context(Profile)
下一篇: go-gl第一个窗口(二)
csxiaoshui
博客等级 码龄16年 873粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值