游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5567|回复: 16

请教:关于集成显卡下D3D初始化的问题

[复制链接]

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2006-2-27 13:45:00 | 显示全部楼层 |阅读模式
高手请指教
我用的是集成的显卡 在创建3D设备的时候失败 程序无法显示3D的内容
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,

                                  D3DCREATE_SOFTWARE_VERTEXPROCESSING,

                                  &d3dpp, &g_pd3dDevice ) ) )
后来我把上面的代码修改为
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, hWnd,

                                  D3DCREATE_SOFTWARE_VERTEXPROCESSING,

                                  &d3dpp, &g_pd3dDevice ) ) )
也就是把D3DDEVTYPE_HAL改为D3DDEVTYPE_REF
结果还是失败

请高手指教,集成显卡环境下的3D设备任何创建,怎样使用软件模拟的3D
运行环境,还请高手多多指教,可直接回帖,亦可把结果发到我的邮箱,本人不胜感激

本人邮箱:jimwt2004@hotmail.com

2

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2006-2-27 16:47:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

我用的也是集成的显卡,因何我没出现你的问题?
你检查一下别的地方把,看是不是其他地方错了引起的

38

主题

275

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2006-2-27 19:11:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

就是~~集成显卡应该只是性能差点~~不可能出现你那些问题吧?偶也是集成的显卡~~最近刚买的机器---集成GF6100TC

3

主题

72

帖子

72

积分

注册会员

Rank: 2

积分
72
发表于 2006-2-28 16:47:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

驱动问题。
找个新的驱动。

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-3-1 12:10:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

我用的是Xp的 xp里面不是自带有驱动的吗
而且我的集成显卡是INTEL的 应该没有问题的呀

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-3-1 12:14:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

机器大概配置:
CPU 赛扬1.0G     内存:128M  集成INTEL显卡(没装驱动,用的是XP自带驱动)
WINXP SP2        VC++6.0     DX8.0SDK
大家帮我分析一下原因

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-3-1 12:42:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

新装了驱动 还是不行 为什么 程序如下
========================================
#include <d3d8.h>
#include<windows.h>

LPDIRECT3D8 g_pD3D = NULL;
LPDIRECT3DDEVICE8 g_pD3DDevice = NULL;
HWND hWnd;

HRESULT InitialiseD3D(HWND hWnd)
{
    //First of all, create the main D3D object. If it is created successfully we
    //should get a pointer to an IDirect3D8 interface.
    g_pD3D = Direct3DCreate8(D3D_SDK_VERSION);
    if(g_pD3D == NULL)
    {
                MessageBox(hWnd,"GOOD","hello",MB_OK);
        return E_FAIL;
    }

    //Get the current display mode
    D3DDISPLAYMODE d3ddm;
    if(FAILED(g_pD3D->GetAdapterDisplayMode(
               
                D3DADAPTER_DEFAULT,
                &d3ddm)))
    {
                MessageBox(hWnd,"GOOD-MODE","hello",MB_OK);
        return E_FAIL;
    }

    //Create a structure to hold the settings for our device
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(&d3dpp, sizeof(d3dpp));

    //Fill the structure.
    //We want our program to be windowed, and set the back buffer to a format
    //that matches our current display mode
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC;
    d3dpp.BackBufferFormat = d3ddm.Format;

    //Create a Direct3D device.
    if(FAILED(g_pD3D->CreateDevice(
                D3DADAPTER_DEFAULT,
                D3DDEVTYPE_HAL, hWnd,
                D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                &d3dpp,&g_pD3DDevice)))
    {
                MessageBox(hWnd,"HELLO","REF ERROR",MB_OK);

        return E_FAIL;
    }
   
    return S_OK;
}

void Render()
{
    if(g_pD3DDevice == NULL)
    {
        return;
    }

    //Clear the back buffer to a green colour
    g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 255, 0), 1.0f, 0);
   
    //Begin the scene
    g_pD3DDevice->BeginScene();
   
    //Rendering of our game objects will go here
   
    //End the scene
    g_pD3DDevice->EndScene();
   
    //Filp the back and front buffers so that whatever has been rendered on the
    //back buffer will now be visible on screen (front buffer).
    g_pD3DDevice-&gtresent(NULL, NULL, NULL, NULL);
}

void CleanUp()
{
    if(g_pD3DDevice != NULL)
    {
        g_pD3DDevice->Release();
        g_pD3DDevice = NULL;
    }

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

void GameLoop()
{
    //Enter the game loop
    MSG msg;
    BOOL fMessage;
       
    PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE);
   
    while(msg.message != WM_QUIT)
    {
        fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE);

        if(fMessage)
        {
            //Process message
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
                //No message to process, so render the current scene
            Render();
        }

    }
}

//The windows message handler
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        break;
        case WM_KEYUP:
            switch (wParam)
            {
                case VK_ESCAPE:
                    //User has pressed the escape key, so quit
                    DestroyWindow(hWnd);
                    return 0;
                break;
            }
        break;

    }

    return DefWindowProc(hWnd, msg, wParam, lParam);
}

//Application entry point
INT WINAPI WinMain(HINSTANCE hInstance,
                                   HINSTANCE hPrevIhstance,
                                   LPSTR lpCmdLine,
                                   int nCmdShow)

{
    //Register the window class
    WNDCLASSEX wc;
        wc.cbSize=sizeof(WNDCLASSEX);
        wc.lpfnWndProc=WinProc;
        wc.cbClsExtra=NULL;
        wc.cbWndExtra=NULL;
        wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
        wc.hCursor=NULL;
        wc.hIcon=NULL;
        wc.hIconSm=NULL;
        wc.hInstance=hInstance;
        wc.lpszClassName="DX Project 1";
        wc.lpszMenuName=NULL;
        wc.style=NULL;
    RegisterClassEx(&wc);

    //Create the application's window
    hWnd = CreateWindow("DX Project 1",
                "www.andypike.com: Tutorial 1",
                WS_OVERLAPPEDWINDOW,
                50, 50, 500, 500,
                GetDesktopWindow(),
                NULL, wc.hInstance, NULL);

    //Initialize Direct3D
    if(SUCCEEDED(InitialiseD3D(hWnd)))
    {
        //Show our window
        ShowWindow(hWnd,nCmdShow);
        UpdateWindow(hWnd);

        //Start game running: Enter the game loop
        GameLoop();
    }
   
    CleanUp();

    UnregisterClass("DX Project 1", wc.hInstance);
   
    return 0;
}

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-3-1 13:00:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

我估计是程序那个地方的问题 因为我用微软的程序测试可以通过
请高手指点 不甚感激

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2006-3-1 13:22:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

调试版的DX安装好了?

7

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-3-1 14:07:00 | 显示全部楼层

Re:请教:关于集成显卡下D3D初始化的问题

装了 还是不行?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 19:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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