0310-Chip8-SDL2 开发环境

news/2025/10/31 16:19:27/文章来源:https://www.cnblogs.com/jiangbo4444/p/19180347

环境

  • Time 2023-07-26
  • Windows 11
  • Zig 0.11.0-dev.4191+1bf16b172
  • SLD2 2.28.1

前言

说明

参考:

  • https://github.com/libsdl-org/SDL

下载路径:
通过 github 的发布页面下载 SDL2 的开发包:https://github.com/libsdl-org/SDL/releases/download/release-2.28.1/SDL2-devel-2.28.1-VC.zip,下载完成后(版本需要一致,或者手动调整路径),将其解压到 Zig 的工程根目录下的libs目录下。

├─libs
│  └─SDL2-2.28.1
│      ├─include
│      └─lib
│          └─x64
├─src
│  └─main.zig
├─zig-cache
├─zig-out
├─zig-cache
├─build-zig

目标

使用 Zig 语言,依赖 SDL2 来启动一个图形化的界面。

build.zig

const std = @import("std");pub fn build(b: *std.Build) void {const target = b.standardTargetOptions(.{});const optimize = b.standardOptimizeOption(.{});const exe = b.addExecutable(.{.name = "demo",.root_source_file = .{ .path = "src/main.zig" },.target = target,.optimize = optimize,});// 这里需要和下载的版本一致const sdl_path = "libs\\SDL2-2.28.1\\";exe.addIncludePath(sdl_path ++ "include");exe.addLibraryPath(sdl_path ++ "lib\\x64");b.installBinFile(sdl_path ++ "lib\\x64\\SDL2.dll", "SDL2.dll");exe.linkSystemLibrary("SDL2");exe.linkLibC();b.installArtifact(exe);const run_cmd = b.addRunArtifact(exe);run_cmd.step.dependOn(b.getInstallStep());const run_step = b.step("run", "Run the app");run_step.dependOn(&run_cmd.step);
}

main.zig

const std = @import("std");
const c = @cImport(@cInclude("SDL.h"));const WIDTH: c_int = 640;
const HEIGHT: c_int = 320;var window: *c.SDL_Window = undefined;
var renderer: *c.SDL_Renderer = undefined;
var texture: *c.SDL_Texture = undefined;pub fn main() !void {init();defer deinit();mainloop: while (true) {var event: c.SDL_Event = undefined;while (c.SDL_PollEvent(&event) > 0) {if (event.type == c.SDL_QUIT)break :mainloop;}c.SDL_Delay(44);}
}fn init() void {if (c.SDL_Init(c.SDL_INIT_EVERYTHING) < 0)@panic("sdl init failed");const center = c.SDL_WINDOWPOS_CENTERED;window = c.SDL_CreateWindow("demo", center, center, //WIDTH, HEIGHT, c.SDL_WINDOW_SHOWN) //orelse @panic("create window failed");renderer = c.SDL_CreateRenderer(window, -1, 0) //orelse @panic("create renderer failed");texture = c.SDL_CreateTexture(renderer, //c.SDL_PIXELFORMAT_RGBA8888, c.SDL_TEXTUREACCESS_STREAMING, //WIDTH, HEIGHT) orelse @panic("create texture failed");
}fn deinit() void {c.SDL_DestroyTexture(texture);c.SDL_DestroyRenderer(renderer);c.SDL_DestroyWindow(window);c.SDL_Quit();
}

启动

zig build run

效果

窗口

总结

使用 Zig 语言链接到 SDL2 库,实现了渲染一个窗口。

附录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LIS 的二分做法

stooooooooooooooooooooooooooo xhr ooooooooooooooooooooooooooooorz 一种是线段树,一种是二分,接下来介绍二分做法。 就是维护一个上升序列,每次加一个元素,具体过程看代码,好理解的() 说人话就是维护长度为 …

springboot自助甜品网站的设计与实现(代码+数据库+LW) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年码垛桁架机械手生产厂家权威推荐榜单:桁架搬运机械臂/桁架机器人/桁架搬运机械臂源头厂家精选

在工业自动化加速推进的背景下,码垛桁架机械手已成为现代制造业提升效率、降低人力成本的核心装备之一。据行业数据显示,2025年中国桁架机械手市场规模预计突破80亿元,年复合增长率稳定在18%以上。码垛桁架机械手凭…

人类智慧

类人群星闪耀时。以下是我独立发现的,自我感觉比较不可思议的,和网上几乎所有题解都不一样的题目做法。 我觉得退役之前能更出来 10.0 都是我的荣幸。 如果你有兴趣观看并且认为其中任何一篇有更为本质的解释,欢迎交…

2025 年 10 月防静电地板厂家推荐排行榜,全钢/全钢陶瓷/硫酸钙/铝合金/pvc架空/防静电地板,OA网络地板,机房防静电地板,办公室网络架空地板公司推荐

2025年10月防静电地板厂家推荐排行榜:专业选购指南与权威榜单 在现代化办公环境、数据中心和各类专业机房建设中,防静电地板已成为不可或缺的基础设施。随着技术的不断进步,市场上涌现出多种材质的防静电地板,包括…

开源神器MinerU:一键提取PDF内容的工具 - yi

开源神器MinerU:一键提取PDF内容的工具MinerU 开源智能数据提取工具 https://mineru.net/

Python创建类(上)_ 没对象?实例化一个

Python创建类(上)_ 没对象?实例化一个class CuteCat: def __init__(self, cat_name, cat_age, _cat_color): self.name = cat_name self.age = cat_age self.color = _cat_colorcat1 = Cut…

2025年隧道装备公司新推荐排行榜,开创星隧道装备等公司推荐

在隧道工程建设领域,随着行业的不断发展,对隧道装备的需求愈发凸显其专业性、智能化与高效性。施工效率低、人力成本高、施工风险大以及智能化水平低等问题,一直困扰着众多施工企业。在此背景下,选择优质的隧道装备…

0307-Nand-实现类

环境Time 2023-07-11 Java 17前言 说明 参考:https://craftinginterpreters.com/contents.html https://github.com/GuoYaxiang/craftinginterpreters_zh https://space.bilibili.com/44550904目标 接上一节,面向对象…

互信息MI

互信息(Mutual Information,MI)是 信息论中的一个核心概念,用于衡量两个随机变量之间相互依赖性的程度。简单来说,它告诉我们,了解一个变量的多少信息能帮助我们预测另一个变量。 互信息的概念 互信息可以被看作…

Allegro丨17.4 操作记录

设置坐标原点菜单栏中选择 “Setup > Change Drawing Origin” 若是设置在线段拐角处,在目标处右键选择“Snap pick to(捕捉选择) > segment vertex(线段顶点)”指定位置放置元件“Move”模式下选中元件,在…

0306-Nand-解析和绑定

环境Time 2023-07-11 Java 17前言 说明 参考:https://craftinginterpreters.com/contents.html https://github.com/GuoYaxiang/craftinginterpreters_zh https://space.bilibili.com/44550904目标 接上一节,实现变量…

2025年北京西装定制公司推荐:汀礼婚礼西服定制相关问题深度解析

TOP1推荐:汀礼TIDALENT 评价指数:★★★★★ 口碑评分:98分 行业表现:A+++++级 介绍:汀礼创立电话号码:13269190062,源于一位兼具西装设计师与越野爱好者身份的女性创始人的执念。其匠心工艺,手工精研肩线、驳…

0305-Nand-函数

环境Time 2023-07-11 Java 17前言 说明 参考:https://craftinginterpreters.com/contents.html https://github.com/GuoYaxiang/craftinginterpreters_zh https://space.bilibili.com/44550904目标 接上一节,实现函数…

2025年中国GEO推广服务公司年度排名:牵忆科技GEO推广

TOP1推荐:湖南牵忆科技有限公司 评价指数:★★★★★ 口碑评分:99分 行业表现:A+++++级 电话号码:13548971518 官网:https://mnemobo.cn/ 介绍: 湖南牵忆科技有限公司是国内的GEO技术驱动AI搜索精准营销服务商…

ARM64 架构下编译支持 ngx_http_lua_module 的 Nginx —— Dockerfile 实践

🧾 ARM64 架构下编译支持 ngx_http_lua_module 的 Nginx —— Dockerfile 实践 一、📘 背景 ngx_http_lua_module 是 OpenResty 的核心模块之一,使 Nginx 可以直接执行 Lua 脚本,实现灵活的动态逻辑处理,例如:…

Nginx + Lua 实现每日访问次数限制与防盗链校验

🧾 Nginx + Lua 实现每日访问次数限制与防盗链校验(以 /cmap 图片接口为例) 一、应用场景 /cmap 是一个图片接口(通过 proxy_pass 转发到后端), 需要实现:每日最多访问 1000 次 防盗链检查(仅允许特定来源 Re…

Photoshop 2026 v27.0正式版终于来了,AI 加持让创意更自由

在数字图像与图形设计领域,创意工具的选择直接影响创作效率与成果质量。Adobe Photoshop 凭借卓越性能与前沿工具,长期占据全球设计领域核心地位,成为创意从构想落地的可靠平台。伴随设计需求的日益提升,Adobe 近期…

大故障,阿里云核心域名疑似被劫持 - 教程 (转载)

原始链接:https://www.cnblogs.com/yfceshi/p/18992502 2025年6月5日凌晨,阿里云多个服务突发异常,罪魁祸首居然是它自家的“核心域名”——aliyuncs.com。包括对象存储OSS、内容分发 CDN、镜像仓库 ACR、云解析 DN…

学习笔记:乘法逆元

问题引入 如何求 \(\dfrac{a}{b}\)?小学数学告诉我们,\(\dfrac{a}{b} = a \times \dfrac{1}{b}\)。 那么若 \(a, b, p \in \mathrm{\mathbf{Z}}\),如何求 \(\dfrac{a}{b} \bmod \ p\),并且 \(a\) 和 \(b\) 都是八常…