游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1304|回复: 1

小弟刚学D3D,麻烦各位帮忙改下这个初始化程序!!谢谢

[复制链接]

52

主题

103

帖子

103

积分

注册会员

Rank: 2

积分
103
发表于 2009-7-13 23:11:00 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <windows.h>
#include <d3d8.h>
#define WHITE 0
#define FULLSCREEN 0

int Game_Init(void *parms=NULL);
HWND hwnd_app;

LRESULT CALLBACK WindowProc(HWND hwnd,
                                                        UINT msg,
                                                        WPARAM wParam,
                                                        LPARAM lParam)
{
        PAINTSTRUCT ps;
        HDC hdc;

        switch(msg)
        {
        case WM_CREATE:
                {
                        return 0;
                }break;
        case WM_PAINT:
                {
                        hdc=BeginPaint(hwnd,&ps);
                        EndPaint(hwnd,&ps);
                        return 0;
                }break;
        case WM_DESTROY:
                {
                        PostQuitMessage(0);
                        return 0;
                }break;
        default:break;
        }
        return(DefWindowProc(hwnd,msg,wParam,lParam));
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
        WNDCLASS winclass;
        HWND hwnd;
        MSG msg;

        winclass.style=CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
        winclass.lpfnWndProc=WindowProc;
        winclass.cbClsExtra=NULL;
        winclass.cbWndExtra=NULL;
        winclass.hInstance=hInstance;
        winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
        winclass.hCursor=LoadCursor(NULL,IDC_ARROW);
        winclass.hbrBackground=(HBRUSH)GetStockObject(WHITE);
        winclass.lpszClassName="simple";
        winclass.lpszMenuName=NULL;

        if(!RegisterClass(&winclass))
                return 0;

        if(!(hwnd=CreateWindow("simple","the simple window",FULLSCREEN?(WS_POPUP|WS_VISIBLE):
                                                                                                                (WS_OVERLAPPED | WS_VISIBLE | WS_SYSMENU | WS_CAPTION),
                                                        0,0,400,400,
                                                        NULL,NULL,
                                                        hInstance,
                                                        NULL)))
                return 0;

    hwnd_app=hwnd;

        int Game_Init();

        while(1)
        {
                if(PeekMessage(&msg,hwnd,NULL,NULL,PM_REMOVE))
                {
                        if(msg.message==WM_QUIT)
                        {
                                break;
                        }
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
        }
        return(msg.wParam);
}

int Game_Init(void *parms)
{
        IDirect3D8* lpd3d;
        D3DCAPS8 ddcaps;
        D3DPRESENT_PARAMETERS d3dpp;
        IDirect3DDevice8* lpdevice;
        lpd3d=Direct3DCreate8(D3D_SDK_VERSION);
        if(FAILED(lpd3d->GetDeviceCaps(D3DADAPTER_DEFAULT,
                                                                D3DDEVTYPE_HAL,
                                                                &ddcaps)))
                return 0;
        d3dpp.BackBufferWidth=800;
        d3dpp.BackBufferHeight=600;
        d3dpp.BackBufferFormat=D3DFMT_A8R8G8B8;
        d3dpp.BackBufferCount=1;
        d3dpp.MultiSampleType=D3DMULTISAMPLE_NONE;
        d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
        d3dpp.hDeviceWindow=hwnd_app;
        d3dpp.Windowed=true;
        d3dpp.EnableAutoDepthStencil=true;
        d3dpp.AutoDepthStencilFormat=D3DFMT_D24S8;
        d3dpp.Flags=0;
        d3dpp.FullScreen_RefreshRateInHz=D3DPRESENT_RATE_DEFAULT;
       

        if(FAILED(lpd3d->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd_app,D3DCREATE_HARDWARE_VERTEXPROCESSING,
                                                                &d3dpp,&lpdevice)))
                return 0;
        return 0;
}

12

主题

88

帖子

188

积分

注册会员

Rank: 2

积分
188
发表于 2009-7-14 19:35:00 | 显示全部楼层

Re:小弟刚学D3D,麻烦各位帮忙改下这个初始化程序!!谢谢

改什么?你问题没描述清楚,是编译不成功就给出错信息,还是运行错误??
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-19 20:05

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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