当SampleDesc.Count> 1时,Direct3D11 DEBUG MODE在最终的COM版本中崩溃

CodeAngry

*** FML:确实如此。停止了DX屏幕录制软件,并且可以运行。特别感谢@zdd进行了一些联合测试,这有助于我弄清楚这一点。***

记住:FRAPS + D3D11_CREATE_DEVICE_DEBUG +SampleDesc.Count > 1不要混合。

我真的是DX的新手...大约一个星期了。但是即使我的语言和理解有限,问题也很容易描述。我一直DEBUG坚持下去,因为它提供了宝贵的反馈。但是,这反过来又带来了我无法克服的问题。我花了1天的时间一缕缕地拔毛。

问题

如果我使用以下方法创建D3D11设备

vSwapChainDesc.SampleDesc.Count = 4;
vSwapChainDesc.SampleDesc.Quality = 3;

...->Release()无论它是哪个对象,它最终都会崩溃完全相同的DAMN代码与:

vSwapChainDesc.SampleDesc.Count = 1;
vSwapChainDesc.SampleDesc.Quality = 0;

...顺利清理COM引用。更不用说这两种变体没有标记的情况下都能正常工作ReleaseDEBUG

在中Output,我得到一些神秘的错误说live children without parents但是我只有5个与COM包装器一起使用的COM对象。

因此,我删除了COM包装器,对每个包装器进行了->Release()= nullptr手动操作。这是不可能的被释放错误的东西,IMO。最后,->Release()它说达到了断点。

那么...其他人遇到过这种行为吗?我认为除非别人经历了同样的事情,否则我无法得到答案。太奇怪了...

代码

// Uncomment this and it all works... like magic!
// #undef _DEBUG

#pragma region Includes
#include <stdio.h>
#include <conio.h>
#include <map>
#include <windows.h>
#include <d3d11.h>

#pragma comment (lib, "dxgi.lib")
#pragma comment (lib, "d3d11.lib")
#pragma endregion

#pragma region Com Helpers
// track the refcounts on ->Release() :)
std::map<std::string, int> g_ComCounter;

template <typename Interface_t>
Interface_t** ComRelease(Interface_t** aPointer, LPCSTR aName) {
    if(!aPointer) {
        DebugBreak();
    }

    if(*aPointer) {
        // save refcount for debug
        g_ComCounter[aName] = (*aPointer)->Release();
        *aPointer = nullptr;
    }
    printf("Destroyed %p (%s:%d).\r\n", *aPointer, aName, g_ComCounter[aName]);

    return aPointer;
}

#define COM_RELEASE(Pointer) ComRelease(&Pointer, #Pointer)

template <typename Interface_t>
Interface_t** ComPointer(Interface_t** aPointer, LPCSTR aName) {
    if(!aPointer) {
        DebugBreak();
    }

    if(*aPointer) {
        // save refcount for debug
        g_ComCounter[aName] = (*aPointer)->Release();
        *aPointer = nullptr;
    }
    printf("Prepared %p (%s:%d).\r\n", *aPointer, aName, g_ComCounter[aName]);

    // Object is being Acquired

    return aPointer;
}

#define COM_POINTER(Pointer) ComPointer(&Pointer, #Pointer)
#pragma endregion

#pragma region Window Proc
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) {
    PAINTSTRUCT vPainStruct = { 0 };
    HDC vDc(nullptr);

    switch(uMessage) {
        case WM_PAINT:
            vDc = BeginPaint(hWnd, &vPainStruct);
            EndPaint(hWnd, &vPainStruct);
            return FALSE;
            break;
        case WM_ERASEBKGND:
            // Don't erase background!
            return TRUE;
            break;
        case WM_CLOSE:
            DestroyWindow(hWnd);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            break;
    }

    return DefWindowProc(hWnd, uMessage, wParam, lParam);
}
#pragma endregion

#ifdef _CONSOLE
int wmain(int aArgc, const WCHAR* aArgv[]) {
#else
int wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) {
#endif
#pragma region Variables
    HINSTANCE                   vInstance = GetModuleHandle(nullptr);
    HWND                        vHwnd = nullptr;
    D3D_DRIVER_TYPE             vDriverType = D3D_DRIVER_TYPE_UNKNOWN;
    D3D_FEATURE_LEVEL           vFeatureLevel = D3D_FEATURE_LEVEL_11_0;
    IDXGIFactory                *vDxgiFactory = nullptr;
    IDXGIAdapter                *vDxgiAdapter = nullptr;
    ID3D11Device                *vD3dDevice = nullptr;
    ID3D11DeviceContext         *vD3dContext = nullptr;
    IDXGISwapChain              *vSwapChain = nullptr;
    ID3D11Texture2D             *vBackBuffer(nullptr);
    ID3D11RenderTargetView      *vRenderTargetView = nullptr;
#ifdef _DEBUG
    ID3D11Debug                 *vDebugger = nullptr;
    ID3D11InfoQueue             *vInfoQueue = nullptr;
#endif
#pragma endregion

#pragma region Init Window
    // Register class
    WNDCLASSEX vWndClass;
    ZeroMemory(&vWndClass, sizeof(vWndClass));
    vWndClass.cbSize = sizeof(WNDCLASSEX);
    vWndClass.style = 0; // CS_HREDRAW | CS_VREDRAW (draw in loop, no need for WM_PAINT)
    vWndClass.lpfnWndProc = WndProc;
    vWndClass.cbClsExtra = 0;
    vWndClass.cbWndExtra = 0;
    vWndClass.hInstance = vInstance;
    vWndClass.hIcon = 0;
    vWndClass.hCursor = LoadCursor(nullptr, IDC_ARROW);
    vWndClass.hbrBackground = nullptr;
    vWndClass.lpszMenuName = nullptr;
    vWndClass.lpszClassName = L"D3d11Window";
    vWndClass.hIconSm = 0;
    if(!RegisterClassEx(&vWndClass)) {
        DebugBreak();
        return 0;
    }

    // Create window
    RECT vWindowRect = { 0, 0, 640, 480 };
    AdjustWindowRect(&vWindowRect, WS_OVERLAPPEDWINDOW, FALSE);
    vHwnd = CreateWindowEx(
        0, vWndClass.lpszClassName, L"D3D11", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT,
        vWindowRect.right - vWindowRect.left, vWindowRect.bottom - vWindowRect.top,
        nullptr, nullptr, vInstance,
        nullptr);
    if(!vHwnd) {
        DebugBreak();
        return 0;
    }

    ShowWindow(vHwnd, SW_SHOWDEFAULT);
#pragma endregion

#pragma region Initialization
    RECT vClientRect = { 0 };
    GetClientRect(vHwnd, &vClientRect);
    UINT vWidth = vClientRect.right - vClientRect.left;
    UINT vHeight = vClientRect.bottom - vClientRect.top;

    if(FAILED(CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)COM_POINTER(vDxgiFactory)))) {
        DebugBreak();
        return 0;
    }

    if(FAILED(vDxgiFactory->EnumAdapters(0, COM_POINTER(vDxgiAdapter)))) {
        DebugBreak();
        return 0;
    }

    D3D_FEATURE_LEVEL vRequestedFeatureLevels[] = {
        D3D_FEATURE_LEVEL_11_0,
        // D3D_FEATURE_LEVEL_10_1,
        // D3D_FEATURE_LEVEL_10_0
    };

    UINT vNumFeatureLevels = ARRAYSIZE(vRequestedFeatureLevels);

    UINT vDeviceFlags = 0;
#ifdef _DEBUG
    vDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

    if(FAILED(D3D11CreateDevice(
        vDxgiAdapter,
        vDriverType,
        nullptr,
        vDeviceFlags,
        vRequestedFeatureLevels,
        vNumFeatureLevels,
        D3D11_SDK_VERSION,
        COM_POINTER(vD3dDevice),
        &vFeatureLevel,
        COM_POINTER(vD3dContext)))) {
        return 0;
    }

#ifdef _DEBUG
    if(FAILED(vD3dDevice->QueryInterface(__uuidof(ID3D11Debug), (LPVOID*)COM_POINTER(vDebugger)))) {
        return 0;
    }
    if(FAILED(vDebugger->QueryInterface(__uuidof(ID3D11InfoQueue), (LPVOID*)COM_POINTER(vInfoQueue)))) {
        return 0;
    }
    vInfoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_CORRUPTION, true);
    vInfoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, true);
    vDebugger->ReportLiveDeviceObjects(D3D11_RLDO_SUMMARY | D3D11_RLDO_DETAIL);
#endif

    UINT vMsaaQuality = 0;
    if(FAILED(vD3dDevice->CheckMultisampleQualityLevels(DXGI_FORMAT_R8G8B8A8_UNORM, 4, &vMsaaQuality)) || (vMsaaQuality < 1)) {
        return 0;
    }
    printf("MsaaQuality: %d for 4\r\n", vMsaaQuality);

    DXGI_SWAP_CHAIN_DESC vSwapChainDesc;
    ZeroMemory(&vSwapChainDesc, sizeof(vSwapChainDesc));
    vSwapChainDesc.BufferCount = 2;
    vSwapChainDesc.BufferDesc.Width = vWidth;
    vSwapChainDesc.BufferDesc.Height = vHeight;
    vSwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    vSwapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
    vSwapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
    vSwapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
    vSwapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_CENTERED;
    vSwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    vSwapChainDesc.SampleDesc.Count = 4; // set 1 for the code to work              vSwapChainDesc.SampleDesc.Quality = vMsaaQuality - 1;
    vSwapChainDesc.OutputWindow = vHwnd;
    vSwapChainDesc.Windowed = true;
    vSwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
    vSwapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;

    if(FAILED(vDxgiFactory->CreateSwapChain(vD3dDevice, &vSwapChainDesc, COM_POINTER(vSwapChain)))) {
        return 0;
    }

    if(FAILED(vSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)COM_POINTER(vBackBuffer)))) {
        return 0;
    }

    if(FAILED(vD3dDevice->CreateRenderTargetView(vBackBuffer, nullptr, COM_POINTER(vRenderTargetView)))) {
        return 0;
    }

    vD3dContext->OMSetRenderTargets(1, &vRenderTargetView, nullptr);

    D3D11_VIEWPORT vViewport = { 0 };
    vViewport.Width = static_cast<FLOAT>(vWidth);
    vViewport.Height = static_cast<FLOAT>(vHeight);
    vViewport.MinDepth = D3D11_MIN_DEPTH;
    vViewport.MaxDepth = D3D11_MAX_DEPTH;
    vViewport.TopLeftX = 0;
    vViewport.TopLeftY = 0;
    vD3dContext->RSSetViewports(1, &vViewport);
#pragma endregion

#pragma region Game Loop
    MSG vMessage = { 0 };
    while(WM_QUIT != vMessage.message) {
        while(PeekMessage(&vMessage, 0, 0, 0, PM_REMOVE)) {
            TranslateMessage(&vMessage);
            DispatchMessage(&vMessage);
        }

        if(WM_QUIT == vMessage.message) {
            break;
        }

#pragma region Render
        float vClearColor[4] = { 0.0f, 0.0f, 0.0f, 1.0f };
        vD3dContext->ClearRenderTargetView(vRenderTargetView, vClearColor);
        vSwapChain->Present(true, 0); // vsync
#pragma endregion
    }
#pragma endregion

#pragma region Cleanup
    if(vSwapChain) {
        vSwapChain->SetFullscreenState(false, nullptr);
    }
    if(vD3dContext) {
        vD3dContext->ClearState();
    }

    COM_RELEASE(vRenderTargetView);
    COM_RELEASE(vBackBuffer);
    COM_RELEASE(vSwapChain);
    COM_RELEASE(vD3dContext);
    COM_RELEASE(vD3dDevice);
    COM_RELEASE(vDxgiFactory);
    COM_RELEASE(vDxgiAdapter);

#ifdef _DEBUG
    COM_RELEASE(vDebugger);
    COM_RELEASE(vInfoQueue);
#endif

    printf("\r\nREF COUNTS AFTER RELEASE():\r\n");
    for(const auto& vComCount : g_ComCounter) {
        printf("%s:%d\r\n", vComCount.first.c_str(), vComCount.second);
    }

#pragma endregion

    _getch();
    return (int)vMessage.wParam;
}

救命!

如果您想让我注释代码以更好地解释逻辑,我会的。我收到评论,提到可以清楚地解释问题和代码的内容……也许我不够清楚。

最后的想法

也许我不调用某些对象内部有某种释放函数。也许我做错了某事或真的错了。但是我是从信誉良好的网站上获得的。它与Hello DirectX!我现在沉迷于自己的书中代码匹配

该代码段已精简且简约。它是尝试识别问题时更复杂的版本的修整版。另外,我删除了所有OOP,以使其易于执行。

现在有一个最后的问题:除此以外,还有其他方法可以使线条平滑SampleDesc吗?

附注这是Windows 7 x64,VS 2013 + 2014 CTP。并且该卡在调试和释放模式下均能正常工作(边缘光滑)。这只是在调试模式下失败的最终版本。

dd

我不知道为什么您的代码会崩溃,但是我想分享一些基于您的代码的DirectX编程经验,:)

  1. 使用Win32应用程序而不是控制台应用程序
  2. ComRelease函数太复杂了,您不需要太多代码,只需一行就足够了。
  3. 不要包装指向ComPointer的d3d指针。

如下所示的更干净的代码,您将摆脱复杂的COM内容,而将精力放在检查崩溃的代码逻辑上。

#define DEBUG
#pragma region Includes
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <d3d11.h>

#pragma comment (lib, "dxgi.lib")
#pragma comment (lib, "d3d11.lib")
#pragma endregion

// Release COM object
#define SAFE_RELEASE(P) if(P){ P->Release(); P = NULL;}

#pragma region Window Proc
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) {
    PAINTSTRUCT vPainStruct = { 0 };
    HDC vDc(nullptr);

    switch(uMessage) {
        case WM_PAINT:
            vDc = BeginPaint(hWnd, &vPainStruct);
            EndPaint(hWnd, &vPainStruct);
            return FALSE;
            break;
        case WM_ERASEBKGND:
            // Don't erase background!
            return TRUE;
            break;
        case WM_CLOSE:
            DestroyWindow(hWnd);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            break;
    }

    return DefWindowProc(hWnd, uMessage, wParam, lParam);
}
#pragma endregion

int main() {
#pragma region Variables
    HINSTANCE                   vInstance = GetModuleHandle(nullptr);
    HWND                        vHwnd = nullptr;
    D3D_DRIVER_TYPE             vDriverType = D3D_DRIVER_TYPE_UNKNOWN;
    D3D_FEATURE_LEVEL           vFeatureLevel = D3D_FEATURE_LEVEL_11_0;
    IDXGIFactory                *vDxgiFactory = NULL;
    IDXGIAdapter                *vDxgiAdapter = nullptr;
    ID3D11Device                *vD3dDevice = nullptr;
    ID3D11DeviceContext         *vD3dContext = nullptr;
    IDXGISwapChain              *vSwapChain = nullptr;
    ID3D11Texture2D             *vBackBuffer = NULL;
    ID3D11RenderTargetView      *vRenderTargetView = nullptr;
#ifdef _DEBUG
    ID3D11Debug                 *vDebugger = nullptr;
    ID3D11InfoQueue             *vInfoQueue = nullptr;
#endif
#pragma endregion

#pragma region Init Window
    // Register class
    WNDCLASSEX vWndClass;
    ZeroMemory(&vWndClass, sizeof(vWndClass));
    vWndClass.cbSize = sizeof(WNDCLASSEX);
    vWndClass.style = 0; // CS_HREDRAW | CS_VREDRAW (draw in loop, no need for WM_PAINT)
    vWndClass.lpfnWndProc = WndProc;
    vWndClass.cbClsExtra = 0;
    vWndClass.cbWndExtra = 0;
    vWndClass.hInstance = vInstance;
    vWndClass.hIcon = 0;
    vWndClass.hCursor = LoadCursor(nullptr, IDC_ARROW);
    vWndClass.hbrBackground = nullptr;
    vWndClass.lpszMenuName = nullptr;
    vWndClass.lpszClassName = L"D3d11Window";
    vWndClass.hIconSm = 0;
    if(!RegisterClassEx(&vWndClass)) {
        DebugBreak();
        return 0;
    }

    // Create window
    RECT vWindowRect = { 0, 0, 640, 480 };
    vHwnd = CreateWindowEx(
        0, vWndClass.lpszClassName, L"D3D11", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT, CW_USEDEFAULT,
        vWindowRect.right - vWindowRect.left, vWindowRect.bottom - vWindowRect.top,
        nullptr, nullptr, vInstance,
        nullptr);
    if(!vHwnd) {
        DebugBreak();
        return 0;
    }

    ShowWindow(vHwnd, SW_SHOWDEFAULT);
#pragma endregion

#pragma region Initialization
    RECT vClientRect = { 0 };
    GetClientRect(vHwnd, &vClientRect);
    UINT vWidth = vClientRect.right - vClientRect.left;
    UINT vHeight = vClientRect.bottom - vClientRect.top;

    if(FAILED(CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&vDxgiFactory)))) {
        DebugBreak();
        return 0;
    }

    if(FAILED(vDxgiFactory->EnumAdapters(0, &vDxgiAdapter))) {
        DebugBreak();
        return 0;
    }

    D3D_FEATURE_LEVEL vRequestedFeatureLevels[] = {
        D3D_FEATURE_LEVEL_11_0,
        // D3D_FEATURE_LEVEL_10_1,
        // D3D_FEATURE_LEVEL_10_0
    };

    UINT vNumFeatureLevels = ARRAYSIZE(vRequestedFeatureLevels);

    UINT vDeviceFlags = 0;
#ifdef _DEBUG
    vDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

    if(FAILED(D3D11CreateDevice(
        vDxgiAdapter,
        vDriverType,
        nullptr,
        vDeviceFlags,
        vRequestedFeatureLevels,
        vNumFeatureLevels,
        D3D11_SDK_VERSION,
        &vD3dDevice,
        &vFeatureLevel,
        &vD3dContext))) {
        return 0;
    }

    UINT vMsaaQuality = 0;
    if(FAILED(vD3dDevice->CheckMultisampleQualityLevels(DXGI_FORMAT_R8G8B8A8_UNORM, 4, &vMsaaQuality)) || (vMsaaQuality < 1)) {
        return 0;
    }
    printf("MsaaQuality of max %d supported for count 4\r\n", vMsaaQuality);

    DXGI_SWAP_CHAIN_DESC vSwapChainDesc;
    ZeroMemory(&vSwapChainDesc, sizeof(vSwapChainDesc));
    vSwapChainDesc.BufferCount = 2;
    vSwapChainDesc.BufferDesc.Width = vWidth;
    vSwapChainDesc.BufferDesc.Height = vHeight;
    vSwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    vSwapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
    vSwapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
    vSwapChainDesc.BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
    vSwapChainDesc.BufferDesc.Scaling = DXGI_MODE_SCALING_CENTERED;
    vSwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    vSwapChainDesc.SampleDesc.Count = 4; // set 1 to work
    vSwapChainDesc.SampleDesc.Quality = vMsaaQuality - 1;
    vSwapChainDesc.OutputWindow = vHwnd;
    vSwapChainDesc.Windowed = true;
    vSwapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
    vSwapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;

    if(FAILED(vDxgiFactory->CreateSwapChain(vD3dDevice, &vSwapChainDesc, &vSwapChain))) {
        return 0;
    }

    if(FAILED(vSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&vBackBuffer))) {
        return 0;
    }

    if(FAILED(vD3dDevice->CreateRenderTargetView(vBackBuffer, nullptr, &vRenderTargetView))) {
        return 0;
    }

    vD3dContext->OMSetRenderTargets(1, &vRenderTargetView, nullptr);

    D3D11_VIEWPORT vViewport = { 0 };
    vViewport.Width = static_cast<FLOAT>(vWidth);
    vViewport.Height = static_cast<FLOAT>(vHeight);
    vViewport.MinDepth = D3D11_MIN_DEPTH;
    vViewport.MaxDepth = D3D11_MAX_DEPTH;
    vViewport.TopLeftX = 0;
    vViewport.TopLeftY = 0;
    vD3dContext->RSSetViewports(1, &vViewport);
#pragma endregion

#pragma region Game Loop
    MSG vMessage = { 0 };
    while(WM_QUIT != vMessage.message) {
        while(PeekMessage(&vMessage, 0, 0, 0, PM_REMOVE)) {
            TranslateMessage(&vMessage);
            DispatchMessage(&vMessage);
        }

        if(WM_QUIT == vMessage.message) {
            break;
        }

#pragma region Render
        float vClearColor[4] = { 1.0f, 0.0f, 0.0f, 1.0f };
        vD3dContext->ClearRenderTargetView(vRenderTargetView, vClearColor);
        vSwapChain->Present(true, 0); // vsync
#pragma endregion
    }
#pragma endregion

#pragma region Cleanup
    if(vSwapChain) {
        vSwapChain->SetFullscreenState(false, nullptr);
    }
    if(vD3dContext) {
        vD3dContext->ClearState();
    }

    SAFE_RELEASE(vRenderTargetView);
    SAFE_RELEASE(vBackBuffer);
    SAFE_RELEASE(vSwapChain);
    SAFE_RELEASE(vD3dContext);
    SAFE_RELEASE(vD3dDevice);
    SAFE_RELEASE(vDxgiFactory);
    SAFE_RELEASE(vDxgiAdapter);

#ifdef _DEBUG
    SAFE_RELEASE(vDebugger);
    SAFE_RELEASE(vInfoQueue);
#endif


#pragma endregion

    _getch();
    return (int)vMessage.wParam;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当SampleDesc.Count> 1时,Direct3D11 DEBUG MODE在最终的COM版本上崩溃

来自分类Dev

如何处理Direct3D11中的backbuffer?

来自分类Dev

在Direct3D11中模拟Direct3D9固定功能管道

来自分类Dev

ssh -vvv中的各个级别是什么:debug1,debug2,debug3

来自分类Dev

Direct3D11是否包括色彩空间转换?

来自分类Dev

Direct3D11在哪里分配资源对象?

来自分类Dev

Direct3D11是否包括色彩空间转换?

来自分类Dev

Android 应用程序在用作调试时工作,但如果安装了测试版本“app-debug”,则会崩溃

来自分类Dev

为什么Direct3D11的输入汇编程序仅绘制1个对象?

来自分类Dev

如果$ count是php中3 +1的倍数

来自分类Dev

#if DEBUG无法在Windows Service版本中运行

来自分类Dev

#if DEBUG无法在Windows Service版本中运行

来自分类Dev

JavaScript中的“ if debug”?

来自分类Dev

Apple App Store中的“应用程序在启动时崩溃”,但在Debug / Adhock中工作正常吗?

来自分类Dev

在其他D3D11设备上复制Direct3D11纹理

来自分类Dev

在Oracle中对列(Count1)进行计数时出错

来自分类Dev

根据Count> 1在熊猫中创建df

来自分类Dev

1个查询中获取多个COUNT

来自分类Dev

Group By 中的 Count(*) - 返回 1,而不是“0”

来自分类Dev

React Native-适用于Debug的Android应用,在发布时崩溃

来自分类Dev

在INFORMIX中打印Debug语句

来自分类Dev

JAB中的DEBUG日志旋转

来自分类Dev

ssh连接被拒绝,停留在“ debug1:本地版本字符串”

来自分类Dev

使用Dex For Debug转换类使Windows崩溃

来自分类Dev

当使用'count'变量添加到对象中时,var'count'仍为0

来自分类Dev

在Release版本中获得System.Diagnostics.Debug.Assert()的行为?

来自分类Dev

build c++ in debug mode with biicode cmake

来自分类Dev

当DEBUG = True时,为什么断言会记录在哨兵中?

来自分类Dev

在命令行上给-jvm-debug时,如何在Test中设置fork?

Related 相关文章

  1. 1

    当SampleDesc.Count> 1时,Direct3D11 DEBUG MODE在最终的COM版本上崩溃

  2. 2

    如何处理Direct3D11中的backbuffer?

  3. 3

    在Direct3D11中模拟Direct3D9固定功能管道

  4. 4

    ssh -vvv中的各个级别是什么:debug1,debug2,debug3

  5. 5

    Direct3D11是否包括色彩空间转换?

  6. 6

    Direct3D11在哪里分配资源对象?

  7. 7

    Direct3D11是否包括色彩空间转换?

  8. 8

    Android 应用程序在用作调试时工作,但如果安装了测试版本“app-debug”,则会崩溃

  9. 9

    为什么Direct3D11的输入汇编程序仅绘制1个对象?

  10. 10

    如果$ count是php中3 +1的倍数

  11. 11

    #if DEBUG无法在Windows Service版本中运行

  12. 12

    #if DEBUG无法在Windows Service版本中运行

  13. 13

    JavaScript中的“ if debug”?

  14. 14

    Apple App Store中的“应用程序在启动时崩溃”,但在Debug / Adhock中工作正常吗?

  15. 15

    在其他D3D11设备上复制Direct3D11纹理

  16. 16

    在Oracle中对列(Count1)进行计数时出错

  17. 17

    根据Count> 1在熊猫中创建df

  18. 18

    1个查询中获取多个COUNT

  19. 19

    Group By 中的 Count(*) - 返回 1,而不是“0”

  20. 20

    React Native-适用于Debug的Android应用,在发布时崩溃

  21. 21

    在INFORMIX中打印Debug语句

  22. 22

    JAB中的DEBUG日志旋转

  23. 23

    ssh连接被拒绝,停留在“ debug1:本地版本字符串”

  24. 24

    使用Dex For Debug转换类使Windows崩溃

  25. 25

    当使用'count'变量添加到对象中时,var'count'仍为0

  26. 26

    在Release版本中获得System.Diagnostics.Debug.Assert()的行为?

  27. 27

    build c++ in debug mode with biicode cmake

  28. 28

    当DEBUG = True时,为什么断言会记录在哨兵中?

  29. 29

    在命令行上给-jvm-debug时,如何在Test中设置fork?

热门标签

归档