C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 设置DirectX9表面像素大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在D3DSURFACE9中设置单个像素,但它们会遍布整个地方.
我想我以前做过这件事,但这次似乎无法做到.

3DLOCKED_RECT lrt;
if(D3D_OK == lpThis->sfRenderingCanvas->LockRect(&lrt,NULL,0))
{
   UINT pitch = lrt.Pitch;
   void *data;
   data = lrt.pBits;
   UINT Y = (Uint)xmsg.Y;
   UINT X = (Uint)xmsg.X;
   for(int z=0;xmsg.iNum;z++)
   {
      if( xmsg.iDataBlock[z]>0 )
         ((DWORD*)data)[X+Y*pitch+z] = 0xFFFFFF00;
      else
         ((DWORD*)data)[X+Y*pitch+z] = 0xFF000000;
      }
   }
}

Y介于0和创建曲面时使用的高度之间
X介于0和表面间距之间

谁能说出我做错了什么?
而且,它似乎比我的窗户大约两倍.
(^如果我尝试绘制超过1/4的行,则覆盖其中的1/2.)

解决方法

D3DLOCKED_RECT中返回的音高值是每行开头之间的字节数,而不是DWORD的数量.您正在使用DWORD指针索引到缓冲区,因此您实际上使用的间距太大了四倍.

尝试这样的事……

DWORD * row = (DWORD *)((char *)lrt.pBits + pitch * Y);
for(int z=0;xmsg.iNum;z++)
{
   if( xmsg.iDataBlock[z]>0 )
      row[X+z] = 0xFFFFFF00;
   else
      row[X+z] = 0xFF000000;
   }
}

大佬总结

以上是大佬教程为你收集整理的c – 设置DirectX9表面像素全部内容,希望文章能够帮你解决c – 设置DirectX9表面像素所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。