c# – 渲染时纹理显示为灰色
发布时间:2020-12-15 21:34:43 所属栏目:百科 来源:网络整理
导读:我目前正在通过“开始C#编程”工作,并在绘制纹理时在第7章遇到了问题. 我使用了与演示CD上相同的代码,虽然我必须将纹理的路径更改为绝对路径,但在渲染时它会显示为灰色. 我已经调试了程序来写入加载纹理的文件,这很好 – 没有问题.所以在那之后发生了一些错
我目前正在通过“开始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:ProgrammingSharpDevelop_ProjectsAdvancedFrameworkv2texture.jpg",Direct3D.Format.Unknown,Direct3D.Pool.Managed,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(); ... } 我无法弄清楚这里出了什么问题.显然,如果我在Windows中加载纹理它显示正常 – 所以在书中给出的代码示例中有一些不正确的东西.它实际上并不起作用,并且我的环境肯定会出现问题. 解决方法
你在那里使用了一种非常古老的技术……我猜你正在尝试制作游戏(正如我们在开始时所做的那样!),尝试使用XNA.我最好的猜测是它是你的图形驱动程序.我知道这听起来像个警察,但是说真的,我以前见过这个,一旦我换掉了我的旧显卡就换了一个新的显卡!我并不是说它已经坏了,或者它不可能让它发挥作用.但我最好的两个建议是:
1)开始使用XNA并使用http://www.xnadevelopment.com/tutorials.shtml上的教程2)更换显卡(如果你想继续你正在做的事情). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何查询某些行的sqlite,即将其划分为页面(perl DBI)
- c# – 为什么[Enum] .Parse有一个ignoreCase参数?
- objective-c – 使用UIPanGestureRecognizer围绕某个点旋转
- Xml中SelectSingleNode方法中的xpath用法
- ruby – 如何“uniq”一个数组,保留每个元素的最后一个副本
- JSONObject #getString(String string) 空值(null)问题
- C 语言指针概念的详解
- 用FLEX做文件的在线浏览
- c# – 哪个更好用:Convert.ToX或X.Parse(…)?
- MediaPlayer/MediaPlayer 视频播放