游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1115|回复: 0

vertex shader

[复制链接]

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2004-4-16 19:10:00 | 显示全部楼层 |阅读模式
请问vs的二层贴图是不是可以在一层的基础上再定义一个u1 v1然后直接mov就行了。是否还要在settexturestate上设置一下?

用cd3dmesh创建mesh:
顶点定义:
struct D3DVERTEX
{
    D3DXVECTOR3 p;
    D3DXVECTOR3 n;
   DWORD       color1;  
    FLOAT       tu, tv;

    static const DWORD FVF;
};
const DWORD D3DVERTEX::FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE |D3DFVF_TEX1;
decl定义:
   D3DVERTEXELEMENT9 declDolphin[] =
    {
        // First stream is first mesh
        { 0,  0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT,  D3DDECLUSAGE_POSITION, 0},
        { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT,  D3DDECLUSAGE_NORMAL,   0},
{ 0, 24, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR,  0 },
        { 0, 28, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT,  D3DDECLUSAGE_TEXCOORD, 0},
// Second stream is second mesh
      
    D3DDECL_END()
    };
vs代码:
"vs_1_1               \n"\
"dcl_position  v0     \n"\
"dcl_color0    v5         \n"\
"dcl_normal    v4             \n"\
"dcl_texcoord0 v8     \n"\
"m4x4 oPos, v0, c0    \n"\
"mov     oD0    ,v5          \n";

mesh本身为蓝色,无纹理。
显示的mesh有轮廓无颜色。
float color[4] = {1,0,0,0};                                 
g_pd3dDevice->SetVertexShaderConstantF( 4, (float*)&color, 1 );
mov     oD0    ,c4
为红色。
就好象v5没有取得材质色一样。
换有纹理的mesh。
mov oT0, v8
显示正常。
请问是怎么回事

   
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 07:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表