纹理在渲染时显示为灰色

本文关键字:显示 灰色 纹理 | 更新日期: 2023-09-27 18:34:52

我目前正在研究"开始C#编程",并且在绘制纹理时遇到了第7章的问题。

我使用了与演示 CD 上相同的代码,尽管我不得不将纹理的路径更改为绝对路径,但在渲染时它显示为灰色。

我已经调试了程序以写入加载的纹理文件,这很好 - 那里没有问题。所以在那之后的事情会出错。

下面是一些代码片段:

public void InitializeGraphics()
{
    // set up the parameters
    Direct3D.PresentParameters p = new Direct3D.PresentParameters();
    p.SwapEffect = Direct3D.SwapEffect.Discard;
    ...
    graphics = new Direct3D.Device( 0, Direct3D.DeviceType.Hardware, this,
    Direct3D.CreateFlags.SoftwareVertexProcessing, p );
    ...
    // set up various drawing options
    graphics.RenderState.CullMode = Direct3D.Cull.None;
    graphics.RenderState.AlphaBlendEnable = true;
    graphics.RenderState.AlphaBlendOperation = Direct3D.BlendOperation.Add;
    graphics.RenderState.DestinationBlend = Direct3D.Blend.InvSourceAlpha;
    graphics.RenderState.SourceBlend = Direct3D.Blend.SourceAlpha;
    ...
}
public void InitializeGeometry()
{
    ...
    texture = Direct3D.TextureLoader.FromFile( 
            graphics, "E:''Programming''SharpDevelop_Projects''AdvancedFrameworkv2''texture.jpg", 0, 0, 0, 0, Direct3D.Format.Unknown,
            Direct3D.Pool.Managed, Direct3D.Filter.Linear, 
            Direct3D.Filter.Linear, 0 );
...
}
protected virtual void Render()
{
    graphics.Clear( Direct3D.ClearFlags.Target, Color.White , 1.0f, 0 );
    graphics.BeginScene();
    // set the texture
    graphics.SetTexture( 0, texture );
    // set the vertex format
    graphics.VertexFormat = Direct3D.CustomVertex.TransformedTextured.Format;
    // draw the triangles
    graphics.DrawUserPrimitives( Direct3D.PrimitiveType.TriangleStrip, 2, vertexes );
    graphics.EndScene();
    graphics.Present();
    ...
}

我不知道这里出了什么问题。显然,如果我在窗口中加载纹理,它显示得很好 - 所以书中给出的代码示例中有一些不对的地方。它实际上不起作用,大概我的环境有问题。

纹理在渲染时显示为灰色

你在那里使用了一种非常古老的技术......我猜你正在尝试制作一个游戏(就像我们刚开始做的那样!(,尝试使用XNA。 我最好的猜测是它是您的图形驱动程序。 我知道这听起来像是一个警察,但说真的,我以前见过这个,一旦我把我的旧显卡换成新的显卡,它就可以工作了! 我并不是说它坏了,或者不可能让它工作。 但我最好的两个建议是:

1( 开始使用 XNA 并使用 http://www.xnadevelopment.com/tutorials.shtml 上的教程2(更换您的显卡(如果您想继续您现在正在做的事情(。