当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

在Ruby 2.0.0p247上安装ruby-debug-base时出错

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

build c++ in debug mode with biicode cmake

来自分类Dev

在Cakephp 3查询中具有(count)在PostgreSQL上失败

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何处理Direct3D11中的backbuffer?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

尝试在Ubuntu 13.10上安装Flash Debug Player时缺少libssl3.so

来自分类Dev

django中的服务器错误(500)在debug = False时部署在heroky上

来自分类Dev

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

来自分类Dev

在构建版本上启动时EXPO崩溃

来自分类Dev

尝试在Ubuntu 13.10上安装Flash Debug Player时缺少libssl3.so

来自分类Dev

Direct3D11在哪里分配资源对象?

来自分类Dev

当Debug设置为零时,Heroku上的CakePHP错误

来自分类Dev

在GROUP BY上的SQL COUNT

来自分类Dev

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

来自分类Dev

XAML DEBUG上的精度

来自分类Dev

使用Count If时出错

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

__NSPlaceholderDictionary initWithObjects:forKeys:count:崩溃

来自分类Dev

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

Related 相关文章

  1. 1

    在Ruby 2.0.0p247上安装ruby-debug-base时出错

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    build c++ in debug mode with biicode cmake

  6. 6

    在Cakephp 3查询中具有(count)在PostgreSQL上失败

  7. 7

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

  8. 8

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

  9. 9

    如何处理Direct3D11中的backbuffer?

  10. 10

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

  11. 11

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

  12. 12

    尝试在Ubuntu 13.10上安装Flash Debug Player时缺少libssl3.so

  13. 13

    django中的服务器错误(500)在debug = False时部署在heroky上

  14. 14

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

  15. 15

    在构建版本上启动时EXPO崩溃

  16. 16

    尝试在Ubuntu 13.10上安装Flash Debug Player时缺少libssl3.so

  17. 17

    Direct3D11在哪里分配资源对象?

  18. 18

    当Debug设置为零时,Heroku上的CakePHP错误

  19. 19

    在GROUP BY上的SQL COUNT

  20. 20

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

  21. 21

    XAML DEBUG上的精度

  22. 22

    使用Count If时出错

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

    __NSPlaceholderDictionary initWithObjects:forKeys:count:崩溃

  29. 29

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

热门标签

归档