游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2244|回复: 4

做陈卡的D3D9图形程序设计的第一个例子就失败了,大家帮

[复制链接]

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
发表于 2007-5-2 08:12:00 | 显示全部楼层 |阅读模式
已经生成。exe文件了,可以打开甚么反映也没有,像以前刚学C的时候用TC程序会一闪而过那样-__-!!!!
#include <d3d9.h>

LPDIRECT3D9    g_pD3D = NULL;                                 // Direct3D对象指针
LPDIRECT3DDEVICE9  g_pd3dDevice = NULL;         // Direct3D设备指针

HRESULT InitD3D( HWND hWnd )
{
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;
// 查询当前的显示模式信息
        D3DDISPLAYMODE d3ddm;
    if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
        return E_FAIL;
        //设置传递给LPDIRECT3D9::CreateDevice的参数
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = d3ddm.Format;
        if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,
                                hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                &d3dpp, &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }
    return S_OK;
}

//-----------------------------------------------------------------------------
// Name: Cleanup()
// Desc: 释放系统资源
//-----------------------------------------------------------------------------
VOID Cleanup()
{
    if( g_pd3dDevice != NULL)
        g_pd3dDevice->Release();

    if( g_pD3D != NULL)
        g_pD3D->Release();
}

//-----------------------------------------------------------------------------
// Name: Render()
// Desc: progrma main loop, Draws the scene
//-----------------------------------------------------------------------------
VOID Render()
{
    if( NULL == g_pd3dDevice )
        return;
    // 将后缓冲区置为蓝色
        g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET,
                                                        D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
    g_pd3dDevice->BeginScene();
    // 这里加入图形绘制程序
    g_pd3dDevice->EndScene();
    g_pd3dDevice-&gtresent( NULL, NULL, NULL, NULL );
}

//-----------------------------------------------------------------------------
// Desc: 窗口过程函数
//-----------------------------------------------------------------------------
LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{   switch( msg )
    {
        case WM_DESTROY:
            PostQuitMessage( 0 );
            return 0;
        case WM_PAINT:
            Render();
            ValidateRect( hWnd, NULL );
            return 0;
    }
    return DefWindowProc( hWnd, msg, wParam, lParam );
}

//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: 应用程序入口
//-----------------------------------------------------------------------------
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
    // 注册窗口类
    WNDCLASS wndclass = { 0, MsgProc, 0L, 0L, hInst,
                    NULL, NULL, NULL, NULL,"D3D Tutorial" };
    RegisterClass( &wndclass );
    // Create the application's window
    HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial : CreateDevice",
                              WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
                              GetDesktopWindow(), NULL, wndclass.hInstance, NULL );
    // 初始化Direct3D
    if( SUCCEEDED( InitD3D( hWnd ) ) )
    {
        // Show the window
        ShowWindow( hWnd, SW_SHOWDEFAULT );
        UpdateWindow( hWnd );

        MSG msg;
        while( GetMessage( &msg, NULL, 0, 0 ) )
        {
            TranslateMessage( &msg );
            DispatchMessage( &msg );
        }
    }

    // 释放系统资源,退出
    Cleanup();
    UnregisterClass( "D3D Tutorial", wndclass.hInstance );
    return 0;
}
[em17]

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2007-5-2 09:01:00 | 显示全部楼层

Re:做陈卡的D3D9图形程序设计的第一个例子就失败了,大

我发现是所有的例程都这样啊……汗……究竟是甚么问题啊……全部都是生成了可执行文件,可是全部双击都没反应

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2007-5-2 14:27:00 | 显示全部楼层

Re:做陈卡的D3D9图形程序设计的第一个例子就失败了,大

你的代码是书中的原代码,在我这里运行一切正常。

23

主题

112

帖子

870

积分

高级会员

Rank: 4

积分
870
QQ
发表于 2007-5-3 22:27:00 | 显示全部楼层

Re:做陈卡的D3D9图形程序设计的第一个例子就失败了,大

估计是你创建d3d设备失败,然后直接就跳出去了。( 可能你的机子硬件的问题), 特别是构造显示模式那里 可能性最大

64

主题

272

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2007-5-5 17:24:00 | 显示全部楼层

Re:做陈卡的D3D9图形程序设计的第一个例子就失败了,大

我换了另外一个D3DSDK就可以了……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 14:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表