如题!急!!
解决方案 »
- x86平台,vc 有没有类似barrier这个阻止cpu换序的指令或汇编代码???
- MFC中调用bat的问题
- 谁能说下CFormView CTreeView CListView CEditView CHtmlView 这些都有什么区别
- 在VC++6.0中怎么样编译一个纯C++程序
- 如何使用MSDN(2005)查找API使用例子
- 关于DirectShow的Transfer过滤器的问题
- 发个招人贴,接贴都有分
- 偶是新手,问个最基本的内容,大家不要笑我哦
- 在VC中使用ADO,怎样使用Execute语句?
- 求助 ---VC界面对话框卡
- 关于GDI+内存贴图的问题!!!!!!!!!!!!!!!!!!!
- waveInAddBuffer不能返回
我贴代码啦 帮忙看看是什么原因?
void CControl3DCtrl::InitD3D()//初始化
{
m_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3pp;
ZeroMemory(&d3pp,sizeof(D3DPRESENT_PARAMETERS));
d3pp.Windowed = TRUE;
d3pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3pp.BackBufferFormat = D3DFMT_UNKNOWN;
m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,m_hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3pp,&m_pDevice); m_pDevice->SetRenderState(D3DRS_LIGHTING,FALSE);
m_pDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
}
void CControl3DCtrl::InitGeometry()//建模
{
float angle = m_nRotateY/180*PI;
D3DXMATRIX matworld;
D3DXMatrixRotationY(&matworld,angle);
m_pDevice->SetTransform(D3DTS_FORCE_DWORD,&matworld); D3DXMATRIX matView; D3DXVECTOR3 m_Eye(0.0f,5.0f,3.0f);
D3DXVECTOR3 m_At(0.0f,0.0f,0.0f);
D3DXVECTOR3 m_Up(0.0f,1.0f,0.0f); D3DXMatrixLookAtLH(&matView,&m_Eye,&m_At,&m_Up);
m_pDevice->SetTransform(D3DTS_VIEW,&matView); D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH(&matProj,PI/4,1.0f,1.0f,1000.0f);
m_pDevice->SetTransform(D3DTS_PROJECTION,&matProj);}
void CControl3DCtrl::SetupMatrices()//设置变换矩阵
{
CUSTOMVERTEX vertices[] =
{{ -1.0f, -1.0f, 0.0f, D3DCOLOR_XRGB(255,0,0) }, //点 A,红色
{ 0.0f, 1.0f, 0.0f, D3DCOLOR_XRGB(0,255,0) }, //点 B,绿色
{ 1.0f, -1.0f, 0.0f, D3DCOLOR_XRGB(0,255,255) }};//点 C,浅蓝 m_pDevice->CreateVertexBuffer(sizeof(CUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&m_pVB,NULL);
void *pVertice;
m_pVB->Lock(0,sizeof(vertices),(void**)&pVertice,D3DLOCK_DISCARD);
memcpy(pVertice,vertices,sizeof(vertices));
m_pVB->Unlock();}
void CControl3DCtrl::Render()//渲染函数
{
m_pDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,255),1.0f,0);
m_pDevice->BeginScene(); SetupMatrices(); m_pDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
m_pDevice->SetStreamSource(0,m_pVB,0,sizeof(CUSTOMVERTEX));
m_pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,0,1); m_pDevice->EndScene();
m_pDevice->Present(NULL,NULL,NULL,NULL);
}//消息映射
int CControl3DCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1; InitD3D();
InitGeometry();
m_nRotateY = 0;
SetTimer(1,40,NULL); return 0;
}void CControl3DCtrl::OnTimer(UINT_PTR nIDEvent)
{
m_nRotateY += 2;
Render(); COleControl::OnTimer(nIDEvent);
}到底应该在哪里改??