小编use*_*132的帖子

设置 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;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

有人能告诉我我做错了什么吗?而且,它的高度似乎是我的窗户的两倍。(^如果我尝试绘制超过 1/4 的行,它会覆盖其中的 1/2。)

c++ directx pixel surface set

5
推荐指数
1
解决办法
1160
查看次数

非法使用此类型作为表达式(错误)C++

我添加到VC++ 2010项目中的最新文件突然给出了有关数据类型的错误.在做了一些搜索之后,这个错误似乎在C代码中很常见,但我使用的是C++(是的,我的文件扩展名是正确的).我的BUFFER类在我的所有其他文件中仍能正常工作,如果我对它们进行注释,它也会抛出与Windows UINT类型相同的错误.

顺便说一句,这是来自"DRONEPOOL.h"

我的代码:

//#include <winsock2.h>
//#include <ws2tcpip.h>
#include <Windows.h>
#include "BUFFER.h"

#ifndef __DRONEPOOL_H__
#define __DRONEPOOL_H__

#define DRONE_POOL_SIZE 100

#define DRONESTATE_EMPTY   0
#define DRONESTATE_IDLE    1
#define DRONESTATE_WORKING 2
#define DRONESTATE_PICKUP  3   // work result ready for pickup

#define LPCLIENTCONNECTION CLIENTCONNECTION*
struct CLIENTCONNECTION
{
//  SOCKET skSocket;
    WORD   wState;
};


#define LPDRONEPOOL DRONEPOOL*
class DRONEPOOL
{
pritave:
    BUFFER bfTaskBuffer;
    BUFFER bfResultBuffer;
    CLIENTCONNECTION ccPool[DRONE_POOL_SIZE];
    UINT iPoolHead;
    UINT iPoolTail;
    HANDLE hPoolMutex;
    HANDLE hManagerThread;
    static DWORD WINAPI Manager(__in LPVOID);
public:
    DRONEPOOL();
    ~DRONEPOOL();
    BOOL …
Run Code Online (Sandbox Code Playgroud)

c++ types

2
推荐指数
1
解决办法
4856
查看次数

标签 统计

c++ ×2

directx ×1

pixel ×1

set ×1

surface ×1

types ×1