LPDIRECT3DDEVICE9 ->BeginScene() 函数失败

LPDIRECT3DDEVICE9 ->BeginScene() function failed

本文关键字:函数 失败 BeginScene gt LPDIRECT3DDEVICE9      更新时间:2023-10-16

现在,我尝试着为游戏2D执行一个引擎。我为游戏的成功创造了机会。但有一个问题。当我调用device->BeginScene()时,它不起作用。函数失败

我已经搜索并知道函数失败,因为我已经调用了device->BeginScene()之前,没有调用device->EndScene()。(这意味着我调用函数device->BeginScene()连续两次)。一些代码:

//GameEngine.cpp
    void CGameEngine::Draw() 
        {
            // let the state draw the screen
            if (!states.empty())
            {
                this->RenderStart();// this function failed- return 0
                this->Render2D_Start();
                states.back()->Draw(this);
                this->Render2D_Stop();
                this->RenderStop();
            }
        }

我已经调试了很多次,但没有发现什么问题!!

有谁能帮我吗?

(引擎中的所有类都是OK的,只有CIntroState和CGameEngine类有问题)下载我的项目:http://mediafire.com/?h3jumchcqujnh69

提前感谢。对不起,我英语不好。

你看过文档了吗?它指定你不允许嵌套BeginScene调用。在呼叫BeginScene之后,必须先呼叫EndScene,再呼叫BeginScene

在任何连续的present调用之间应该有一个IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene对(IDirect3DDevice9:: present或IDirect3DSwapChain9:: present)。IDirect3DDevice9::BeginScene 应该在任何渲染执行之前调用一次, IDirect3DDevice9::EndScene 应该在所有帧渲染提交到运行时之后调用一次。多个非嵌套的IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene对在调用present之间是合法的,但有多个对可能会导致性能下降。