游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1571|回复: 2

dx一个简单问题

[复制链接]

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
发表于 2007-3-16 17:10:00 | 显示全部楼层 |阅读模式
用SimpleSample那个工程,加入如下代码,没有显示,怎么看都看不出来错误。

首先view没问题
    D3DXVECTOR3 vecEye(0.0f, 0.0f, -5.0f);
    D3DXVECTOR3 vecAt (0.0f, 0.0f, 10.0f);
    g_Camera.SetViewParams( &vecEye, &vecAt );

透视模型也没问题
    // Setup the camera's projection parameters
    float fAspectRatio = pBackBufferSurfaceDesc->Width / (FLOAT)pBackBufferSurfaceDesc->Height;
    g_Camera.SetProjParams( D3DX_PI/4, fAspectRatio, 0.1f, 1000.0f );
    g_Camera.SetWindow( pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height );



加入的代码如下:
LPDIRECT3DDEVICE9       g_pd3dDevice = NULL;
LPDIRECT3DTEXTURE9      g_pTexture   = NULL;

void D3D_init(IDirect3DDevice9* pd3dDevice);
void Draw_Background();

LPDIRECT3DVERTEXBUFFER9 g_pVB        = NULL; // Buffer to hold vertices
struct CUSTOMVERTEX
{
    D3DXVECTOR3 position; // The position
        D3DCOLOR    color;    // The color
        FLOAT       tu, tv;  
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)

void Draw_Background()
{
                g_pd3dDevice->SetTexture( 0, g_pTexture );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
        g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );


        g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
        g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );

                D3DXMATRIX mat;
                D3DXMatrixIdentity(&mat);
                D3DXMatrixTranslation( &mat, 0.0f,3.0f,0 );
                D3DXMATRIX oldmat;
                g_pd3dDevice->GetTransform(D3DTS_WORLD,&oldmat);
                D3DXMatrixMultiply(&oldmat,&oldmat,&mat);
                g_pd3dDevice->SetTransform( D3DTS_WORLD, &oldmat );
        g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);

       

}

void D3D_init(IDirect3DDevice9* pd3dDevice)
{
        g_pd3dDevice = pd3dDevice;
        if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, L"debug//luxoom_back.bmp", &g_pTexture ) ) )//data//luxoom_back
        {
                MessageBox(NULL, L"Could not find luxoom_back.bmp", L"D3D_init", MB_OK);               
        }

        if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
    {
       assert(false);
    }
         CUSTOMVERTEX* pVertices;
    g_pVB->Lock( 0, 0, (void**)&pVertices, 0 );
       
        float size = 3 ;

        CUSTOMVERTEX cvVertices[] =
    {
        {D3DXVECTOR3(-size, -size, 0), D3DCOLOR_XRGB(0, 0, 255),0,0,}, //Vertex 0 - Blue
        {D3DXVECTOR3(-size,size, 0), D3DCOLOR_XRGB(255, 0, 0),0,1,}, //Vertex 1 - Red
        {D3DXVECTOR3(size, -size, 0), D3DCOLOR_XRGB(255, 0, 0),1,1,}, //Vertex 2 - Red
        {D3DXVECTOR3(size, size, 0), D3DCOLOR_XRGB(0, 255, 0),1,0,}, //Vertex 3 - Green
        };

        memcpy(pVertices, cvVertices, sizeof(cvVertices));
    g_pVB->Unlock();



}

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2007-3-16 18:09:00 | 显示全部楼层

Re:dx一个简单问题

知道了,一定要禁用光照啊
g_pd3dDevice->SetRenderState(D3DRS_LIGHTING, 0);

45

主题

1163

帖子

1165

积分

金牌会员

Rank: 6Rank: 6

积分
1165
发表于 2007-3-16 19:18:00 | 显示全部楼层

Re:dx一个简单问题

不光要楚用光照,因为没有定义颜色的顶点画出来默认是白色的,所以要把背景色CLEAR成非白色才行,要不什么也看不到了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 17:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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