XNA入门(四)纹理

 

 (1)纹理重复性控制

 void vertexBuffer1_Created(object sender, EventArgs e)
        {
            CustomVertex.PositionTextured[] verts =
            (CustomVertex.PositionTextured[])vertexBuffer1.Lock(0, 0);  //墙壁
            verts[0].Position = new Vector3(-2.0f, -2.0f, 2.0f);    //顶点0位置
            verts[0].Tu = N;       //顶点0纹理坐标Tu为N代表X轴方向重复贴图N次
            verts[0].Tv = M; //顶点0纹理坐标Tv为M代表X轴方向重复贴图M次
             vertexBuffer1.Unlock();
        }

(2)纹理光照控制。

 public void Render()  //渲染方法,本方法没有任何渲染代码,可认为是渲染方法的框架
        {
            if (device == null)   //如果未建立设备对象,退出
                return;
            if (pause)
                return;
            device.Clear(ClearFlags.Target | ClearFlags.ZBuffer,Color.LightCoral, 1.0f, 0);
            device.BeginScene();  //开始渲染
            SetupLights();    //设置灯光
            SetupMatrices();
            device.SetTexture(0, texture);
            device.TextureState[0].ColorOperation = TextureOperation.Modulate;//设置混合模式
            device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;//第一种颜色
            device.TextureState[0].ColorArgument2 = TextureArgument.Diffuse;//第二种颜色,这里用散色光

            //device.TextureState[0].AlphaOperation = TextureOperation.Disable;
            device.SetStreamSource(0, vertexBuffer, 0);
            device.VertexFormat = CustomVertex.PositionNormalTextured.Format;
            device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1);
            device.EndScene();   //渲染结束
            device.Present(); //更新显示区域,把后备缓存的D图形送到图形卡的显存中显示

        }

(3)滤波

   public void OnResetDevice(object sender, EventArgs e)
        {
            Device dev = (Device)sender;
            dev.RenderState.CullMode = Cull.None;  //取消背面剔除
            dev.RenderState.Lighting = false;   //取消灯光
            SetupMatrices();  //在程序运行期间,Device的3个变换不改变,因此放在此处
            device.SamplerState[0].MagFilter = TextureFilter.Linear; //使用线性滤波器

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值