Бывалый

Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007
Репутация: 1 Всего: 3
|
Вот тебе рабочий код. В твоем я пытался разобраться, но так и не нашел причину. Код | #define D3DFVF_CUSTOMVERTEX ( D3DFVF_XYZ | D3DFVF_DIFFUSE )
struct CUSTOMVERTEX { float x, y, z; DWORD color; };
bool AppInit () { p_d3d = Direct3DCreate9 (D3D_SDK_VERSION); D3DDISPLAYMODE d3ddm; p_d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm); D3DPRESENT_PARAMETERS d3dpp; ZeroMemory (&d3dpp, sizeof(d3dpp));
d3dpp.BackBufferWidth = 1024; d3dpp.BackBufferHeight = 768; d3dpp.BackBufferCount = 3; d3dpp.FullScreen_RefreshRateInHz = d3ddm.RefreshRate; d3dpp.Windowed = false; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.EnableAutoDepthStencil = true; d3dpp.AutoDepthStencilFormat = D3DFMT_D24X8;
p_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device);
p_VertexBuffer = NULL;
CUSTOMVERTEX g_Vertices[] = { { -100.0f, -100.0f, 0.0f, D3DCOLOR_XRGB (128,0,0),}, { -100.0f,100.0f, 0.0f, D3DCOLOR_XRGB (128,9,0),}, { 100.0f, 100.0f, 0.0f, D3DCOLOR_XRGB (128,0,0),},
{ -100.0f, -100.0f, 0.0f, D3DCOLOR_XRGB (0,0,128),}, { 100.0f,-100.0f, 0.0f, D3DCOLOR_XRGB (0,0,128),}, { 100.0f, 100.0f, 0.0f, D3DCOLOR_XRGB (0,0,128),}, };
p_d3d_Device->CreateVertexBuffer (sizeof(g_Vertices), D3DUSAGE_WRITEONLY, D3DFVF_XYZ | D3DFVF_NORMAL, D3DPOOL_MANAGED, &p_VertexBuffer, NULL );
VOID* pVertices; p_VertexBuffer->Lock (0, sizeof(g_Vertices), (void**)&pVertices, 0); memcpy (pVertices, g_Vertices, sizeof(g_Vertices)); p_VertexBuffer->Unlock();
return true; };
void RenderScene (void) { D3DXMATRIX matWorld; // мировая матрица D3DXMATRIX matView; // матрица вида D3DXMATRIX matProj; // матрица проецирования
D3DXMatrixIdentity(&matWorld); p_d3d_Device->SetTransform (D3DTS_WORLD, &matWorld);
D3DXMatrixLookAtLH (&matView, &D3DXVECTOR3 (0.0f, 0.0f, -500.0f), &D3DXVECTOR3 (0.0f, 0.0f, 0.0f), &D3DXVECTOR3 (0.0f, 1.0f, 0.0f)); p_d3d_Device->SetTransform (D3DTS_VIEW, &matView); D3DXMatrixPerspectiveFovLH (&matProj, D3DX_PI/4, 1.0f, 1.0f, 10000.0f); p_d3d_Device->SetTransform (D3DTS_PROJECTION, &matProj);
p_d3d_Device->SetRenderState (D3DRS_CULLMODE, D3DCULL_NONE); p_d3d_Device->SetRenderState( D3DRS_LIGHTING, FALSE ); p_d3d_Device->SetRenderState (D3DRS_ZENABLE, D3DZB_TRUE);
p_d3d_Device->Clear (0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB (0, 0, 0), 1.0f, 0);
p_d3d_Device->BeginScene (); p_d3d_Device->SetFVF (D3DFVF_CUSTOMVERTEX); p_d3d_Device->SetStreamSource (0, p_VertexBuffer,0, sizeof(CUSTOMVERTEX)); p_d3d_Device->DrawPrimitive (D3DPT_TRIANGLELIST, 0, 3); p_d3d_Device->EndScene (); p_d3d_Device->Present (NULL, NULL, NULL, NULL); };
|
И зачем тебе: Код | LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { switch(iMsg){ case WM_PAINT: RenderingDirect3D();//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
если ты рендеришь сцену здесь: Код | if(PeekMessage(&msg, NULL, 0, 0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); }else{ RenderingDirect3D();//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! } }
|
Это сообщение отредактировал(а) kurlyak - 19.11.2009, 12:45
|