在为 win32 初始化 DirectX 11.1 时,我遵循了 MSDN 示例代码。代码声明了两个 Direct3d 设备:
ID3D11Device* g_pd3dDevice = nullptr;
ID3D11Device1* g_pd3dDevice1 = nullptr;
Run Code Online (Sandbox Code Playgroud)
然后获取设备,如:
D3D_FEATURE_LEVEL featureLevels[] =
{
D3D_FEATURE_LEVEL_11_1,
D3D_FEATURE_LEVEL_11_0,
D3D_FEATURE_LEVEL_10_1,
D3D_FEATURE_LEVEL_10_0,
};
UINT numFeatureLevels = ARRAYSIZE( featureLevels );
hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
nullptr,
createDeviceFlags,
featureLevels,
numFeatureLevels,
D3D11_SDK_VERSION,
&g_pd3dDevice,
&g_featureLevel,
&g_pImmediateContext );
if ( hr == E_INVALIDARG )
{
hr = D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
nullptr,
createDeviceFlags,
&featureLevels[1],
numFeatureLevels - 1,
D3D11_SDK_VERSION,
&g_pd3dDevice,
&g_featureLevel,
&g_pImmediateContext );
}
if( FAILED( hr ) )
return hr;
Run Code Online (Sandbox Code Playgroud)
然后我们获取DXGIDevice: …
在D3中,平移可以在(向左或向右键单击)+拖动中工作.但是,在我的情况下,我想保留(左键单击+拖动)其他操作,而(右键单击+拖动)进行平移.
如何在左键单击时禁用平移?
谢谢.
我的服务器端模型以 UTC 格式保存日期/时间。在我的前端,我使用 moment.js 使用服务器端数据创建时间对象。
但是,我使用 d3 来绘制数据,我不太确定如何d3.scale.utc()使用我的 moment 对象进行初始化。我需要以 UTC 时间呈现轴刻度。
此前,d3.scale.utc().domain(starDate, endDate)正在那里startDate和endDate是原生的JavaScript日期对象。
但是现在我已经重构了代码以使用 moment.js 来处理 UTC 时间并简化了一些日期和时间操作功能,我正面临这个绘图问题。
I am recently working in a ASP.Net MVC project where we use code first technique to create all the database table. I really liked the idea, where you don't need to touch the database and create the model classes which are automatically mapped to the database by the EF layer.
我打算使用PHP启动一个业余项目,并与Laravel一起玩(我是PHP的新手)。我想知道PHP中是否有任何等效的框架支持EF 4.1等代码优先模式?
我正在研究一些Laravel教程,看来ORM(雄辩)与.net中EF 4.1的工作方式并不完全相同。在我看来,您仍然需要在数据库中创建表,然后创建一个模型来映射数据库。我想念什么吗?
谢谢。
我使用的是 d3,在我的图表中我有一个 UTC 格式的时间刻度。
xScale = d3.time.scale.utc().range([0, chartWidth]);
Run Code Online (Sandbox Code Playgroud)
我需要动态指定刻度并动态更改域以避免刻度标签混乱。
我根据域计算刻度并将刻度设置为最接近的 5 倍数。但是,我注意到一个问题,有时在更改域时刻度位置不一致。见下图:
在一些论坛中,我发现可以通过函数设置刻度值tickValues(d3.range(starting value, end value, interval))。请参阅 mbostock 的这篇文章。
现在我不确定——我怎样才能在我的时间尺度上做同样的事情?如果我想计算我自己的 xAxis 刻度值(使用 UTC 时间刻度),我该怎么做?
谢谢。
我正在尝试使用 d3.js 和 svg 渲染甘特图。该图表有两部分,一部分(迷你图表)显示完整的甘特图。其他(主图表)仅显示部分图表。
我在迷你图表中有一个视图窗口,我可以将其拖动到迷你图表上。现在主图表应该只渲染视图窗口内的部分(主图表作为迷你图表的缩放版本)。
现在我需要在主图表中呈现由“矩形”边框的数据。如何裁剪主图表区域之外的元素?
添加另一个 svg 作为主 svg 的内部可能是一个解决方案。还有其他方法吗?
谢谢。
我正在编写基于DirectX 11的引擎.所有DirectX Com对象都包装在Microsoft :: WRL :: ComPtr中.但不幸的是,当我在关机时调用ID3D11Debug :: ReportLiveDeviceObjects时,它报告的多于1个对象的引用计数非零.
我很困惑,哪些代码实际上增加了那些引用计数,防止引用最后为零.举个例子,我在我的代码中提供了ID3D11ShaderResourceView的这个示例用法:
ID3D11ShaderResourceView在我的渲染目标类中声明为成员,
Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_pShaderResourceView
Run Code Online (Sandbox Code Playgroud)
它在构造函数中初始化为nullptr:
m_pShaderResourceView(wwNULLPTR)
Run Code Online (Sandbox Code Playgroud)
界面创建如下:
device->CreateShaderResourceView(m_pDXTexture.Get(), &shaderResourceDesc, m_pShaderResourceView.ReleaseAndGetAddressOf());
Run Code Online (Sandbox Code Playgroud)
该接口用于GenerateMips函数:
deviceContext->GenerateMips(m_pShaderResourceView.Get());
Run Code Online (Sandbox Code Playgroud)
接口有一个getter函数:
ID3D11ShaderResourceView* GetShaderResourceView()
{
return m_pShaderResourceView.Get();
}
Run Code Online (Sandbox Code Playgroud)
最后在析构函数中重置了接口:
m_pShaderResourceView.Reset();
Run Code Online (Sandbox Code Playgroud)
最后,我在实时对象摘要中获得至少8个引用.
我的问题是:
我的代码的哪一部分实际上增加了引用计数?为什么调用Reset不会使引用为零?可能我错过了什么?
谢谢.