gpt4 book ai didi

c# - 在 MonoGame 中绘制矩形

转载 作者:行者123 更新时间:2023-11-30 13:14:53 27 4
gpt4 key购买 nike

如何在 MonoGame 中绘制矩形和圆形等形状,而不必将预绘制的形状保存在 Content 文件夹中?

DrawRectangle() 和 DrawEllipse() 适用于 Windows 窗体,不适用于我正在使用的 OpenGL。

最佳答案

使用 3D 图元和 2D 投影

这是一个带有解释的简单示例

我定义了一个 10x10 的矩形并设置了世界矩阵,让它看起来像一个 2D 投影:

注意:BasicEffect 是绘制原语的对象

protected override void LoadContent()
{
_vertexPositionColors = new[]
{
new VertexPositionColor(new Vector3(0, 0, 1), Color.White),
new VertexPositionColor(new Vector3(10, 0, 1), Color.White),
new VertexPositionColor(new Vector3(10, 10, 1), Color.White),
new VertexPositionColor(new Vector3(0, 10, 1), Color.White)
};
_basicEffect = new BasicEffect(GraphicsDevice);
_basicEffect.World = Matrix.CreateOrthographicOffCenter(
0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height, 0, 0, 1);
}

然后我画了整个东西:D

protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

EffectTechnique effectTechnique = _basicEffect.Techniques[0];
EffectPassCollection effectPassCollection = effectTechnique.Passes;
foreach (EffectPass pass in effectPassCollection)
{
pass.Apply();
GraphicsDevice.DrawUserPrimitives(PrimitiveType.LineStrip, _vertexPositionColors, 0, 4);
}
base.Draw(gameTime);
}

你有你的矩形!

enter image description here

这只是冰山一角,

或者如上面的其中一篇文章所述,您可以使用着色器代替它...

我需要画一个 Superellipse不久前,结束了绘制这个着色器的草图:

Drawing a SuperEllipse in HLSL

正如您在帖子中看到的,Superellipse 不仅可以绘制椭圆,还可以绘制其他形状甚至圆形(我没有测试过),所以您可能会对它感兴趣。

最终你会想要一些类/方法来隐藏所有这些细节,所以你只需要调用像 DrawCircle() 这样的东西。

提示:通过发帖@https://gamedev.stackexchange.com/您可能会得到更多关于 Monogame 相关问题的答案

:D

关于c# - 在 MonoGame 中绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com