D3DFVF_XYZRHW directx fvf格式
顶点结构D3DFVF_XYZRHW directx fvf格式,directx,Directx,顶点结构 struct Vertex { float x, y, z; float rhw; D3DCOLOR diffuse; float u, v; Vertex(){} Vertex(float px, float py, D3DCOLOR pdiffuse, float pu, float pv) { x = px; y = py; z = 0.0f; rhw = 1.0f; diff
struct Vertex
{
float x, y, z;
float rhw;
D3DCOLOR diffuse;
float u, v;
Vertex(){}
Vertex(float px, float py, D3DCOLOR pdiffuse, float pu, float pv)
{
x = px; y = py; z = 0.0f;
rhw = 1.0f;
diffuse = pdiffuse;
u = pu; v = pv;
}
static const DWORD FVF;
};
const DWORD Vertex::FVF = D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1;
顶点数据
lpVbData[0] = Vertex(0.0f, 0.0f, 0xFF000000, 0.0f, 0.0f);
lpVbData[1] = Vertex(20.0f, 0.0f, 0xFF000000, 1.0f, 0.0f);
lpVbData[2] = Vertex(20.0f, 100.0f, 0xFF000000, 1.0f, 1.0f);
lpVbData[3] = Vertex(0.0f, 100.0f, 0xFF000000, 0.0f, 1.0f);
我的问题是
rect的大小应该是20x100宽x高像素,但在显示器上是20x97宽x高像素。为什么?谢谢 问题已经解决了。
backbuffer大小与窗口大小不匹配,请忽略窗口的边框,以便在窗口中缩放backbuffer曲面,并且显示的像素大小不正确。这取决于投影矩阵和outputwindow。你是如何创建矩阵的?directx曲面的大小是多少?你使用vertexshader还是固定函数管道?你是如何在显示中测量你的rect的?我使用截图软件,并在photoshop中测量截图jpg文件。另一种方法是,使用win32 api,将鼠标在客户端区域的位置设置为x:20 y:100像素位置。我使用固定的函数管道。fvf是D3DFVF_XYZRHW,因此它不会通过管道中的矩阵和顶点着色器进行变换。可能与纹理/像素映射有关: