dark gdk+visual c++2008在虚拟机中的运行问题

       最近在开始学习做游戏,但是自己用的系统是ubuntu,所以就装了一个virtualbox,并且装了一个xp,于是就开始了游戏之路,但是我发现游戏之路是如此的坎坷,很多小问题,不过都能很快的解决,由于我用的是dark gdk+visual c++ 2008,但是自己见了一个小工程,怎么都无法运行,错误提示如下:

Failed to get device caps
Failed to find valid stencil buffer
Unable to create device
Unable to setup 3D device
所以去网上找,百度一下,毫无提示(唉,这个真是有点次),接着就google了一下,立马就有结果了,果然外国同志也遇到了相同的问题,还好英语不错,能好不费力的读懂,这里放出链接:
http://forum.thegamecreators.com/?m=forum_view&t=199187&b=22

感兴趣的可以去看一下,其中说到了问题好象是3d加速问题,而且开启应该是没有问题的,接着我有查看了一下官网的要求:

http://www.thegamecreators.com/?m=view_product&id=2128&page=download

果然是要开启3d硬件加速的,于是就查找如何开启硬件加速,发现在setting里面就有这个选项,勾选上了,但是还是没有效果,尼吗,

后来有百度了一下"virtual box中开启3d硬件加速",结果有了(还不至于太次,哈哈哈),

装完最新的VirtualBox后,载入已经虚拟好的 XP系统,在开始-运行中输入 dxdiag 命令查看,却很遗憾的发现其中的“Direct3D加速”是灰色的无法启用(图1),回忆当初的安装过程应该是没有问题的,为什么会出现这种情况呢?

这时,突然想到了 VirtualBox 提供的增强功能安装包还没有安装,它可以增强虚拟机系统的显示性能。于是将其装入虚拟机的光驱并运行,果然在安装选项中看到了有一项“3D Support”(图2),可是只要勾选该项软件就会弹出提示,大意是说当前的 Windows 系统不是安全模式无法安装。

通过查询官方说明得知,VirtualBox 必须在Windows安全模式下才能成功安装3D加速驱动。于是重启系统,按F8进入安全模式,再次运行增强功能安装程序,终于可以点选此项并且成功安装了(图3),安装完提示重启系统,进入系统再次运行 dxdiag 可以看到3D加速已经启用,而且运行3D游戏明显流畅了很多。

二级加速 高清视频

没过多久,我在播放高清格式的视频时又发现了问题,画面很不流畅,总是一顿一卡,有了上面开启3D加速的经验,于是想到Virtualbox的默认设置是不是有问题。

于是重新打开软件的设置选项,在“显示”中看到除了“启用3D显示加速”外,软件还会提示“当显存分配少于26M时,虚拟系统无法流畅播放高清视频”(图4)。

所以必须增大虚拟机的显存容量。因为我的物理显卡显存是1G,所以这里设置了64M,具体大小可以根据播放效果进行调节,保存设置重新启动系统,再次播放视频,画面明显流畅了很多。

通过以上两项设置,用VirtualBox 虚拟后的系统在显示性能上得到了很大的提升,无论是3D游戏还是高清视频都更加流畅,看来要用好这虚拟机真还得需要不少技巧。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GDK ,可以使用 GIO 库来进行 I/O 操作。要设置 I/O,可以执行以下步骤: 1. 创建一个 GMainContext 对象,该对象管理事件循环和 I/O 操作。 2. 创建一个或多个 GIOChannel 对象,该对象表示与文件描述符或流相关联的 I/O 通道。 3. 将 GIOChannel 对象添加到 GMainContext ,以便它们可以与事件循环一起工作。 4. 使用 GIOChannel 相关的函数来读取或写入数据。 例如,以下代码演示了如何在 GDK 设置一个简单的 I/O: ```c #include <glib.h> #include <gio/gio.h> int main(int argc, char *argv[]) { GMainContext *context = g_main_context_new(); GIOChannel *channel = g_io_channel_new_file("input.txt", "r", NULL); guint source_id = g_io_add_watch(channel, G_IO_IN, (GIOFunc)read_data, context); g_main_context_iteration(context, TRUE); g_io_channel_unref(channel); g_main_context_unref(context); return 0; } gboolean read_data(GIOChannel *source, GIOCondition condition, gpointer data) { gchar *line = NULL; gsize length = 0; if (g_io_channel_read_line(source, &line, &length, NULL, NULL) == G_IO_STATUS_NORMAL) { g_print("Received: %s", line); g_free(line); } return TRUE; } ``` 在这个例子,我们使用了 g_io_channel_new_file() 函数来创建一个 GIOChannel 对象,该对象打开了名为 "input.txt" 的文件并以只读模式打开。然后我们使用 g_io_add_watch() 函数将 GIOChannel 对象添加到 GMainContext ,以便它可以接收来自文件的数据。这里的 read_data() 函数是一个回调函数,当 GIOChannel 准备好读取数据时,它将被调用。在回调函数,我们使用 g_io_channel_read_line() 函数从 GIOChannel 读取一行文本数据,并将其打印到终端上。 最后,我们使用 g_main_context_iteration() 函数来启动事件循环,以便 GIOChannel 可以接收数据。当事件循环结束时,我们释放 GIOChannel 和 GMainContext,以便程序可以正常退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值