我无法找到解决此问题的方法:
我正在使用VertexPositionTexture创建带纹理的矩形和DrawUserPrimitives来绘制一些基元。
矩形是:
tmpPoint.VerticesList[0] = new VertexPositionTexture(new Vector3(-size, size, 0), new Vector2(0, 0));
tmpPoint.VerticesList[1] = new VertexPositionTexture(new Vector3(size, size, 0), new Vector2(1f, 0));
tmpPoint.VerticesList[2] = new VertexPositionTexture(new Vector3(-size, -size, 0), new Vector2(0, 1f));
tmpPoint.VerticesList[3] = new VertexPositionTexture(new Vector3(size, -size, 0), new Vector2(1f, 1f));
设置效果:
Effect = new BasicEffect(game.GraphicsDevice) {
VertexColorEnabled = true,
TextureEnabled = true };
Effect.EnableDefaultLighting();
绘图方法:
public void DrawRectangle()
{
originalBlend = game.GraphicsDevice.BlendState;
game.GraphicsDevice.BlendState = BlendState.AlphaBlend;
Effect.World = PointScale * PointRotation * PointTranslation;
Effect.CurrentTechnique.Passes[0].Apply();
game.GraphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleStrip, VerticesList, 0, vertexBuffer.VertexCount / 2); 0, 0, 4, 0, 2);
game.GraphicsDevice.BlendState = originalBlend;
}
一切都很好,但带纹理的矩形没有颜色,只有alpha通道和黑色渐变。它看起来像这样:
但纹理图像是:
当我试图删除时:
Effect.EnableDefaultLighting();
Effect.LightingEnabled = true;
VertexColorEnabled = true;
颜色正在运作......
你可能会感到困惑,但它已经与Windows 7机器上的颜色一起正常工作。当我在TFS中签入所有更改,并在Windows 10机器上获得最新版本时,我遇到了这个问题。我还没有Windows 7机器。但我检查了另一台装有Windows 7可执行文件的机器,但没有成功......
在没有问题的主机上:
C:\ Program Files(x86)\ MonoGame \ v3.0 \ Assemblies \ DesktopGL路径中的DLL为3.5.1.1679
C:\ Program Files(x86)\ MSBuild \ MonoGame \ v3.0 \ Tools中的DLL是3.5.1.1679
Debug \ path中的DLL是3.5.1.1679
加载的程序集(仅列出差异):
mscorlib.dll 4.6.1076
System.Core.dll 4.6.1055.0
System.dll 4.6.1075.0
System.Drawing.dll 4.6.1068.2
System.Windows.Forms.dll 4.6.1055.0
在另一台Windows 10(任何版本的Windows 7+)计算机上出现问题(没有区别):
C:\ Program Files(x86)\ MonoGame \ v3.0 \ Assemblies \ DesktopGL路径中的DLL为3.5.1.1679
C:\ Program Files(x86)\ MSBuild \ MonoGame \ v3.0 \ Tools中的DLL是3.5.1.1679
Debug \ path中的DLL是3.5.1.1679
加载的程序集(仅列出差异):
mscorlib.dll 4.6.1080
System.Core.dll 4.6.1038.0
System.dll 4.6.1081.0
System.Drawing.dll 4.6.1078.0
System.Windows.Forms.dll 4.6.1038.0
已打开的问题:https://github.com/mono/MonoGame/issues/5029
更新:看来它只适用于英特尔高清显卡,但在Radeon和NVidia上运行良好......
答案 0 :(得分:0)
不是说最终的答案,但要检查的一件非常重要的事情是你拥有英特尔图形系统的最新驱动程序版本。