我有一个使用 Directx 9 进行渲染的游戏引擎。我希望能够在主更新和渲染循环执行时加载精灵图形。目前,引擎有一个主更新和渲染循环,因此在此完成的任何加载都会在加载图形时暂停主循环。
我正在查看 POSIX 线程来执行此操作。我创建了线程函数并包含互斥锁,但代码在运行时崩溃。
这是线程函数:
void GameApp::InternalThreadEntry()
{
pthread_mutex_lock (&mutex);
for(int i = 0; i < MAX_NUMBER; i++)
{
test_loader_sprites[i].loadImage(window1,"Test_Image.tga");
}
has_finishd_loading = true;
pthread_mutex_unlock (&mutex);
}
代码在我的引擎渲染函数中崩溃。我确定这是因为作为 window1 实例的成员的 directx 设备被线程访问以进行加载,而主应用程序访问它以进行渲染。
你能解释一下我哪里出错了。我是使用线程的新手。
一切顺利,马丁