尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

0310-Chip8-SDL2 开发环境

0310-Chip8-SDL2 开发环境
📅 发布时间:2026/6/19 23:05:57

环境

  • 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 库,实现了渲染一个窗口。

附录

相关新闻

  • LIS 的二分做法
  • 2025年码垛桁架机械手生产厂家权威推荐榜单:桁架搬运机械臂/桁架机器人/桁架搬运机械臂源头厂家精选
  • 人类智慧

最新新闻

  • 企业级微信聊天记录解析方案:毫秒级处理的高性能本地化工具
  • TF2 SDK开源:从修改游戏规则到创造全新模组的开发指南
  • 东莞东城街道实测六家黄金回收,当天行情与鉴定全记录 - 上门黄金回收
  • 深入解析MC9S12VR PWM模块:从基础原理到汽车电子实战应用
  • 攀枝花市奢侈品手表包包回收回收门店权威测评:综合实力最强的五家店铺推荐 - 谊识预商务
  • 深入解析NXP ColdFire EMAC单元:DSP性能优化的架构奥秘

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号