摸爬滚打DirectX11_day02——VS2010+DirectX11的环境配置

由于本人希望从DirectX11的基础sample开始学习,所以选择了

VS2010+Microsoft DirectX SDK(June 2010)的开发环境

学习龙书DirectX11版本,运行课本的Sample必须要在VS2010的环境下,不然会报错,想要完全专注于DX11的学习,那么请选择VS2010。


安装Microsoft DirectX SDK(June 2010)

安装失败 S1023的解决方案
卸载

Microsoft Visual C++ 2010 x86 Redistributable

Microsoft Visual C++ 2010 x64 Redistributable
以及所有Runtime文件。

如果还是报错,查看C:\Windows\Logs的日志DXError
[12/10/16 15:44:31] module: dxupdate(Jun 2 2010), file: dxupdate.cpp, line: 2223, function: RegisterDLL

Failed API:     LoadLibraryEx()
Error:      (193) - %1 不是有效的 Win32 应用程序。



Unable to load C:\Windows\system32\xactengine2_0.dll.

[12/10/16 15:44:31] module: dxupdate(Jun 2 2010), file: dxupdate.cpp, line: 5848, function: DirectXUpdateInstallPlugIn

RegisterDllFromSection() failed.

[12/10/16 15:44:31] module: dsetup32(Jun 2 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn

DirectXUpdateInstallPlugIn() failed.

[12/10/16 15:44:31] module: dsetup32(Jun 2 2010), file: setup.cpp, line: 1723, function: CSetup::SetupForDirectX

InstallPlugIn() failed.

此时参照此博客的解决方案

解决Unable to load C:\Windows\system32\xactengine2_0.dll.


DirectX11在VS2010的配置

基本配置可以参考
浅墨逐梦旅程

博主可能点背,遇到了各种各样的问题

#include <Windows.h>
#include <d3dx9.h>
#include <MMSystem.h>
LPDIRECT3D9 g_pD3D;
LPDIRECT3DDEVICE9 g_pd3dDevice;
LPDIRECT3DVERTEXBUFFER9 g_pVB;
struct CUSTOMVERTEX{    
    FLOAT x, y, z;    
    DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
HRESULT InitObject()
{    
    CUSTOMVERTEX triangle[] =     
    {        
        { -1.0f,-1.0f, 0.0f, 0xffff0000, },        
        {  1.0f,-1.0f, 0.0f, 0xff0000ff, },        
        {  0.0f, 1.0f, 0.0f, 0xffffffff, }  
    };    
    if (FAILED(g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL)))        
        return E_FAIL;    
    VOID* pVertices;    
    if (FAILED(g_pVB->Lock(0,sizeof(triangle), &pVertices, 0)))        
        return E_FAIL;    
    memcpy(pVertices, triangle, sizeof(triangle));    
    g_pVB->Unlock();    
    return S_OK;
}
HRESULT InitD3D(HWND hWnd)
{    
    g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);    
    if (NULL == g_pD3D)        
        return E_FAIL;    
    D3DPRESENT_PARAMETERS d3dpp;    
    ZeroMemory(&d3dpp, sizeof(d3dpp));    
    d3dpp.Windowed = TRUE;    
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;    
    if(FAILED( g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,                                         
        hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING,                                        
        &d3dpp, &g_pd3dDevice)))    
    {        
        return E_FAIL;    
    }    
    g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);    
    // Turn off D3D lighting, since we are providing our own vertex colors    
    g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE );    
    if (FAILED(InitObject()))        
        return E_FAIL;    
    return S_OK;
}
void SetupMatrices()
{    
    D3DXMATRIX matWorld;    
    UINT iTime = timeGetTime() % 1000;    
    FLOAT fAngle = iTime * ( 2.0f * D3DX_PI ) / 1000.0f;    
    D3DXMatrixRotationY(&matWorld, fAngle);    
    g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);    
    D3DXVECTOR3 vEyePt(0.0f, 3.0f, -5.0f);    
    D3DXVECTOR3 vLookAtPt(0.0f, 0.0f, 0.0f);    
    D3DXVECTOR3 vUp(0.0f, 1.0f, 0.0f);    
    D3DXMATRIXA16 matView;    
    D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookAtPt, &vUp);    
    g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);    
    D3DXMATRIX matPoj;    
    D3DXMatrixPerspectiveFovLH(&matPoj, D3DX_PI/4, 1.0f, 1.0f, 100.0f);    
    g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matPoj);
}
void Render()
{    
    g_pd3dDevice->Clear(0,NULL,  D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0);    
    g_pd3dDevice->BeginScene();    
    SetupMatrices();    
    g_pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX));    
    g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);    
    g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);    
    g_pd3dDevice->EndScene();    
    g_pd3dDevice->Present(NULL, NULL, NULL, NULL);
}
void Cleanup()
{    
    if (g_pd3dDevice)        
        g_pd3dDevice->Release();    
    if (g_pD3D)        
        g_pD3D->Release();    
    if (g_pVB)        
        g_pVB->Release();
}
LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{    
    switch (msg)    
    {    
    case WM_DESTROY:       
        PostQuitMessage(0);        
        return 0;    
    case WM_PAINT:        
        ValidateRect(hWnd, NULL);        
        return 0;   
    }    
    return DefWindowProc(hWnd, msg, wParam, lParam);
}
INT WINAPI WinMain(__in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
{    
    WNDCLASSEX wc = {sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0, 0,    GetModuleHandle(NULL), NULL, NULL, NULL, NULL,     L"Direct3D", NULL};    
    RegisterClassEx(&wc);    
    // Create the application window    
    HWND hWnd = CreateWindow(L"Direct3D", 
        L"Learn", WS_OVERLAPPEDWINDOW,        
        100, 100, 300, 300,         
        GetDesktopWindow(), 
        NULL, wc.hInstance, NULL);    
    //
    ShowWindow(hWnd, SW_SHOW);    
    if (SUCCEEDED(InitD3D(hWnd)))    
    {
        ShowWindow(hWnd, SW_SHOWDEFAULT);        
        UpdateWindow(hWnd);       
        MSG msg;        
        ZeroMemory(&msg, sizeof(msg));    
        while (msg.message != WM_QUIT)   
        {         
            if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))     
            {           
                TranslateMessage(&msg);     
                DispatchMessage(&msg);      
            }          
            else           
                Render();       
        }           
    }       
    UnregisterClass( L"Direct3D", wc.hInstance );    
    Cleanup();
    return nShowCmd;
}

这是一个Sample,运行时编译器报错。

错误描述:

1>正在编译资源…
1>正在编译资源清单…
1>正在链接…
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
1>生成日志保存在“file://E:\HelloC\ShapeFill V11\ShapeFill\Debug\ShapeFill.log”
1>ShapeFill- 1个错误,0个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========

此时可以通过两种方法解决:

解决方案:

第一步:将 项目——项目属性——配置属性——连接器——清单文件——嵌入清单 “是”改为“否”。若还不能解决问题进入第二步。

第二步:查看计算机是否为64bit操作系统,如是,继续如下操作。
查找是否有两个cvtres.exe。
…\vc\bin\cvtres.exe(VS2010的安装目录)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
右键属性—详细信息, 查看两者版本号,删除/重命名较旧的版本。

第二种方法可以避免每次都需要进行设置。


运行成功,可是编译器提醒缺少MSVCR100D.dll,此时只需要在网上下载MSVCR100D.dll放到C:\Windows\SysWOW64(64位机器放在这个目录)下即可。

此时终于成功了!
这里写图片描述

接下来终于可以正式的开始DirectX11的学习了。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DirectX_11_redist.zip是一个文件压缩包,用于安装和分发DirectX 11应用程序所需的组件。DirectX是由微软公司开发的一组多媒体技术和工具集,用于开发游戏和多媒体应用程序。 DirectX 11DirectX技术的最新版本,提供了在游戏和图形应用程序中实现更快、更精确和更真实的图形效果的功能。这些功能包括硬件加速的3D渲染、纹理和着色器特效、多线程渲染、高级光照和阴影效果等。 DirectX 11_redist.zip文件中包含了DirectX 11运行时组件和库文件,用于支持和驱动DirectX 11应用程序的运行。这些组件包括Direct3D、Direct2D、DirectCompute、DirectSound、DirectPlay、DirectXMath等。安装DirectX 11_redist.zip文件后,系统将获得所需的运行时环境,使DirectX 11应用程序能够正常运行。 为了使用DirectX_11_redist.zip文件,您可以按照以下步骤进行操作: 1. 下载DirectX_11_redist.zip文件并解压缩到您选择的文件夹中。 2. 打开解压缩后的文件夹,并进入"DirectX_11_redist"目录。 3. 运行"DXSETUP.exe"文件,这将启动DirectX 11的安装程序。 4. 按照安装程序的指示完成安装过程。安装过程可能需要一些时间,请耐心等待。 5. 安装完成后,您可以重新启动计算机,以确保对DirectX 11的更改生效。 通过安装DirectX_11_redist.zip,您将能够享受到DirectX 11的图形和多媒体增强功能,提升您的游戏和图形应用程序的性能和体验。 ### 回答2: directx_11_redist.zip是DirectX 11的分发版本压缩文件。DirectX是微软开发的一款图形和多媒体应用程序编程接口(API),用于在Windows操作系统上开发游戏、视频播放和多媒体应用程序等。DirectX 11DirectX技术的第11个版本,它引入了许多新特性和改进,提供更好的图形渲染效果和更高的性能。 DirectX 11支持的功能包括硬件加速的渲染、立体影像、全屏抗锯齿等。它还引入了Direct3D 11图形API,可用于实现高质量的3D图形渲染。DirectX 11还提供了更好的多线程支持,可以同时使用多个线程来处理图形渲染和计算任务,以提高性能。 directx_11_redist.zip是DirectX 11的分发版本,通过安装该压缩文件,可以将DirectX 11的运行时库和相关文件部署到目标计算机中,以便其他应用程序能够正常运行和利用DirectX 11的功能。分发版本通常包含了DirectX 11的安装程序以及必要的文件和依赖项。 要安装DirectX 11,只需解压缩directx_11_redist.zip文件,然后运行安装程序即可完成安装。安装过程会自动检测目标计算机上已安装的DirectX版本,并进行升级或安装。安装完成后,其他应用程序就能够在目标计算机上使用DirectX 11的功能了。 总之,directx_11_redist.zip是DirectX 11的分发版本压缩文件,用于将DirectX 11的运行时库和相关文件部署到目标计算机中,以支持其他应用程序在该计算机上使用DirectX 11的功能。 ### 回答3: directx_11_redist.zip是一个压缩文件,用于安装和部署DirectX 11运行库的工具。DirectX是微软开发的一套多媒体应用程序接口(API),用于游戏开发和图形处理。DirectX 11是其中的一个版本,为开发者提供了更高级的图形和计算功能,以及更好的性能和效果。 directx_11_redist.zip文件包含了一系列用于安装和更新DirectX 11运行库所需的文件和资源。通过运行该压缩文件,用户可以将这些文件解压到目标计算机上,并进行安装。安装DirectX 11运行库对于许多需要使用DirectX 11功能的游戏和应用程序来说是必要的。 使用directx_11_redist.zip不仅可以更新已安装的DirectX版本,还可以确保目标计算机上没有DirectX版本时能够正常运行需要DirectX 11的应用程序。此外,如果已经安装了旧版本的DirectX,也可以通过directx_11_redist.zip进行更新,以获得更好的性能和兼容性。 总之,directx_11_redist.zip是一个用于安装和部署DirectX 11运行库的工具,它可以帮助开发人员和用户确保计算机能够正常运行需要DirectX 11功能的应用程序,并提供更高级的图形和计算功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值