从命令行更改显示模式
Changing display modes from the command line
很久以前,我曾尝试从游戏编程书籍中学习 C。如果我没记错的话,您的游戏 "engine" 要做的第一件事就是将显示模式切换为渲染。这涉及到一些 asm 切换到 640x480 显示模式(也许是模式 13?),这样您就可以直接在屏幕上绘图。诸如此类。
我的问题是,这在现代相当于什么?我有兴趣编写一个执行类似操作的命令行程序;进入某种光栅模式供我绘制,但是,我不认为我的程序会 运行 在某种 window 管理器(如 kde、unity、Aqua 等)下 [=10] =]
这会是 OpenGL 可以提供的东西吗(或者 OpenGL 是否也假设有一个 window 管理器)。我提议的程序不是游戏,但最好从一个基本的清晰屏幕开始,我可以绘制图元(二维线、圆、矩形等)
干杯!
现代操作系统不再像过去那样方便程序员访问低级图形例程。部分原因在于 GPU 的出现,与只有 CPU 相比,这使得利用图形硬件成为更大的挑战。另一个原因是 window 管理器变得越来越复杂,每个操作系统为程序员提供的图形沙箱受到更多限制。
话虽如此,OpenGL 绝对值得一看。它是跨平台的、多功能的,并自动利用任何可用的硬件(包括显卡)。 OpenGL 本身并不直接提供对 windowing 上下文的访问,但您可以使用 OpenGL 实用程序库 (GLUT) 轻松创建它。然而,OpenGL 非常低级,您将不得不处理帧缓冲区、刷新和位掩码以及各种低级废话,如果您以前没有做过的话,它们会使 OpenGL 开发成为一场噩梦。
如果我要开始一个项目,我可能需要一个更强大的图形环境来提供绘图功能并且 window 开箱即用。两者 SDL and SFML 都提供低级图形 API,开始时会更友好一些。它们都是在 OpenGL 之上实现的,因此您可以在需要时使用任何 OpenGL 功能,但不必担心一些更繁琐的细节。
附带说明一下,如今 C 可能不是开始图形编程的最佳语言。如果您想要一个真正简单的图形环境,并且每天都变得越来越重要,您可能需要查看 Web 必须提供的内容。 JavaScript 和 HTML5Canvas 为绘制基元、图像等提供了一个非常简单的界面。
很久以前,我曾尝试从游戏编程书籍中学习 C。如果我没记错的话,您的游戏 "engine" 要做的第一件事就是将显示模式切换为渲染。这涉及到一些 asm 切换到 640x480 显示模式(也许是模式 13?),这样您就可以直接在屏幕上绘图。诸如此类。
我的问题是,这在现代相当于什么?我有兴趣编写一个执行类似操作的命令行程序;进入某种光栅模式供我绘制,但是,我不认为我的程序会 运行 在某种 window 管理器(如 kde、unity、Aqua 等)下 [=10] =]
这会是 OpenGL 可以提供的东西吗(或者 OpenGL 是否也假设有一个 window 管理器)。我提议的程序不是游戏,但最好从一个基本的清晰屏幕开始,我可以绘制图元(二维线、圆、矩形等)
干杯!
现代操作系统不再像过去那样方便程序员访问低级图形例程。部分原因在于 GPU 的出现,与只有 CPU 相比,这使得利用图形硬件成为更大的挑战。另一个原因是 window 管理器变得越来越复杂,每个操作系统为程序员提供的图形沙箱受到更多限制。
话虽如此,OpenGL 绝对值得一看。它是跨平台的、多功能的,并自动利用任何可用的硬件(包括显卡)。 OpenGL 本身并不直接提供对 windowing 上下文的访问,但您可以使用 OpenGL 实用程序库 (GLUT) 轻松创建它。然而,OpenGL 非常低级,您将不得不处理帧缓冲区、刷新和位掩码以及各种低级废话,如果您以前没有做过的话,它们会使 OpenGL 开发成为一场噩梦。
如果我要开始一个项目,我可能需要一个更强大的图形环境来提供绘图功能并且 window 开箱即用。两者 SDL and SFML 都提供低级图形 API,开始时会更友好一些。它们都是在 OpenGL 之上实现的,因此您可以在需要时使用任何 OpenGL 功能,但不必担心一些更繁琐的细节。
附带说明一下,如今 C 可能不是开始图形编程的最佳语言。如果您想要一个真正简单的图形环境,并且每天都变得越来越重要,您可能需要查看 Web 必须提供的内容。 JavaScript 和 HTML5Canvas 为绘制基元、图像等提供了一个非常简单的界面。