+ -
当前位置:首页 → 问答吧 → 为什么不能正常显示呢?

为什么不能正常显示呢?

时间:2011-09-13

来源:互联网

为什么没有显示到东西呢?
我原来没有使用DXUT的

现在只有黑色的一片,什么都没有

C/C++ code

#include "head.h"
#include "define.h"


#include "DXUTsettingsdlg.h"
#include "SDKmisc.h"
#pragma warning(disable: 4995)
#define WM_MOUSEWHEEL 0x020A


//***************** Camera *********************************

        CModelViewerCamera MyCamera;

//***************** Model **********************************
    Model_info *model;

using namespace std;




int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    DXUTSetCallbackD3D9DeviceCreated( OnCreateDevice );
    DXUTSetCallbackD3D9FrameRender( OnFrameRender );
    DXUTSetCallbackMsgProc( MsgProc );
    DXUTSetCallbackFrameMove( OnFrameMove );

    DXUTInit( true, true ); // Parse the command line and show msgboxes
    DXUTCreateWindow( L"G" );
    DXUTCreateDevice( true, 1024, 768 );

    DXUTMainLoop();

//*****************    Wait Message *********************
    return DXUTGetExitCode();
}


LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing, void* pUserContext )
{
    MyCamera.HandleMessages( hWnd, uMsg, wParam, lParam );

    return 0;

}

HRESULT CALLBACK OnCreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext )
{
    pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0);

    model = LoadModel_Texture(L"I:\\I disk\\可移动磁盘 (L)\\3DS文件转换为X文件\\conv3ds\\test.x", L"I:\\I disk\\可移动磁盘 (L)\\3DS文件转换为X文件\\conv3ds\\Serah.jpg", pd3dDevice);

    D3DXVECTOR3 eyePt(0.0f, 0.0f, 50.0f);
    D3DXVECTOR3 lookAt(0.0f, 0.0f, 0.0f);
    MyCamera.SetViewParams(&eyePt, &lookAt);

    float fAspectRatio = pBackBufferSurfaceDesc->Width / ( FLOAT )pBackBufferSurfaceDesc->Height;
    MyCamera.SetProjParams( D3DX_PI / 4, fAspectRatio, 0.1f, 1000.0f );
    MyCamera.SetWindow( pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height );

    return S_OK;
}

void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
{
        if (pd3dDevice->BeginScene())
        {
//*****************************************************
            D3DXMATRIX world = *MyCamera.GetWorldMatrix() ;
            pd3dDevice->SetTransform(D3DTS_WORLD, &world) ;

            // Set view matrix
            D3DXMATRIX view  = *MyCamera.GetViewMatrix() ;
            pd3dDevice->SetTransform(D3DTS_VIEW, &view) ;

            // Set projection matrix
            D3DXMATRIX proj  = *MyCamera.GetProjMatrix() ;
            pd3dDevice->SetTransform(D3DTS_PROJECTION, &proj) ;

//***************** Render ****************************
            model->Mesh->DrawSubset(0);

            pd3dDevice->SetTexture(0, model->texture); 

//***************** Render ****************************

            pd3dDevice->EndScene();
            pd3dDevice->Present(NULL, NULL, NULL, NULL);
        }

}

void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext )
{
        MyCamera.FrameMove( fElapsedTime );
}

作者: WJN92   发布时间: 2011-09-13

3d的东东,我不懂 我肯定要学习,先标记

楼主调试时这些回调函数都可以进入吗,可以设个断点试试看是否进入了回调

作者: guyue6670   发布时间: 2011-09-13

找个dxut正确的框架,然后修改添加自己的绘制函数。

作者: dizuo   发布时间: 2011-09-13

引用 1 楼 guyue6670 的回复:
3d的东东,我不懂 我肯定要学习,先标记

楼主调试时这些回调函数都可以进入吗,可以设个断点试试看是否进入了回调


是的,都能进入.

作者: WJN92   发布时间: 2011-09-13