⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hook1.txt

📁 国外游戏开发者杂志1997年第七期配套代码
💻 TXT
字号:
LISTING 1. Triangle rendering using an execute buffer.
   // this code lets us lock a previously allocated execute buffer
   // so that we can fill it in with the relevant data
   memset( &d3dExeBufDesc, 0, sizeof( d3dExeBufDesc ) );
   d3dExeBufDesc.dwSize = sizeof( d3dExeBufDesc );
   lpd3dExecuteBuffer->Lock( &d3dExeBufDesc );
   memset( d3dExeBufDesc.lpData, 0, EXECUTEBUFFERSIZE );

   // we fill in our vertices
   lpVertex = (LPD3DTLVERTEX)d3dExeBufDesc.lpData;
   memcpy( lpVertex[0], &appvertex[0], sizeof( D3DTLVERTEX ) );
   memcpy( lpVertex[1], &appvertex[1], sizeof( D3DTLVERTEX ) );
   memcpy( lpVertex[2], &appvertex[2], sizeof( D3DTLVERTEX ) );
   lpVertex += 3;

   // this is the command to process the vertices
   lpInstruction = ( LPD3DINSTRUCTION ) lpVertex;
   lpInstruction->bOpcode = D3DOP_PROCESSVERTICES;
   lpInstruction->bSize   = sizeof( D3DPROCESSVERTICES );
   lpInstruction->wCount  = 1U;
   lpInstruction++;
   lpProcessVertices = ( LPD3DPROCESSVERTICES ) lpInstruction;
   lpProcessVertices->dwFlags       = D3DPROCESSVERTICES_COPY;
   lpProcessVertices->wStart        = 0U;
   lpProcessVertices->wDest         = 0U;
   lpProcessVertices->dwCount       = 3; // number of vertices
   lpProcessVertices->dwReserved    = 0;
   lpProcessVertices++;

   // this is the command to draw a triangle
   lpInstruction = (LPD3DINSTRUCTION) lpProcessVertices;
   lpInstruction->bOpcode = D3DOP_TRIANGLE;
   lpInstruction->bSize   = sizeof(D3DTRIANGLE);
   lpInstruction->wCount  = 1U;
   lpInstruction++;
   lpTriangle = (LPD3DTRIANGLE)lpInstruction;
   lpTriangle->wV1    = 0U; 
   lpTriangle->wV2    = 1U;
   lpTriangle->wV3    = 2U;
   lpTriangle->wFlags = D3DTRIFLAG_EDGEENABLETRIANGLE;
   lpTriangle++;

   // close the execute buffer
   lpInstruction = (LPD3DINSTRUCTION)lpTriangle;
   lpInstruction->bOpcode = D3DOP_EXIT;
   lpInstruction->bSize   = 0;
   lpInstruction->wCount  = 0U;

   // unlock the execute buffer
   lpd3dExecuteBuffer->Unlock( lpd3dExecuteBuffer );

   // execute it
   lpD3DDevice->Execute( lpd3dExecuteBuffer, lpViewport, D3DEXECUTE_UNCLIPPED );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -