CdrTomalak
CdrTomalak

Reputation: 479

Texture appears grey when rendered

I'm currently working my way through "Beginning C# Programming", and have hit a problem in chapter 7 when drawing textures.

I have used the same code as on the demo CD, and although I had to change the path of the texture to be absolute, when rendered it is appearing grey.

I have debugged the program to write to file the loaded texture, and this is fine - no problems there. So something after that point is going wrong.

Here are some snippets of code:

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();
    ...
}

I can't figure out what is going wrong here. Obviously if I load up the texture in windows it displays fine - so there's something not right in the code examples given in the book. It doesn't actually work, and there must be something wrong with my environment presumably.

Upvotes: 4

Views: 627

Answers (1)

Faraday
Faraday

Reputation: 2954

You're using a REALLY old technology there... I'm guessing you're trying to make a game (as we all did when we started out!), try using XNA. My best guess is that it's your graphics driver. I know that sounds like a cop out, but seriously, I've seen this before and once I swapped out my old graphics card for a new one it worked! I'm not saying it's broken, or that it's impossible to get it to work. But my best two suggestions would be to:

1) Start using XNA and use the tutorials on http://www.xnadevelopment.com/tutorials.shtml 2) Replace your graphics card (if you want to carry on with what you are doing now).

Upvotes: 1

Related Questions