第一步为全局变量
第二步与第三步位于函数Objects_Init()中,Objects_Init()是渲染资源初始化函数,在此函数中进行要被渲染的物体的资源的初始化 Objects_Init()调用位置:Direct3D_Init()末尾,即Direct3D初始化完成后。 Direct3D_Init():Direct3D初始化函数,进行Direct3D的初始化。 Direct3D_Init()调用位置:Windows窗口创建后,即函数CreateWindow()后面
最后一步位于函数Direct3D_Render()中,Direct3D_Render()是使用Direct3D进行渲染的函数,位于该函数的“【Direct3D渲染五步曲之三】:正式绘制,利用顶点缓存绘制图形 ”中 Direct3D_Render()调用位置: 窗口过程函数WndPRoc()中,接收到消息WM_PAINT后
设置纹理的寻址方式:
// 根据键盘按键的按下,设置为纹理寻址方式 if (g_pDInput->IsKeyDown(DIK_1)) //键盘上1键被按下 { // 设置重复纹理寻址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP); } if (g_pDInput->IsKeyDown(DIK_2)) //键盘上2键被按下 { // 设置镜像纹理寻址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR); } if (g_pDInput->IsKeyDown(DIK_3)) //键盘上3键被按下 { // 设置夹取纹理寻址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); } if (g_pDInput->IsKeyDown(DIK_4)) //键盘上4键被按下 { // 设置边框纹理寻址模式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); g_pd3dDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); }位于函数Direct3D_Update()中 Direct3D_Update(): 不是即时渲染代码但是需要即时调用的,如按键后的坐标的更改,都放在这里。 Direct3D_Update()调用位置: WinMain中的消息循环过程:
//【5】消息循环过程 MSG msg = { 0 }; //初始化msg while( msg.message != WM_QUIT ) //使用while循环 { if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) ) //查看应用程序消息队列,有消息时将队列中的消息派发出去。 { TranslateMessage( &msg ); //将虚拟键消息转换为字符消息 DispatchMessage( &msg ); //该函数分发一个消息给窗口程序。 } else { Direct3D_Update(hwnd); //调用更新函数,进行画面的更新 Direct3D_Render(hwnd); //调用渲染函数,进行画面的渲染 } }新闻热点
疑难解答