创建 D2D1 工厂和 Hwnd 渲染目标
Creating D2D1 Factory and Hwnd Render Target
我成功创建了一个空的 window,它会打开并坐在那里直到我关闭它。接下来,我想尝试使用 Direct 2-D 绘制一些简单的东西 window。我创建了一个 class 来初始化 Direct 2-D,然后绘制到 window,但是在我添加这个 class 之后,我的 window 将不再打开。在摆弄了一下之后,它现在正在打开但随后冻结,我收到一条消息说 "a problem occurred causing the program to misbehave," 和一个按钮 "close program."
window 从不打开到打开,然后在我添加 return false if not s_ok 后给了我错误 s_ok 如下所示
//creating factory
HRESULT d2dFactHRes = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &Direct2DFactory);
if (!S_OK)
return false;
//creating render target.
HRESULT RenTargHRes = Direct2DFactory->CreateHwndRenderTarget(D2D1::RenderTargetProperties(D2D1_RENDER_TARGET_TYPE_DEFAULT, D2D1::PixelFormat(), 0.0F, 0.0F, D2D1_RENDER_TARGET_USAGE_NONE, D2D1_FEATURE_LEVEL_DEFAULT), D2D1_HWND_RENDER_TARGET_PROPERTIES(), &pRT);
if (!S_OK)
return false;
我设置了一个断点来尝试检查 EndDraw() 函数的 return 值,当我启动调试器时,我收到一条错误消息 "unhandled exception occured at 0x00E4264F, an access violation occurred while reading 0x00000000 from location 0xC0000005"
我认为这个错误发生在 BeginDraw 函数到达断点之前。
void Graphics::BeginDraw()
{
pRT->BeginDraw(); //pRT is pointer to render target.
}
我不知道这是什么意思。我假设内存中没有它试图读取的内容?
如有任何建议,我将不胜感激。谢谢
我成功创建了一个空的 window,它会打开并坐在那里直到我关闭它。接下来,我想尝试使用 Direct 2-D 绘制一些简单的东西 window。我创建了一个 class 来初始化 Direct 2-D,然后绘制到 window,但是在我添加这个 class 之后,我的 window 将不再打开。在摆弄了一下之后,它现在正在打开但随后冻结,我收到一条消息说 "a problem occurred causing the program to misbehave," 和一个按钮 "close program."
window 从不打开到打开,然后在我添加 return false if not s_ok 后给了我错误 s_ok 如下所示
//creating factory
HRESULT d2dFactHRes = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &Direct2DFactory);
if (!S_OK)
return false;
//creating render target.
HRESULT RenTargHRes = Direct2DFactory->CreateHwndRenderTarget(D2D1::RenderTargetProperties(D2D1_RENDER_TARGET_TYPE_DEFAULT, D2D1::PixelFormat(), 0.0F, 0.0F, D2D1_RENDER_TARGET_USAGE_NONE, D2D1_FEATURE_LEVEL_DEFAULT), D2D1_HWND_RENDER_TARGET_PROPERTIES(), &pRT);
if (!S_OK)
return false;
我设置了一个断点来尝试检查 EndDraw() 函数的 return 值,当我启动调试器时,我收到一条错误消息 "unhandled exception occured at 0x00E4264F, an access violation occurred while reading 0x00000000 from location 0xC0000005"
我认为这个错误发生在 BeginDraw 函数到达断点之前。
void Graphics::BeginDraw()
{
pRT->BeginDraw(); //pRT is pointer to render target.
}
我不知道这是什么意思。我假设内存中没有它试图读取的内容?
如有任何建议,我将不胜感激。谢谢