2011-02-28 155 views
4

我知道你可以通过扩展窗口和消除标题栏,状态栏和其他东西来伪造全屏,我对此不感兴趣,我想知道“真正的”全屏模式(我不知道怎么称呼它),就像在游戏中一样。什么是全屏模式

什么是全屏模式? 我应该用什么win-api来实现这个目标? 这可以用来全屏播放电影吗?我知道Windows媒体播放器使用假全屏,因为我可以“切”通过它并看到桌面(使用区域win-api)。 我可以通过一个窗口(使用区域win-api)“切割”通过“真正的”全屏幕,这是直接写入视频内存的方式吗?

谢谢!

+0

您想使用DirectX。 – 2011-02-28 08:07:21

+0

所以没有win-api来做到这一点? – ghet 2011-02-28 08:24:16

+1

DirectX *是Windows API之一。我的意思是,它不在'user32.dll'中,但这并不意味着它不是扩展Windows API的组件。如您所描述的,它专为游戏编程而设计,包括全屏模式。 – 2011-02-28 08:27:23

回答

1

如果你想全屏制作Windows游戏,最好的选择是XNA。这在下面使用了DirectX,但隐藏了大量的实现细节和管道,使开发人员可以轻松开始处理他的游戏。

XNA可以免费下载,并具有良好的文档。

XNA Game Studio 4.0可以下载here

+1

在这里你还没有真正回答过这个问题,你已经简单地将OP引入另一种技术,声称它是“狗的笨蛋”。我个人不喜欢XNA的刚性结构,但它确实为您提供了很多帮助,所以对于初学者来说更容易些。值得指出的是,要求窗口的唯一方法是通过win32 API,但不必直接使用,任何看起来不像win32的东西都是简单的抽象,所以你没有来处理它直接是多么的糟糕。 – thecoshman 2012-05-24 07:43:13

0

如果您不想使用DirectX,请创建窗口并使用CDS_FULLSCREEN标志调用ChangeDisplaySettings。 OpenGL应用程序使用这种方式去全屏。

+0

openGL没有任何'全屏'的概念。窗口大小是在openGL外部进行管理的,并将为您提供openGL的渲染上下文。 – thecoshman 2012-05-15 21:14:59

0

...您可能想要支持“真正”全屏模式的“假”全屏模式 - 对于我们这些运行多显示器系统的人来说,这非常好。

0

就用户而言,全屏幕就是当一个窗口占据整个屏幕时,他们不再看到任何窗口边框或其他桌面的东西。

如您所知,并非所有的全屏幕都是平等的。

'正确'全屏是程序控制屏幕的地方。当游戏使用这种模式时,它可以改变你的屏幕分辨率。如果你曾经玩过一款旧游戏,并且看到你的图标全部搞砸了,这是;在玩游戏的过程中,桌面的分辨率较低。

带有“无边框全屏”的程序窗口被划分为任何边界,标题栏和框架等,并且仅仅是纯粹渲染的矩形。如果您随后将此渲染上下文设置为与桌面大小相同,则会获得全屏效果。

现在,无边框通常是用户友好的方式,因为其他程序仍然以图形方式显示,因此更容易“标出”。 '正确的'全屏给你完全控制硬件,所以理论上你的程序有更多的权力,但这意味着当你标签出来时你必须等待事情重新初始化。

你对你的渲染环境做了什么取决于你,所以是的,你可以使用它播放视频。不管你是否在'正确的'全屏或不是,渲染代码将是相同的。至于通过适当的全屏窗口,我不知道,但我认为没有别的可以看到,只有你的程序。

至于什么win-api,只有一个windows api,但我想你是说,什么窗口库;因为这已经成为一个长期的答案,我只想说这取决于你想从中得到什么。

如果您需要我澄清或扩大任何观点,请随时留下意见。