为什么贴图放大不能满窗口?

lyzcom 2003-10-17 05:36:18
以下是部分关键代码:

struct Vertex
{
float x, y, z, rhw;
unsigned long color;
float u, v;
} ;
#define FVF (D3DFVF_DIFFUSE | D3DFVF_XYZRHW | D3DFVF_TEX1)

然后,设置正交平等投影:
D3DXMatrixOrthoLH(&mat, 800, 600, 0.0, 1.0);

然后,用Vertex定义四个顶点:
Vertex vertices[4] = {
{ 0, 0, 1, 0xFFFFFFFF, 0, 0 },
{ 800, 0, 1, 0xFFFFFFFF, 1, 0 },
{ 800, 600, 1, 0xFFFFFFFF, 1, 1 },
{ 0, 600, 1, 0xFFFFFFFF, 0, 1 } };

接下来是大循环的Render:

d3ddevice->SetTexture(0, texture);
d3ddevice->SetTextureStageState(....);
d3ddevice->DrawPrimitiveUp(.....);


texture是一张256*256的纹理图片,载入在里面的图像是A8R8G8B8的256*256位图,是填满了整张纹理的。结果,画出来的纹理却没有占满整个窗口。

这很奇怪,因为顶点在设置的时候,分别是应该铺在窗口的四个角上,应该会放大并填满整个窗口的。但事实上其右边和下边总是差100多个像素的宽度没有被填上。

请问这是为什么?
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyzcom 2003-10-17
  • 打赏
  • 举报
回复
噢,多谢各位的参与,问题找到了。原来是因为我怕显卡不支持任何尺寸的贴图,因此对纹理大小做了限制。于是,在计算uv坐标的时候出了问题。老是不能顶到头。
tomb4 2003-10-17
  • 打赏
  • 举报
回复
帮你UP
MAPLE到H3D取了啊,GXGX:)
lyzcom 2003-10-17
  • 打赏
  • 举报
回复
不是,Viewport我是做全局设置了的。就是在初始化完成之后设置的,但是没有在每循环中设置,而且,循环中也没有改变Viewport。

所以,我实在是想不通哪里出现了问题。还有没有能给些意见的。
maplexp 2003-10-17
  • 打赏
  • 举报
回复
是不是Viewport设置的问题
ttmmdd 2003-10-17
  • 打赏
  • 举报
回复
差100多个像素?
如果是差10多个像素的话可能是WINDOW边界的问题.
你代码似乎没问题.

8,301

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧