Monogame Skybox问题

时间:2018-07-28 12:23:51

标签: c# 3d monogame

所以我对3D图形还很陌生,我遵循的是RBWhittaker的教程之一,其中涉及为3D XNA游戏设置天空盒。我认为这有点过时了。在我的Skybox的.fx文件中,在单机游戏管道中进行构建时确实出现了错误,这是第38行的“向量类型的隐式截断” output.TextureCoordinate = VertexPosition - CameraPosition;现在,我认为真正的问题在于它之前崩溃的位置,这是在主游戏Draw方法期间更改了“ cullmode”。

原始代码如下:

spriteBatch.GraphicsDevice.RasterizeState.CullMode = CullMode.CullClockWiseFace;
skyBox.Draw(view, projection, cameraPosition);
spriteBatch.GraphicsDevice.RasterizeState.CullMode = CullMode.CullCounterClockwiseFace;

但这对我不起作用,它一直给我一个错误,所以我在互联网上发现如果要创建一个CullMode的新实例,然后将该设置更改为新实例,请绘制天空盒,然后改回来,它可能会起作用。所以我做到了,并且运行时没有出现任何崩溃,但是问题是,现在我只得到了黑屏,没有纹理或其他任何东西-它随着我改变了天窗的大小而旋转,原始的“海军”颜色出现了。那么这是一个“ BaseCamera”问题,我要抽出多远? Near是0.1f,far是300。

或者可能是我当前的更改CullMode的代码:

        RasterizerState r = new RasterizerState();
        r.CullMode = CullMode.CullClockwiseFace;
        spriteBatch.GraphicsDevice.RasterizerState = r;
        skybox.Draw(view, projection, cameraPosition);
        RasterizerState r1 = new RasterizerState();
        r1.CullMode = CullMode.CullCounterClockwiseFace;
        spriteBatch.GraphicsDevice.RasterizerState = r1;

0 个答案:

没有答案