另一個關閉牆問題的時間。我正在爲我的小型3D引擎項目編寫MD2加載程序。在我的舊語言(C)中,我可以定義一個結構,然後從打開的文件中直接讀取()到結構中。我一定要挺住從MD2文件頭信息的結構如下:將字節讀入C#中的一個結構#
[StructLayout(LayoutKind.Sequential)]
public struct MD2_Header
{
public int FourCC;
public int Version;
public int TextureWidth;
public int TextureHeight;
public int FrameSizeInBytes;
public int NbrTextures;
public int NbrVertices;
public int NbrTextureCoords;
public int NbrTriangles;
public int NbrOpenGLCmds;
public int NbrFrames;
public int TextureOffset;
public int TexCoordOffset;
public int TriangleOffset;
public int FrameOffset;
public int OpenGLCmdOffset;
public int EndOffset;
}
在我的讀者的代碼,我想這樣做:
// Suck the MD2 header into a structure, it is 68 bytes long.
Classic.Util.MD2_Header md2hdr = new Classic.Util.MD2_Header();
md2hdr = reader.ReadBytes(sizeof(Classic.Util.MD2_Header));
我知道這是不正確的,因爲它有點奇怪地打破了類型安全性,但你知道我想要完成什麼。我可以通過對reader.ReadInt32()的單獨調用來做到這一點,但我很好奇,是否有任何方法讓我以我想使用普通庫調用的方式工作。
我已經看了一下Marshal.Copy()方法,但它似乎用於託管和非託管內存之間,這不是我在這裏做的。
有什麼建議嗎?
看樣子有人打你吧:http://gpwiki.org/index.php/C_sharp:MD2_loader_in_CSharp – Jess 2010-07-14 18:29:02