关于D3D,纹理坐标的自动生成

mmmcd 2011-03-28 04:19:11
请教,下面的语句是自动生成纹理坐标的
pd3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR);
pd3dDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,D3DTTFF_COUNT2);
如果用功能等价的shader实现,改怎么写?
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmmcd 2011-04-15
  • 打赏
  • 举报
回复
搞定结贴

简单来写可以这样:
相机空间中眼睛位置是原点,省略了

float4x4 InvWorldViewT : INVVIEWTRANSPOSE;
float4x4 WorldView : WORLDVIEW;

VS:
float3 vNormal = mul(In.Normal, (float3x3)InvWorldViewT);
float3 vPosition = mul(In.Pos, WorldView);
Out.Reflect = -normalize(reflect(-vPosition, vNormal));

Out.Reflect.xy就是纹理uv
higter 2011-03-29
  • 打赏
  • 举报
回复
自动生成纹理坐标只和你指定数据的顶点纹理坐标相对应,与shader无关,

shader只会在通道里读取uv,不管你是哪儿传进来的,当然,你可以在shader作相应的运算来生成新的uv坐标
peng_weida 2011-03-29
  • 打赏
  • 举报
回复
通过顶点和某一向量做运算,从而生成纹理坐标
具体怎么做运算,和你想实现的功能相关
可以参考OpenGL编程指南纹理坐标自动生成那一小节,原理差不多的。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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