【发布时间】:2015-01-14 21:39:08
【问题描述】:
很久以前就想从一本游戏编程书籍中学习 C。如果我没记错的话,你的游戏“引擎”要做的第一件事就是切换显示模式以进行渲染。这涉及到切换到 640x480 显示模式(可能是模式 13?)的一些 asm,因此您可以直接在屏幕上绘图。类似的东西。
我的问题是,现代的等价物是什么?我有兴趣编写一个执行类似操作的命令行程序;进入某种光栅模式供我绘制,但是,我不认为我的程序会在 kde、unity、Aqua 等某种窗口管理器下运行。
这是 OpenGL 可以提供的东西吗(或者 OpenGL 也假设一个窗口管理器)。我提议的程序不是游戏,但理想情况下会从一个基本的清晰屏幕开始,我可以绘制图元(二维线、圆形矩形等)
干杯!
【问题讨论】:
-
模式 13 只有 320x200,但它最受欢迎,因为它允许对所有字节进行线性访问,而其他更高分辨率的模式需要 blit 掩码(一次写入 1 个颜色位)或存储库切换(每种图形芯片都需要特殊代码)。 ..也就是说,推荐图书馆是题外话,所以我不会提及 SDL。 (糟糕。)
-
通常,对于裸机,在内存中分配(至少)两个缓冲区(或在视频内存中使用现代显卡)。启用视频垂直回扫开始的中断。该中断,如果另一个缓冲区已准备好,则交换正在显示的缓冲区。保留未显示哪个缓冲区的指示。所有写入都写入该未显示的缓冲区。当缓冲区准备好显示时,更改要显示哪个缓冲区的指示,因此中断会导致视频卡显示最新的缓冲区。然后代码可以复制/更新新可用的缓冲区
标签: c immediate-mode